]
Mircea Markus commented on ISPN-3063:
-------------------------------------
I wonder why this happens only when recovery is enabled, as even with recovery disabled
the logic is the same.
Data Inconsistency when Recovery + syncCommitPhase=false
--------------------------------------------------------
Key: ISPN-3063
URL:
https://issues.jboss.org/browse/ISPN-3063
Project: Infinispan
Issue Type: Bug
Components: Transactions
Affects Versions: 5.2.5.Final, 5.3.0.Alpha1
Reporter: Pedro Ruivo
Assignee: Mircea Markus
Labels: recovery, transaction
with syncCommitPhase=false, the CommitCommand is sent asynchronously. the
TransactionCoordinator sends immediately the TxCompletionNotificationCommand that can be
deliver first than the CommitCommand. The CommitCommand fails silently:
{code}
if (transaction == null) {
if (trace) log.tracef("Did not find a RemoteTransaction for %s", globalTx);
return invalidRemoteTxReturnValue();
}
}
{code}
This bug affects the 5.3 and 5.2.5. I've made one test case to catch this bug:
5.3 =>
https://github.com/pruivo/infinispan/blob/rec-async/core/src/test/java/or...
5.2 =>
https://github.com/pruivo/infinispan/blob/rec-async-5.2/core/src/test/jav...
Note: this bug may happen if you use async communication (prepare in 1PC)
Note2: this may be related to
https://issues.jboss.org/browse/ISPN-2719
Possible solutions:
* do not allow to configure the cache with syncCommitPhase=false && recovery
enabled;
* force syncCommitPhase=true when recovery is enabled;
* send the CommitCommand and the TxCompletionNotificationCommand as Regular Messages
(they will be deliver in FIFO order)
Thanks to Diego Didona that spotted this bug.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: