You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Claus Köll (JIRA)" <ji...@apache.org> on 2011/01/25 12:50:44 UTC
[jira] Commented: (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:comment-tabpanel&focusedCommentId=12986349#action_12986349 ]
Claus Köll commented on JCR-2861:
---------------------------------
The internal TimerTask will only be scheduled if we are in a one phase transaction.
> 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: Improvement
> Components: jackrabbit-core
> Affects Versions: 2.2.0
> Reporter: Claus Köll
> Assignee: Claus Köll
> Priority: Critical
>
> 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.
-
You can reply to this email to add a comment to the issue online.