[ 
https://issues.apache.org/jira/browse/QPID-2418?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12911080#action_12911080
 ] 

Robbie Gemmell commented on QPID-2418:
--------------------------------------

As per Andrews earlier comments, the updates do not fully resolve the issue 
when using 0-8/0-9/0-9-1 clients as the information on previous subscribers is 
only held per-session, and regardless of this it is not possible with these 
protocol versions to determine when connecting whether any existing server side 
selector (if any) matches the new one (if any) as the arguments can not be 
queried. It is only possible to tell from the queue bindings whether the Topic 
in use differs differs.

The updates I made to augment the original patch do allow the 0-10 client to 
determine that the selector is changing even without knowledge of any prior 
subscribers on the session and so should fully resolve the issue. This was 
achieved by always sending the selector argument but giving it an empty value 
if no selector is in use (the broker interprets the empty argument as lack of a 
selector just as it would if the argument was not present), as this allows 
querying the broker upon (re)connection whether the selector argument matches 
any existing argument. Additionally, the client side selectors in the 0-10 
client would already protect from reciept of messages which do not match the 
selector in use at any given point.

>  Existing durable subscription with selector is not unsubscribed during 
> change to new subscription
> --------------------------------------------------------------------------------------------------
>
>                 Key: QPID-2418
>                 URL: https://issues.apache.org/jira/browse/QPID-2418
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: M4, 0.5, 0.6
>            Reporter: Robbie Gemmell
>            Assignee: Robbie Gemmell
>             Fix For: 0.7
>
>         Attachments: 0001-QPID-2418-branch.patch, 0001-QPID-2418-trunk.patch, 
> QPID-2418-trunk_new.patch, QPID-2418-trunk_robbies_additions.patch
>
>
> AMQSession.createDurableSubscriber(topic, name, messageSelector, noLocal) 
> does not unsubscribe existing durable subscriptions. Whilst it does check for 
> existing durable subscriptions in use by the client with the same name, it 
> instead simply closes the subscriptions then creates a new one. As a result 
> of not unsubscribing, the queue backing the subscription is not deleted 
> before being used by the updated subscription as it should be (and as happens 
> in the 0_8 and 0_10 subclasses when using durable subscriptions without 
> selectors).

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


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org

Reply via email to