Class GlobalTxTable
- java.lang.Object
-
- org.infinispan.server.hotrod.tx.table.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. TheTxState
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 Summary
Constructors Constructor Description GlobalTxTable(Cache<CacheXid,TxState> storage, GlobalComponentRegistry gcr)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
forgetTransaction(XidImpl xid)
java.util.Collection<javax.transaction.xa.Xid>
getPreparedTransactions()
TxState
getState(CacheXid xid)
boolean
isEmpty()
void
markToCommit(XidImpl xid, CacheNameCollector collector)
void
markToRollback(XidImpl xid, CacheNameCollector collector)
void
remove(CacheXid cacheXid)
void
run()
periodically checks for idle transactions and rollbacks them.void
start()
Invoked on component startvoid
stop()
Invoked on component stopStatus
update(CacheXid key, TxFunction function, long timeoutMillis)
-
-
-
Constructor Detail
-
GlobalTxTable
public GlobalTxTable(Cache<CacheXid,TxState> storage, GlobalComponentRegistry gcr)
-
-
Method Detail
-
start
public void start()
Description copied from interface:Lifecycle
Invoked on component start
-
stop
public void stop()
Description copied from interface:Lifecycle
Invoked on component stop
-
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)
-
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 interfacejava.lang.Runnable
-
getPreparedTransactions
public java.util.Collection<javax.transaction.xa.Xid> getPreparedTransactions()
-
isEmpty
public boolean isEmpty()
-
-