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

Andy Goldstein commented on QPID-3481:
--------------------------------------

While I agree that it would be ideal to avoid this situation, there are times 
in our system where this will happen.  We have a high priority bug related to 
this issue, and would like to see it resolved.  As it currently stands, if you 
acquire a message and then delete the queue, the queue will not have its 
destructor called until all the DeliveryRecords have been cleaned up.  This 
won't happen until the client's session has been closed.  When the session is 
closed and the destructor is called, messages that were previously acquired are 
returned to the "deleted" queue, and then the queue is deleted from memory.  
The patch I attached attempts to fix this gap; namely, it performs the same 
logic in Queue::destroyed() that routes all messages to the alternate exchange. 
 At least this way, messages are not lost.

> Acquired messages are not sent to alternate exchange when queue is deleted 
> and receiver's session closed
> --------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-3481
>                 URL: https://issues.apache.org/jira/browse/QPID-3481
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker
>            Reporter: Andy Goldstein
>         Attachments: QPID-3481.diff
>
>
> Currently, the broker will lose messages in the following scenario:
> 1. Client creates receiver to a queue (queue has an alternate exchange 
> configured)
> 2. Client acquires message from queue
> 3. Client closes receiver (with delete:always or delete:receiver)
> 4. Client closes session
> We expect that the messages should be sent to the now-deleted queue's 
> alternate exchange if/when they are released.
> Messages are not sent to the alternate exchange immediately upon closure of 
> the receiver because the client still has acquired messages; this is fine, 
> but when the client either releases the messages or closes the session, these 
> messages should be sent to the alternate exchange.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to