]
RH Bugzilla Integration commented on ISPN-5927:
-----------------------------------------------
Pedro Ruivo <pruivo(a)redhat.com> changed the Status of [bug
Infinispan calling setRollbackOnly() when detecting write skew
--------------------------------------------------------------
Key: ISPN-5927
URL:
https://issues.jboss.org/browse/ISPN-5927
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 6.0.2.Final
Reporter: Stephen Fikes
Assignee: Pedro Ruivo
Attachments: testcase.zip
In the context of Java Data Grid, when Infinispan detects [#write-skew] during prepare,
it invokes [#setRollbackOnly]() on the transaction implementation. This results in an
exception ({{com.arjuna.ats.jta.exceptions.InvalidTerminationStateException: ARJUNA016064:
The transaction is in an invalid state!}}) because this operation is disallowed by Arjuna
while in the {{PREPARING}} state. The result is that the causal error
({{org.infinispan.transaction.WriteSkewException}}) is lost and the error that propagates
indicates that "invalid state" (of the transaction) is actually the cause of the
failed commit. Only when debug logging was enabled could we see the root cause.
h3. {anchor:write-skew}Write skew exception
... org.infinispan.transaction.WriteSkewException: Write skew detected on key <key>
for transaction TransactionImple < ... status: ActionStatus.PREPARING >
at
org.infinispan.transaction.WriteSkewHelper.performWriteSkewCheckAndReturnNewVersions(WriteSkewHelper.java:53)
...
at
org.infinispan.transaction.TransactionCoordinator.prepare(TransactionCoordinator.java:104)
at
org.infinispan.transaction.xa.TransactionXaAdapter.prepare(TransactionXaAdapter.java:92)
at
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelPrepare(XAResourceRecord.java:213)
...
h3. {anchor:setRollbackOnly}Set Rollback
at
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.setRollbackOnly(TransactionImple.java:313)
at
org.infinispan.interceptors.InvocationContextInterceptor.markTxForRollbackAndRethrow(InvocationContextInterceptor.java:163)
...
at
org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:103)
...
at
org.infinispan.transaction.xa.TransactionXaAdapter.prepare(TransactionXaAdapter.java:92)
at
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelPrepare(XAResourceRecord.java:213)
...