You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Jukka Zitting (Updated) (JIRA)" <ji...@apache.org> on 2011/11/16 13:54:51 UTC
[jira] [Updated] (JCR-2861) Internal Timeout Handling in the
TransactionContext is not XA Spec. conform
[ https://issues.apache.org/jira/browse/JCR-2861?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jukka Zitting updated JCR-2861:
-------------------------------
Fix Version/s: 2.2.10
Merged to the 2.2 branch in revision 1202683.
> Internal Timeout Handling in the TransactionContext is not XA Spec. conform
> ---------------------------------------------------------------------------
>
> Key: JCR-2861
> URL: https://issues.apache.org/jira/browse/JCR-2861
> Project: Jackrabbit Content Repository
> Issue Type: Bug
> Components: jackrabbit-core
> Affects Versions: 2.2
> Reporter: Claus Köll
> Assignee: Claus Köll
> Priority: Critical
> Fix For: 2.2.10, 2.3
>
> Attachments: JCR-2861.patch
>
>
> The problem here is that in a 2 phase transaction the xa spec does not
> permit a RB* return code in response to xa_commit(). The xa spec says
> the following about RB* return codes in the xa_commit() section:
>
> "The resource manager did not commit the work done on behalf of the
> transaction branch. Upon return, the resource manager has rolled back
> the branch?s work and has released all held resources. These values may
> be returned only if TMONEPHASE is set in flags"
>
> Essentially, the only two return codes from xa_commit that J2EE Containers can
> handle sensibly are XA_OK (normal case) and XA_RMFAIL. RMFAIL will
> cause the containers to retry to commit the transaction. Any other return code will result in a heuristic
> transaction outcome (non-atomic).
> In a xa environment the TMONEPHASE is not set on the flags and so XA_RBTIMEOUT is
> not a permitted return code. A Container transaction service cannot do anything to ensure an atomic
> outcome if an XAResource fails to honour its promise to be able to commit it made when it answer XA_OK in response to xa_prepare().
> The internal timeout handling will rollback the Jackrabbit XAResource if the time exceeds between prepare and commit.
> and in the commit Method will always throw a XA_RBTIMEOUT.
> We should not handle the timeout internal because this should make the container in a 2 Phase transaction.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira