improve heuristic exception handling in rollback when txmanager.commit is called
--------------------------------------------------------------------------------
Key: GERONIMO-4471
URL: https://issues.apache.org/jira/browse/GERONIMO-4471
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
Improve heuristic exception handling during rollback, when txmanager.commit is
called by providing a rollbackResourcesDuringCommit method to throw appropriate
heuristic exceptions. The logic is:
1. If XAException.XA_HEURRB arisen from XAResource rollback, this means
transaction has been heuristically rolled back, thus we just throw normal
RollbackException.
2. If XAException.XA_HEURMIX arisen from XAResource rollback, this means
transaction has been heuristically rolled back and committed, thus we just
throw HeuristicMixedException.
3. If XAException.XA_HEURCOM arisen from XAResource rollback, this means
transaction has been heuristically committed. In this case, if transaction has
ever been committed (via other XAResources enlisted), then we throw
HeuristicMixedException.
4. Other XAExceptions, throw SystemExceptions.
5. If no specific XAException or only XAException.XA_HEURRB, throw
RollbackException.
The rollbackResourcesDuringCommit method will be used during the commit context
instead of the current rollbackResources method.
Also, during the internalPrepare method, it has:
//TODO document why this is true from the spec.
//XAException during prepare means we can assume resource is
rolled back.
rms.remove();
I don't think this is correct. Per jta spec page 50, If the resource manager
wants to roll back the transaction,
it should do so by throwing an appropriate XAException in the prepare method.
With that, I think we cannot assume resource is already rolled back. It is
just the resource manager wants to roll back the transaction. thus I propose
us remove the "rms.remove()" here, so that this rm can be included in the
rollback action.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.