Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-3389

Forwarded transactions can remain stale after state transfer



      There is a scenario where a tx started on one node, moved during state transfer, and committed on the originating node won't be removed from the new owner's tx table.

      The chain of events is as follows:

      1. New topology comes in as part of a view change.
      2. Local transaction started with the new topology ID. This transaction was started due to a LockControlCommand and has no modifications. Also important, it only has local locks.
      3. Tx forwarded to new owner before the local lock is acquired and registered with the transaction.
      4. Since the tx has only local locks and no modifications, it is only removed locally. No TxCompletion or Rollback are broadcast to the new owners.

      This key becomes unusable not due to stale locks, but because the waitForTransaction() code will see that the old tx can "potentially" lock the key.

      This easily happens with pessimistic caches, though I have seen it happen with optimistic caches (there is a delta between the transaction being created and the lock registration).

        Gliffy Diagrams




              • Assignee:
                dan.berindei Dan Berindei
                an1310 Erik Salter
              • Votes:
                0 Vote for this issue
                2 Start watching this issue


                • Created: