Class GlobalTxTable

  • All Implemented Interfaces:
    java.lang.Runnable, Lifecycle

    public class GlobalTxTable
    extends java.lang.Object
    implements java.lang.Runnable, Lifecycle
    It is a transaction log that registers all the transaction decisions before changing the cache.

    The transaction state is stored in TxState, and that is stored in a replicated cache. The TxState must be updated before performing any action in the transaction (prepare, commit, etc.).

    In addition, since we don't have a client crash notification, it performs a reaper work, periodically, that cleanups idle transactions. The transaction is considered idle based on the timeout sent by the client. If no decision is made, it rollbacks the transaction. If the transaction is completed (committed or rolled-back), it is removed from the cache. If the transaction is decided (i.e. marked for commit or rollback), it completes the transaction.

    Note that, recoverable transactions (transactions originated from FULL_XA support caches) aren't touched by the reaper. The recovery process is responsible to handle them.

    Pedro Ruivo
    • Method Detail

      • start

        public void start()
        Description copied from interface: Lifecycle
        Invoked on component start
        Specified by:
        start in interface Lifecycle
      • stop

        public void stop()
        Description copied from interface: Lifecycle
        Invoked on component stop
        Specified by:
        stop in interface Lifecycle
      • remove

        public void remove​(CacheXid cacheXid)
      • forgetTransaction

        public void forgetTransaction​(XidImpl xid)
      • run

        public void run()
        periodically checks for idle transactions and rollbacks them.
        Specified by:
        run in interface java.lang.Runnable
      • getPreparedTransactions

        public java.util.Collection<javax.transaction.xa.Xid> getPreparedTransactions()
      • isEmpty

        public boolean isEmpty()