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

Aidan Skinner updated QPID-601:
-------------------------------

    Component/s: Java Broker
       Assignee: Rob Godfrey

Rob, I think this has been fixed / invalidated by your refactoring, is that 
true?

> messages may be stranded when selectors are used
> ------------------------------------------------
>
>                 Key: QPID-601
>                 URL: https://issues.apache.org/jira/browse/QPID-601
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: M2, M2.1, M3
>            Reporter: Rafael H. Schloming
>            Assignee: Rob Godfrey
>
> ConcurrentSelectorDeliveryManager = CSDM
> PDQ = PreDeliveryQueue
> pPDQ = populatePreDeliveryQueue
> Messages may be stranded as a result of the way selectors are implemented. 
> When a consumer subscribes to a queue using a filter, CSDM.pPDQ is called to 
> move messages from CSDM._messages into the PDQ for that subscription. The 
> pPDQ method does this by calling _messages.iterator() and placing matching 
> messages into the PDQ of the subscription. The result of _messages.iterator() 
> is not guaranteed to reflect concurrent changes made to _messages, and so a 
> publish may end up causing a message that matches the subscription to be 
> placed onto _messages. This message is then stranded there despite the fact 
> that the subscription could accept the message because nothing ever 
> reexamines the _messages queue after the initial pPDQ when the consumer 
> subscribes.
>  One potential fix for this issue would be to make the pPDQ method block 
> messages from being pushed onto the _messages queue while it operates. This 
> would work, however it would introduce undesirable synchronization for all 
> publishers attempting to place messages on the queue.
> So far I can't think of a proper fix for this issue that doesn't involve some 
> substantial changes in the data structures for queuing and delivering 
> messages.

-- 
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