]
Jonathan Halliday closed JBTM-427.
----------------------------------
Resolution: Done
Fixed in trunk and backported to 4.2.3 SP and CP branches.
Subordinate JCA coordinator does not call synchronizations during 2PC
if set rollbackOnly.
------------------------------------------------------------------------------------------
Key: JBTM-427
URL:
https://jira.jboss.org/jira/browse/JBTM-427
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: JTA Implementation
Affects Versions: 4.2.3.SP7, 4.2.3.CP02, 4.4.0.GA
Reporter: Jonathan Halliday
Assignee: Jonathan Halliday
Fix For: 4.2.3.SP8, 4.2.3.CP03, 4.5
In the case where XATerminatorImple.prepare is called and the tx has previously been set
rollbackOnly, we throw XA_RBROLLBACK without actually rolling back. To make matters worse
we explicitly remove the tx handle, making subsequent cleanup via commit/rollback
impossible.
The JCA 1.5 spec fails to specify the expected behaviour, but following the XA spec this
would be a violation, as the XA_RBROLLBACK code indicates the RM has rolled back the
branch and needs/expects no further contact.
However, actually rolling back can cause heuristics outcomes, since the subordinate tx
may contain several branches. These can't be reported from prepare, which does not
support throwing the heuristic exceptions or using XAException.XA_HE* error codes. That
would seem to imply a necessity for either violating the XATerminator API interface spec
or returning e.g. XAER_RMERR instead of XA_RBROLLBACK, and expecting to have rollback
called explicitly to allow clean up. Or we can clean up in prepare, bury any heuristic
and report it as a XA_RMERR.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: