The behavior could be observed when jts test is run in crashrec testsuite 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 -Djbossts.noJTA -Dtest=JMSProxyMdbMessagingServerCrashRecoveryTestCase#haltConnectionAfterDbCommits
I experience wrong behavior of JTS implementation in following test scenario. This seems to be a regression against behavior of recovery for 7.0.0.GA.
- there is two jboss eap 7.1.0.DR6 servers used. First deploys MDB and does periodic recovery. Second is used only as a Artemis messaging broker.
- first app server receives a message via MDB #onMessage from artemis broker (second eap server)
- during onMessage processing a enw message is send to different remote queue on artemis broker
- testing XA resource is enlisted to txn
- prepare phase passes for all 3 resources - mdb inbound, outbound queue, test xa resource
- connection to the second server is halt at time when commit message of MDB resource is sent to artemis broker but the confirmation is not delivered back to TM
- commit of MDB as xa resource and outbound queue as resource fail - XAException.XA_RETRY is returned
- the test XAResource is committed
- recovery starts work and log shows that XAResourceRecord.commit is called at some point of time but the real commit on the XAResource is not done and transaction is rolled back at the end
The expected behavior (and what I can observe for JTA as well) is that recovery process should commit the outbound connection resource (MDB resource should be committed just not confirmed back from artemis broker to TM).