[
https://issues.apache.org/jira/browse/QPID-7679?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15876414#comment-15876414
]
Cliff Jansen commented on QPID-7679:
------------------------------------
The attached code was tested using AMQP 0-10, but I would expect the same bug
to occur with AMQP 1.0.
> Memory leak in DirectExchange
> -----------------------------
>
> Key: QPID-7679
> URL: https://issues.apache.org/jira/browse/QPID-7679
> Project: Qpid
> Issue Type: Bug
> Components: C++ Broker
> Affects Versions: qpid-cpp-0.34
> Reporter: Cliff Jansen
> Assignee: Cliff Jansen
> Attachments: unbind.cpp
>
>
> The Exchange::unbind call for DirectExchange is coded assuming that the
> binding actually exists. If the binding does not exist, this has the side
> effect of creating a Bindingkey in the BindingKey map that remains in the map
> until broker exit. The management count of bindings is not updated so there
> is no indication there of the problem.
> A well behaved 0_10 program that creates a queue, creates a direct binding,
> deletes the binding and then deletes the queue results in a second implicit
> unbind when the queue is deleted (usually on the QueueDeleteBody, but if an
> autodelete queue, it can also happen on the MessageCancelBody ending a
> subscription).
> TopicExchange and FanOutExchange explicitly guard against non-existence of
> the binding/queue pair on unbind(). Presumably, DirectExchange should do the
> same. HeadersExchange doesn't check but doesn't "remember" the pair.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]