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: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to