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