[ 
https://issues.apache.org/activemq/browse/AMQ-1714?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully updated AMQ-1714:
----------------------------

    Attachment: amq1714.patch

this patch provides a test case that shows the problem and a fix that adds 
additional synchronisation to the queue dispatch method.
removing a subscription needs to be synchronized with the use of subscriptions. 
This seems to be the intended use of dispatchLock but up till now dispatch() 
does not lock dispatchLock.

> messages get dispatched to a removed consumer, locked and remain unavailable 
> - appear as missing
> ------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-1714
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1714
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.1.0
>            Reporter: Gary Tully
>         Attachments: amq1714.patch
>
>
> with failover transport. multiple non persistent producers and consumers on a 
> single queue  and transport disconnects, it is possible for a messages to get 
> dispatched to a removed subscription or consumer. These messages are locked 
> and hence cannot get dispatched to new consumers when the network ins 
> reconnected. From a consumer perspective it looks like there are missing 
> messages.
> The problem occurs is messages are being dispatched while subscription 
> removal occurring. The list of consumers is modified, inflight messages are 
> removed from the subscription, unlocked and re dispatched. However, dispatch 
> of messages is not synchronised with this removal and it is possible to 
> dispatch to a removed consumer. Any such messages will be locked and never re 
> dispatched.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to