Details
-
Bug
-
Resolution: Done
-
Critical
-
5.3.0.Final
Description
The L1TxInterceptor currently doesn't block on L1 invalidations during a 1PC. This can cause an inconsistent view of data across non owner nodes.
Example:
Node A owns k with value of v1
Node B has k in L1 with value of v1tx1 started
Node A put k -> v2
Node A sends invalidation
Node A commits
tx1 completedtx2 started
Node B get k returns v1 from L1
tx2 completedNode B gets invalidation for k
tx3 started
Node B get k remotely retrieves v2 from Node A
tx3 completed
We need to make sure that all L1 invalidations in Tx mode are completed before completing the transaction.