Improve exception during transaction manager commit when there are multiple
XAResources
---------------------------------------------------------------------------------------
Key: GERONIMO-4466
URL: https://issues.apache.org/jira/browse/GERONIMO-4466
Project: Geronimo
Issue Type: Improvement
Security Level: public (Regular issues)
Components: transaction manager
Affects Versions: 2.2
Reporter: Lin Sun
Assignee: Lin Sun
Fix For: 2.2
When tm.commit is invoked and there are multiple XAResources enlisted. if
there are one or more XAExceptions arisen from one or more of these XAResources
during commit, the code simply throws SystemException. I propose the following
updates to provide more detailed exceptions:
1. If the XAException is XAException.XA_HEURRB from one XAResource and there is
no other exceptions from other XAResources, we throw HeuristicMixedException
(because there are heuristic conditions and some are committed some are rolled
back), and call the XAResource to forget.
2. If all XAResources report XAException.XA_HEURRB, we throw
HeuristicRollbackException, and call the these XAResources to forget
3. If the XAException is XAException.XA_HEURRB from one or more XAResources
however one or more XAResource are able to commit something (either no
exception during commit, or throw XAException.XA_HEURMIX
/XAException.XA_HEURCOM to indicate something gets committed), we throw
HeuristicMixedException, and call the XAResources to forget.
2. If the XAException is XAException.XA_HEURMIX from one XAResource, and no
matter what other heuristic exceptions reported by other XAResources, we throw
HeuristicMixedException, and call the XAResource to forget
3. If the XAException is XAException.XA_HEURCOM, we don't need to inform the
transaction originator, but we want to call XAResource to forget.
Comments welcome.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.