Transactional cache operations are handled somewhat differently inside transactions than
- During the Transaction. While the
transaction is running, each transactional operation is passed to the cache
writer local to the transactional view, if one is available. As with cache
operations outside of transactions, the cache writer can abort the operation.
Each operation the cache writer allows is applied to the transactional view in
the cache and appended to the CacheEvent list in the TransactionEvent object.
- Event Conflation. The cache
events are conflated, so if a key already has an event in the list, that
event is removed and the current operation is added to the end of the
list. So this series of calls inside a transaction:
Region.create (A, W);
Region.put (A, valX);
Region.put (B, valQ);
Region.put (A, valY);
in these events stored in the CacheEvent list, with only the most recent
put (B, valQ)
put (A, valY)
- At commit and after commit. When the
transaction is committed, GemFire passes the TransactionEvent
to the transaction writer local to the transactional view, if one is available.
After commit, GemFire: