Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.1.4, 2.2
-
Security Level: public (Regular issues)
-
None
Description
Currently, during transaction manager one phase commit, if there is XAException arise from XAResource.commit, the code just throws RollbackException.
We should provide a more detailed Exceptions, that is:
1. If the XAException is XAException.XA_HEURRB, we throw HeuristicRollbackException, and call XAResource to forget
2. If the XAException is XAException.XA_HEURMIX, we throw HeuristicMixedException, and call 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.
4. Other XAException, throw RollbackException, same as the current code.
Thoughts?
Lin