Class GlobalTxTable

java.lang.Object
org.infinispan.server.hotrod.tx.table.GlobalTxTable
All Implemented Interfaces:
Runnable, Lifecycle

public class GlobalTxTable extends Object implements 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.

Since:
9.4
Author:
Pedro Ruivo
  • Constructor Details

    • GlobalTxTable

      public GlobalTxTable()
  • Method Details

    • 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
    • ensureScheduled

      public void ensureScheduled()
    • update

      public Status update(CacheXid key, TxFunction function, long timeoutMillis)
    • markToCommit

      public void markToCommit(XidImpl xid, CacheNameCollector collector)
    • markToRollback

      public void markToRollback(XidImpl xid, CacheNameCollector collector)
    • getState

      public TxState getState(CacheXid xid)
    • 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 Runnable
    • getPreparedTransactions

      public Collection<XidImpl> getPreparedTransactions()
    • isEmpty

      public boolean isEmpty()