]
Tom Jenkinson edited comment on JBTM-2701 at 8/30/16 6:49 AM:
--------------------------------------------------------------
Problem is observed in following scenario:
{code}
0. crash
1. Periodic recovery periodicFirstPass (before XAR1 registered with recovery system) -
move from IDLE to BETWEEN_PASSES
2. XATerminator::recover() - loads SAA from external to PeriodicRecovery system
3. commit SAA1
4. commit XAResourceRecord1
5. XARecoveryModule::getNewXAResource
6. periodicFirstPass not called as not IDLE so no scan XAR1 so XAR unavailable
{code}
We need to recall periodicFirstPass unless it is in the middle of secondpass, in which
case we wait till that finishes then call it again. To allow multiple calls of first pass
we need to detect the situation and ENDRSCAN outstanding ones as that is normally done in
secondpass.
was (Author: tomjenkinson):
Problem is observed in following scenario:
{code}
0. prepare SAA1
1. prepare XAR1
2. getNewXAResource
3. periodicFirstPass (scans XAR1) - move from IDLE to BETWEEN_PASSES
4. commit XAR1
5. prepare XAR2
6. commit XAR2
7. getNewXAResource
8. periodicFirstPass not called as not IDLE so no scan XAR2
{code}
We need to recall periodicFirstPass unless it is in the middle of secondpass, in which
case we wait till that finishes then call it again. To allow multiple calls of first pass
we need to detect the situation and ENDRSCAN outstanding ones as that is normally done in
secondpass.
Allow in-flowed XAR to be scanned for Xid more than once between
scans of the recovery system
---------------------------------------------------------------------------------------------
Key: JBTM-2701
URL:
https://issues.jboss.org/browse/JBTM-2701
Project: JBoss Transaction Manager
Issue Type: Enhancement
Components: Transaction Core
Affects Versions: 4.17.33
Environment: JBoss EA P6.4.8
Reporter: Tom Ross
Assignee: Michael Musgrove
Priority: Minor
Fix For: 5.next
The JCA getNewXAResource() call can only bring forward the scanning of XAResources once
per recovery pass (i.e. once every two minutes per default).
The following signature can be observed in the log file:
{noformat}
2016-06-28 12:18:33,068 TRACE [com.arjuna.ats.jta] (EJB default - 98)
XAResourceRecord.topLevelCommit for XAResourceRecord < resource:null, txid:<
formatId=131077, gtrid_length=40, bqual_length=48,
tx_uid=0:ffff0af7f615:19718dac:576e895c:d7da9, node_name=svc_1_cmserv,
branch_uid=0:ffff0af7f663:ba85fe7:57714e42:7058f2, subordinatenodename=svc_2_mscmce,
eis_name=java:/eis/custom-ra >, heuristic: TwoPhaseOutcome.FINISH_OK, product:
com/ecim/1.0, jndiName: java:/eis/custom-ra
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord@64fa6d0e >, record
id=0:ffff0af7f663:ba85fe7:57714e42:7058f3
2016-06-28 12:18:33,068 WARN [com.arjuna.ats.jta] (EJB default - 98) ARJUNA016038: No
XAResource to recover < formatId=131077, gtrid_length=40, bqual_length=48,
tx_uid=0:ffff0af7f615:19718dac:576e895c:d7da9, node_name=svc_1_cmserv,
branch_uid=0:ffff0af7f663:ba85fe7:57714e42:7058f2, subordinatenodename=svc_2_mscmce,
eis_name=java:/eis/custom-ra >
2016-06-28 12:18:33,069 TRACE [com.arjuna.ats.arjuna] (EJB default - 98)
BasicAction.doCommit for 0:ffff0af7f663:ba85fe7:57714e42:705303 received
TwoPhaseOutcome.FINISH_ERROR from class
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord
2016-06-28 12:18:33,069 TRACE [com.arjuna.ats.arjuna] (EJB default - 98)
RecordList::insert(RecordList: empty) : appending
/StateManager/AbstractRecord/XAResourceRecord for 0:ffff0af7f663:ba85fe7:57714e42:7058f3
{noformat}
It would be useful to allow the getNewXAResource() call to re-scan XAR in case it is
called in between recovery scans multiple times.