Cliff Jansen created QPID-7679:
----------------------------------
Summary: 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
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]