Uploaded image for project: 'JBoss Enterprise Application Platform'
  1. JBoss Enterprise Application Platform
  2. JBEAP-6326

Inconsistent behavior of CMR resource: CommitMarkableResourceRecord#forgetHeuristic

    Details

    • Type: Bug
    • Status: Verified (View Workflow)
    • Priority: Blocker
    • Resolution: Done
    • Affects Version/s: 7.1.0.DR6
    • Fix Version/s: 7.1.0.DR9
    • Component/s: Transactions
    • Labels:
      None
    • Target Release:
    • Steps to Reproduce:
      Hide
      git clone http://git.app.eng.bos.redhat.com/git/jbossqe-eap-tests-transactions.git
      export JBOSS_HOME=... (downloadable at http://download.eng.brq.redhat.com/devel/candidates/JBEAP/)
      DS_PROPS="-Dds0.db=oracle -Dds0.jdbc.driver.url=http://www.qa.jboss.com/jdbc-drivers-products/EAP/7.1.0/oracle12c/jdbc4/ojdbc7.jar -Dds0.jdbc.xa-class=oracle.jdbc.xa.client.OracleXADataSource -Dds0.jdbc.url=jdbc:oracle:thin:@dev151.mw.lab.eng.bos.redhat.com:1521:qaora12 -Dds0.db.name=qaora12 -Dds0.user=crashrec -Dds0.pass=crashrec -Dds0.jdbc.driver.jar=dsdriver-oracle.jar"
      
      mvn clean verify -am -pl jbossts -DfailIfNoTests=false -Djbossts.noJTS -Dtest=JPAInjectedFailureCMRTestCase#injectFailOnCMRResourceCommit $DS_PROPS
      mvn clean verify -am -pl jbossts -DfailIfNoTests=false -Djbossts.noJTS -Dtest=JPAProxyCMRCrashRecoveryTestCase#prepareHaltExitRecoveryProxyHalted $DS_PROPS
      
      Show
      git clone http: //git.app.eng.bos.redhat.com/git/jbossqe-eap-tests-transactions.git export JBOSS_HOME=... (downloadable at http: //download.eng.brq.redhat.com/devel/candidates/JBEAP/) DS_PROPS= "-Dds0.db=oracle -Dds0.jdbc.driver.url=http: //www.qa.jboss.com/jdbc-drivers-products/EAP/7.1.0/oracle12c/jdbc4/ojdbc7.jar -Dds0.jdbc.xa-class=oracle.jdbc.xa.client.OracleXADataSource -Dds0.jdbc.url=jdbc:oracle:thin:@dev151.mw.lab.eng.bos.redhat.com:1521:qaora12 -Dds0.db.name=qaora12 -Dds0.user=crashrec -Dds0.pass=crashrec -Dds0.jdbc.driver.jar=dsdriver-oracle.jar" mvn clean verify -am -pl jbossts -DfailIfNoTests= false -Djbossts.noJTS -Dtest=JPAInjectedFailureCMRTestCase#injectFailOnCMRResourceCommit $DS_PROPS mvn clean verify -am -pl jbossts -DfailIfNoTests= false -Djbossts.noJTS -Dtest=JPAProxyCMRCrashRecoveryTestCase#prepareHaltExitRecoveryProxyHalted $DS_PROPS
    • Affects Testing:
      Regression

      Description

      I can observe inconsistent behaviour of CMR resource against behavior of EAP 7.1.0.DR5 (Narayana 5.3.3.Final). The errors seem to come from implementation of method CommitMarkableResourceRecord#forgetHeuristic.

      I have two tests which fails under crash recovery testsuite and causes regression against behaviour of 7.0.0.GA (if tests are not wrong in some way).

      1)

      • JPAInjectedFailureCMRTestCase#injectFailOnCMRResourceCommit

      This scenario injects throwing javax.resource.ResourceException at method javax.resource.spi.LocalTransaction#commit. When BasicAction#doForget is called there is thrown an LocalXAException from LocalXAResourceImpl and that's came to fact that method BasicAction#updateState does not call transactionStore.remove_committed and store is not cleaned.

      This is not clear integration test as exception is injected arbitrarily but at my current knowledge I don't find anything wrong with the test.

      2)

      • JPAProxyCMRCrashRecoveryTestCase#prepareHaltExitRecoveryProxyHalted

      • The second one is integration test where app server is crashed after 2PC prepare is finished. After restart is expected that both XA resources are rolled-back. When CMR is going to be a NullPointerException is thrown.
      2016-10-06 17:50:17,105 WARN  [com.arjuna.ats.arjuna] (Periodic Recovery) ARJUNA012290: failed to recover Transaction 0:ffff7f000001:6351fff9:57f67185:2a: java.lang.NullPointerException
      	at com.arjuna.ats.internal.jta.resources.arjunacore.CommitMarkableResourceRecord.forgetHeuristic(CommitMarkableResourceRecord.java:544)
      	at com.arjuna.ats.arjuna.coordinator.BasicAction.doForget(BasicAction.java:3603)
      	at com.arjuna.ats.arjuna.coordinator.BasicAction.forgetHeuristics(BasicAction.java:1347)
      	at com.arjuna.ats.arjuna.coordinator.BasicAction.phase2Abort(BasicAction.java:1991)
      	at com.arjuna.ats.arjuna.coordinator.BasicAction.doCommit(BasicAction.java:2852)
      	at com.arjuna.ats.arjuna.coordinator.BasicAction.phase2Commit(BasicAction.java:1871)
      	at com.arjuna.ats.arjuna.recovery.RecoverAtomicAction.replayPhase2(RecoverAtomicAction.java:71)
      	at com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule.doRecoverTransaction(AtomicActionRecoveryModule.java:152)
      	at com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule.processTransactionsStatus(AtomicActionRecoveryModule.java:253)
      	at com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule.periodicWorkSecondPass(AtomicActionRecoveryModule.java:109)
      	at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:811)
      	at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:377)
      

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  tomjenkinson Thomas Jenkinson
                  Reporter:
                  ochaloup Ondrej Chaloupka
                  Tester:
                  Ondrej Chaloupka
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  3 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: