[jboss-jira] [JBoss JIRA] Commented: (JBMESSAGING-355) Remove possibility of delivery race conditions

Tim Fox (JIRA) jira-events at jboss.com
Thu Oct 26 13:14:41 EDT 2006


    [ http://jira.jboss.com/jira/browse/JBMESSAGING-355?page=comments#action_12345866 ] 
            
Tim Fox commented on JBMESSAGING-355:
-------------------------------------

I believe I have already fixed this in TRUNK - the change should be ported from TRUNK to Branch_1_0.

BTW This bug report is not the same issue as the original issue of this JIRA task - so should really be in a different task.

> Remove possibility of delivery race conditions
> ----------------------------------------------
>
>                 Key: JBMESSAGING-355
>                 URL: http://jira.jboss.com/jira/browse/JBMESSAGING-355
>             Project: JBoss Messaging
>          Issue Type: Task
>            Reporter: Tim Fox
>         Assigned To: Tim Fox
>             Fix For: 1.0.2.CR1
>
>         Attachments: race-condition.log
>
>   Original Estimate: 3 days
>  Remaining Estimate: 3 days
>
> Currently race conditions can occur on message delivery where the delivery is acknowledged or cancelled before the call to handle has returned.
> In ChannelState we defensively program against this by synchronizing on the returned delivery and by dealing with the situation where the delivery does not exist in the channel state and ignoring.
> See ChannelSupport::deliver() and ChannelState.cancelDelivery.
> This approach has the following problems:
> Complexity of code to maintain and understand.
> Where acks return quickly we are likely to get contention on the lock in ChannelSupport::deliver, thus reducing throughput.
> A much simpler solution enables us to remove the possibility of such race conditions and remove the corresponding lock contention.
> This can be done by adding a confirm() method on Delivery.
> When the receiver receives the message in it's handle() call, before dispatching the message it calls Delivery::confirm. This results in the channel adding the delivery to the channel state. Thus we can be assured that the delivery exists before any acknowledgment or cancellation comes in.
> This is a very simple change.

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

        



More information about the jboss-jira mailing list