[
https://issues.jboss.org/browse/JBTM-1354?page=com.atlassian.jira.plugin....
]
Tom Jenkinson commented on JBTM-1354:
-------------------------------------
I think maybe we should do the xaRecovery in two phases, the first one collects all the
XAR and this can be locked, the next one does the work and this is not locked
JCA recovery race condition
---------------------------
Key: JBTM-1354
URL:
https://issues.jboss.org/browse/JBTM-1354
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public(Everyone can see)
Reporter: Tom Jenkinson
Assignee: Tom Jenkinson
Fix For: 4.17.3, 5.0.0.M2
Evidenced in SimpleIsolatedServers::testSimultaneousRecovery
Basically XATerminatorImple -> SAA::activate() -> XAResourceRecord::restore_state()
-> getNewXAResource() -> XARecoveryModule::getNewXAResource()
At this point _xidScans may be none-null but still only partial from the first scan:
periodicWorkSecondPass -> bottomUpRecovery ->
resourceInitiatedRecoveryForRecoveryHelpers -> xaRecovery
if (_xidScans == null)
_xidScans = new Hashtable<XAResource,RecoveryXids>();
What I am not sure of is whether we should synchronize bottomUpRecovery and
getNewXAResource as that would stop this race condition. Gonna give that a whirl.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira