[jbossts-issues] [JBoss JIRA] Closed: (JBTM-792) Race condition between thread sending COMPLETE and thread handling NOT_COMPLETED causes error

Andrew Dinn (JIRA) jira-events at lists.jboss.org
Wed Sep 22 10:05:17 EDT 2010


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

Andrew Dinn closed JBTM-792.
----------------------------

    Resolution: Done


Fixed using same solution as for fail notifications.

> Race condition between thread sending COMPLETE and thread handling NOT_COMPLETED causes error
> ---------------------------------------------------------------------------------------------
>
>                 Key: JBTM-792
>                 URL: https://jira.jboss.org/browse/JBTM-792
>             Project: JBoss Transaction Manager
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: XTS
>    Affects Versions: 4.12.0
>            Reporter: Andrew Dinn
>            Assignee: Andrew Dinn
>             Fix For: 4.13.0
>
>
> BA CoordinatorCompletion participants suffer a timeout failure if they call BAParticipantManager.cannotComplete() underneath a call to BAWithCCParticipant.complete(). This problem arises because of a race condition on the coordinator side between the thread sending the COMPLETE request and the thread handling the NOT_COMPLETING response. AN error on the coordinator side means that the participant does not get sent the expected NOT_COMPLETED acknowledgement.
> Here is how it goes worng:
> The sending thread dispatches a COMPLETED message then waits on a change to the coordinator engine state.
> The participant side receives COMPLETED and the participant calls cannotComplete, sending NOT_COMPLETING
> The handler thread is started in response to an incoming NOT_COMPLETING message. The first thing it does is set the coordinator engine state to NOT_COMPLETING.
> Chequered flag raised!
> The sending thread wakes up and finds that the state has transitioned to something other than COMPLETED. If the complete was done as part of a client close request it tries to notify the coordinator to abort
> In the meantime the handler tries to notify the coordinator that the participant cannot complete.
> Chequered flag down!
> If the sender wins the race the handler thread finds an ABORTED coordinator and blows up with a WrongState exception which means it does not send NOT_COMPLETED (also, it does nto clear out the transaction).
> n.b. this is exactly the same problem as was dealt with earlier when fail requests were being sent during COMPLETE/CANCEL/COMPENSATE processing.

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

        


More information about the jbossts-issues mailing list