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

Infinispan calling setRollbackOnly() when detecting write skew

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Out of Date
    • 6.0.2.Final
    • None
    • Core
    • None

    Description

      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.

      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)
      ...

      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)
      ...

      Attachments

        Issue Links

          Activity

            People

              pruivo@redhat.com Pedro Ruivo
              rhn-support-sfikes Stephen Fikes
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: