[
http://jira.jboss.com/jira/browse/JBTM-278?page=comments#action_12372521 ]
Jonathan Halliday commented on JBTM-278:
----------------------------------------
It is necessary to ensure that rollback is called on each XAResource exactly once,
regardless of 'attempted commit fails' vs. 'explicit rollback' or
one-phase vs. two phase paths through the code. Zero calls can leave the resource manager
in an uncertain state, as now. More than one call may give spurious errors as the second
one will probably throw an error.
This probably means XAResourceRecord topLevelPrepare must never call it regardless of
errors from the end call (the rollback call will happen during execution of topLevelAbort
in phase two), topLevelAbort must always call it (it's either executing in phase two
to clean up a failed prepare or on a single pass explicit rollback), and
toplevelOnePhaseCommit mush call it in an exception handler if the end call throws an
XA_RM* error.
XAResource.end error may not cause rollback
-------------------------------------------
Key: JBTM-278
URL:
http://jira.jboss.com/jira/browse/JBTM-278
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 4.2.3.SP5
Reporter: Jonathan Halliday
Assigned To: Mark Little
Fix For: 4.4
An XAResource.end call may return an XA_RB* error. In such case, the resource should (but
currently does not) still get rollback called on it too. Update XAResourceRecord.java to
fix.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira