Details
-
Bug
-
Resolution: Won't Do
-
Major
-
None
-
12.0.0.Final
-
None
Description
TM is unable to recover transaction after one of the nodes crash during commit phase of a resource.
Scenario:
- EAP 7.0.9 enlists dummy XA resource, update db value (XADatasource) and call WildFly 12
- WildFly 12 enlists dummy XA resource, update other db value
- At entry of commit phase of dummy XA resource on WildFly12 byteman crash the server
- WildFly 12 is started
- Recovery process should recover the transaction
Following exception is seen in EAP 7.0.9 log
2018-03-20 12:42:35,171 WARN [com.arjuna.ats.jta] (Periodic Recovery) ARJUNA016036: commit on < formatId=131077, gtrid_length=32, bqual_length=36, tx_uid=0:ffff7f000001:643452d5:5ab0f37d:f, node_name=eap1, branch_uid=0:ffff7f000001:643452d5:5ab0f37d:1e, subordinatenodename=null, eis_name=unknown eis name > (RecoveryOnlySerializedEJBXAResource{ejbReceiverNodeName='eap2'}) failed with exception $XAException.XA_RETRY: javax.transaction.xa.XAException at org.jboss.ejb.client.RecoveryOnlySerializedEJBXAResource.commit(RecoveryOnlySerializedEJBXAResource.java:56) at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelCommit(XAResourceRecord.java:477) at com.arjuna.ats.arjuna.coordinator.BasicAction.doCommit(BasicAction.java:2869) at com.arjuna.ats.arjuna.coordinator.BasicAction.doCommit(BasicAction.java:2785) at com.arjuna.ats.arjuna.coordinator.BasicAction.phase2Commit(BasicAction.java:1853) 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)
Result is that resources on EAP7.0.9 are commited and resources on WF12 are not:
[INFO] there is (are) 1 transaction(s) in tx obj store /home/istraka/manu-units/tests-transactions-propagation/manu-unit-eap-transactions-propagation/out/EAP2_7.2.0/workspace/wildfly-12.0.0.Final/standalone/data/tx-object-store [INFO] Transaction Xid:< formatId=131077, gtrid_length=32, bqual_length=40, tx_uid=0:ffff7f000001:-174ad8d9:5ab0fb3b:f, node_name=eap1, branch_uid=0:ffff7f000001:-174ad8d9:5ab0fb3b:1e, subordinatenodename=eap2, eis_name=0 > Type:StateManager/BasicAction/TwoPhaseCoordinator/AtomicAction/SubordinateAtomicAction/JCA ParentNodeName:eap1 Participant:false CreationTime:Tue, 20 Mar 2018 13:15:18 +0100 AgeInSeconds:269 Id:0:ffff7f000001:39e6900e:5ab0fb4a:13 Participant HeuristicValue:-1 Status:PREPARED JndiName:java:/TestXAResource GlobalTransactionId:[B@5753c786 HeuristicStatus:UNKNOWN NodeName:null Timeout:0 FormatId:-1 BranchQualifier:[B@1874640 Type:/StateManager/AbstractRecord/XAResourceRecord Participant:true EisProductVersion:EAP Test ClassName:com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord EisProductName:Crash Recovery Test Id:0:ffff7f000001:39e6900e:5ab0fb4a:1d Participant HeuristicValue:-1 Status:PREPARED JndiName:java:jboss/eap2-ds-jndi GlobalTransactionId:[B@4ae75d2d HeuristicStatus:UNKNOWN NodeName:null Timeout:0 FormatId:-1 BranchQualifier:[B@5eaa38ce Type:/StateManager/AbstractRecord/XAResourceRecord Participant:true EisProductVersion:9.3.15 ClassName:com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord EisProductName:PostgreSQL Id:0:ffff7f000001:39e6900e:5ab0fb4a:23
The issue is valid for:
- 6.4.x -> WF12
- 7.0.X -> WF12
The issue is not valid for:
- WF12 -> 6.4.x
- WF12-> 7.0.x
- 7.1.0 -> WF 12
If you have any question (about testsuite, scenario,...) feel free to ask.