[ 
https://issues.apache.org/jira/browse/GERONIMO-4461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12656118#action_12656118
 ] 

Lin Sun commented on GERONIMO-4461:
-----------------------------------

Hi David, thanks for your comments!

Regarding calling forget, I found the following in the OTS v1.4 spec (under 
2.8.5)

This forget operation is performed only if the resource raised a heuristic 
outcome exception 
to rollback, commit, commit_one_phase, or prepare. Once the coordinator has 
determined that the heuristic situation has been addressed, it should issue 
forget on 
the resource. The resource can forget all knowledge of the transaction. 

What is not clear to me is what can TM do to address the heuristic situation, 
other than throw the exception out to the originator and set the transaction 
status?

Regarding XAException.XA_HEURCOM, it means "The transaction branch has been 
heuristically committed. ", per JTA spec.   I think XAException.XA_HEURMIX 
means committed some and rolled back some.

Regarding test cases, I have some test cases that would arise these 
XAExceptions during commit/rollback at the XAResource impl.   


> Improve exception during transaction manager one phase commit
> -------------------------------------------------------------
>
>                 Key: GERONIMO-4461
>                 URL: https://issues.apache.org/jira/browse/GERONIMO-4461
>             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
>
>
> 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

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to