Sanne Grinovero created ISPN-2072:
-------------------------------------
Summary: After a write skew check failure applications can't rollback
Key: ISPN-2072
URL:
https://issues.jboss.org/browse/ISPN-2072
Project: Infinispan
Issue Type: Bug
Components: Transactions
Affects Versions: 5.1.5.CR1
Reporter: Sanne Grinovero
Assignee: Mircea Markus
Priority: Critical
Fix For: 5.1.5.FINAL
When having this configuration:
{code:xml}
<transaction
transactionMode="TRANSACTIONAL"
transactionManagerLookupClass="org.infinispan.transaction.lookup.JBossStandaloneJTAManagerLookup"/>
<locking isolationLevel="REPEATABLE_READ" writeSkewCheck="true"
/>
{code}
When a write skew check is failed, the following exception is propagated to the user
code:
{quote}
org.infinispan.CacheException: Detected write skew - concurrent removal of entry!
at
org.infinispan.container.entries.RepeatableReadEntry.performLocalWriteSkewCheck(RepeatableReadEntry.java:75)
at
org.infinispan.container.entries.RepeatableReadEntry.copyForUpdate(RepeatableReadEntry.java:52)
at
org.infinispan.container.EntryFactoryImpl.wrapEntryForRemove(EntryFactoryImpl.java:133)
at
org.infinispan.interceptors.EntryWrappingInterceptor.visitRemoveCommand(EntryWrappingInterceptor.java:158)
at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:72)
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
at
org.infinispan.interceptors.locking.OptimisticLockingInterceptor.visitRemoveCommand(OptimisticLockingInterceptor.java:173)
at org.infinispan.commands.write.RemoveCommand.acceptVisitor(RemoveCommand.java:72)
{quote}
The use code is catching the exception, and attempts a rollback. The rollback fails with:
{quote}
WARN [jta] (main) ARJUNA016045: attempted rollback of < formatId=131077,
gtrid_length=29, bqual_length=36, tx_uid=0:ffffac11823e:8e2d:4fc39246:2669f, node_name=1,
branch_uid=0:ffffac11823e:8e2d:4fc39246:266a4, subordinatenodename=null, eis_name=0 >
(TransactionXaAdapter\{localTransaction=LocalXaTransaction\{xid=< formatId=131077,
gtrid_length=29, bqual_length=36, tx_uid=0:ffffac11823e:8e2d:4fc39246:2669f, node_name=1,
branch_uid=0:ffffac11823e:8e2d:4fc39246:266a4, subordinatenodename=null, eis_name=0 >}
LocalTransaction\{remoteLockedNodes=null, isMarkedForRollback=false,
transaction=TransactionImple < ac, BasicAction: 0:ffffac11823e:8e2d:4fc39246:2669f
status: ActionStatus.ABORTING >, lockedKeys=null, backupKeyLocks=null, viewId=-1}
org.infinispan.transaction.xa.LocalXaTransaction@99a9}) failed with exception code
XAException.XAER_NOTA
javax.transaction.xa.XAException
at
org.infinispan.transaction.xa.TransactionXaAdapter.getLocalTransactionAndValidateImpl(TransactionXaAdapter.java:245)
at
org.infinispan.transaction.xa.TransactionXaAdapter.rollback(TransactionXaAdapter.java:134)
at
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelAbort(XAResourceRecord.java:345)
at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:2876)
at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:2855)
at com.arjuna.ats.arjuna.coordinator.BasicAction.Abort(BasicAction.java:1618)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.cancel(TwoPhaseCoordinator.java:118)
at com.arjuna.ats.arjuna.AtomicAction.abort(AtomicAction.java:188)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.rollbackAndDisassociate(TransactionImple.java:1247)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.rollback(BaseTransaction.java:134)
{quote}
as in
_org.infinispan.transaction.xa.TransactionXaAdapter.getLocalTransactionAndValidateImpl(Xid,
XaTransactionTable)_ the operation
{code}
LocalXaTransaction localTransaction = txTable.getLocalTransaction(xid);{code}
returns *null*.
This happens as the method
_org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(InvocationContext,
WriteCommand)_ is removing a reference to the local transaction on line *218*
I've commented the cleanup line and it fixes my problem, I'm now correctly able to
rollback transactions and try again.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira