You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Lin Sun (JIRA)" <ji...@apache.org> on 2009/01/16 23:43:59 UTC

[jira] Updated: (GERONIMO-4466) Improve exception during transaction manager commit when there are multiple XAResources

     [ https://issues.apache.org/jira/browse/GERONIMO-4466?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lin Sun updated GERONIMO-4466:
------------------------------

    Affects Version/s: 2.1.4
        Fix Version/s: 2.1.4

> 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.1.4, 2.2
>            Reporter: Lin Sun
>            Assignee: Lin Sun
>             Fix For: 2.1.4, 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.