[jbossts-issues] [JBoss JIRA] Updated: (JBTM-471) WSBA recovery implementation does not correctly handle crashes between complete and close

Andrew Dinn (JIRA) jira-events at lists.jboss.org
Mon Jan 19 11:19:04 EST 2009


     [ https://jira.jboss.org/jira/browse/JBTM-471?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrew Dinn updated JBTM-471:
-----------------------------

    Assignee: Andrew Dinn


> WSBA recovery implementation does not correctly handle crashes between complete and close
> -----------------------------------------------------------------------------------------
>
>                 Key: JBTM-471
>                 URL: https://jira.jboss.org/jira/browse/JBTM-471
>             Project: JBoss Transaction Manager
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: WS-T Implementation
>    Affects Versions: 4.5
>            Reporter: Andrew Dinn
>            Assignee: Andrew Dinn
>             Fix For: 4.6
>
>
> The current WSBA client API allows the client to invoke the complete operation independent from the close operation. In the current persistence implementation complete is implemented, inter alia, by calling BasicAction.prepare and close is implemented by calling BasicAction.phase2Commit.. The call to BasicAction.prepare leaves a transaction record in the log in state COMMITTING rather than state PREPARED. If a crash occurs before the client sends a close request then the recovery code will attempt to roll forward the activity by calling phase2Commit even though the client has not yet requested that the close should happen. If the client dispatches the close request after the recovery code has run it will receive a NoSuchTransaction exception  which is highly misleading since the activity has in fact been successfully closed.
> The correct behaviour is only to call BasicAction.prepare during close processing. If complete processing is necessare (i.e if there are CoordinatorCompletion participants registered) then the exchange of complete/completed messages should be done by the BA Coordinator class before it attempts to execute a close. The close itself should be implemented by calling BasicAction.End to perform a 2 phase commit. This will ensure that a log record is only written when a close for the activity has been initiated and hence that any record written after the prepare will initiate a valid roll forward of the activity during recovery.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jbossts-issues mailing list