The recovery process is not fully triggered on a distributed transaction when the transaction falls down at commit phase of 2PC. In the new crash recovery tests over propagated transactions only one of two servers recovers from that crash, but the other keeps an unfinished tx in its tx log.
It corresponds to commitHaltRevClient and commitHaltRevServer test methods of org.jboss.as.test.jbossts.crashrec.txpropagation.TxPropagationCrashRecoveryTestCase, see JBQA-2604 for general description of the new tests.
The test starts two servers, the client and the server (on filesystem called jbossts and jbossts2), creates a transaction on the client which then invokes the server and propagates the transaction to it. After crash, the mock XA resource is committed during periodic recovery on the client, but on the server an XA record still keeps in the tx log and no recovery happens there. The following message repeatedly appears in log of the client:
The failure for commitHaltRevServer is similar.
The tests are written against EAP6.x branch, so for reproducing this it is needed a built server from the 7.1 branch of AS7.
Steps to reproduce.
1. git clone -b as7 git://git.app.eng.bos.redhat.com/jbossqe/eap-tests-transactions.git
2. cd eap-tests-transactions
3. git checkout tx_propag_crashrec_tests
4a. mvn clean verify -Dtest=TxPropagationCrashRecoveryTestCase#commitHaltRevClient -Djboss.dist=<path to jboss-as-7.1.3.Final-SNAPSHOT>
4b. mvn clean verify -Dtest=TxPropagationCrashRecoveryTestCase#commitHaltRevServer -Djboss.dist=<path to jboss-as-7.1.3.Final-SNAPSHOT>
The logs of commitHaltRevClient run are attached to this jira.