Possible race condition between top-down and bottom-up recovery
---------------------------------------------------------------
Key: JBTM-226
URL:
http://jira.jboss.com/jira/browse/JBTM-226
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: JTA Implementation
Affects Versions: 4.2.3.SP4
Environment: Mac OS X, JDK 1.4.2.
Reporter: Mark Little
Assigned To: Mark Little
Priority: Critical
Fix For: 4.4
In local JTA recovery for non-serializable XAResources, the XAResourceRecovery
implementation is needed to obtain a new XAResource. If a new resource isn't obtained
(because the XAResourceRecovery instances haven't all been triggered yet), top-down
recovery retries on subsequent recovery sweeps. Meanwhile, bottom up recovery can kick in
and use an XAResource from a XAResourceRecovery that is now available and fail to locate
any information on the transaction that will drive it top-down. Upon failing to find the
transaction, it uses presumed abort and rolls back the instance, when in fact it should
wait and commit it. But it doesn't do that until several phases have passed, and in
which case most of the time top-down recovery will have re-run, found the XAResource and
committed the transaction.
I'm fairly sure this is a race condition and does exist, but am still checking. Work
around exists at the moment though.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: