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

Wrong handling of XAResource wrapping with XAResourceWrapperStatImpl

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Blocker
    • 7.1.0.DR13
    • 7.1.0.DR9
    • JCA, Transactions
    • None
    • 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/)
      mvn clean verify -am -pl jbossts -DfailIfNoTests=false -fn -Djbossts.noJTS -Dtest=JMSCrashRecoveryTestCase#commitHaltAtPhaseEnd
      
      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/) mvn clean verify -am -pl jbossts -DfailIfNoTests= false -fn -Djbossts.noJTS -Dtest=JMSCrashRecoveryTestCase#commitHaltAtPhaseEnd

    Description

      IronJacamar 1.4.0.Final came with XAResourceWrapperStatImpl which brings incompatibility of wrapping XAResource for transaction manager.

      This is regression against behavior of 7.0.0.GA.

      Observed behavior
      Transaction object store is not cleared in some cases when Artemis Active MQ is used as XADatasource. I think these are cases where functionality of JBTM-860 is used.

      Probably cause
      My observation came to fact that this is caused by change at core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerImpl.java where wrapped XAResource is currently returned when com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord is created. The trouble is that AMQ XAResource implementation returns different jndiName than the wrapper one (java:/JmsXA vs. java:/JmsXA NodeId:2d77d48f-bd2b-11e6-b7e4-28d244b2cf29). This inconsistency causes trouble during recovery where method XAResourceRecord#wasResourceContactedByRecoveryModule is used to decide whether TwoPhaseOutcome.FINISH_OK or TwoPhaseOutcome.FINISH_ERROR is outcome of the periodic recovery commit action for particular participant.

      Attachments

        Issue Links

          Activity

            People

              smaestri@redhat.com Stefano Maestri
              ochaloup@redhat.com Ondrej Chaloupka (Inactive)
              Daniel Simko Daniel Simko (Inactive)
              Daniel Simko Daniel Simko (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: