Hide Forgot
Description of problem: Each queue that is created is automatically bound to the default (direct) exchange with a routing key that matches the queue name. When the queue is deleted, the queue is correctly removed from the binding map, but the mapping from routing key to queues is not removed even when there are no queues bound to the routing key. In a case where thousands of uniquely named queues are created and deleted as transient storage, the memory usage of the broker will continue to grow as the default exchange's routing key map continues to grow. Version-Release number of selected component (if applicable): qpid-cpp-server-0.7.946106-32_ptc_hotfix_6_v3.el5 How reproducible: 100% Steps to Reproduce: 1. Continuously declare and delete queues with unique names Actual results: The broker memory utilization grow as the bindings on the default (direct) exchange are not completely cleaned up Expected results: The broker memory utilization will not continue to grow Additional info:
See https://issues.apache.org/jira/browse/QPID-3403 for proposed patch
Fixed upstream: http://svn.apache.org/viewvc?view=rev&rev=1156266
This is already in the 2.1.2 release (through the 0.14 rebase from upstream), so we just need to add it to the errata.
Tested on RHEL5.8 and RHEL6.2 (i686 and x86_64). Packages tested: RHEL6.2 python-qpid-0.14-5.el6.noarch python-qpid-qmf-0.14-4.el6.i686 qpid-cpp-client-0.14-10.el6.i686 qpid-cpp-client-devel-0.14-10.el6.i686 qpid-cpp-client-rdma-0.14-10.el6.i686 qpid-cpp-client-ssl-0.14-10.el6.i686 qpid-cpp-server-0.14-10.el6.i686 qpid-cpp-server-cluster-0.14-10.el6.i686 qpid-cpp-server-devel-0.14-10.el6.i686 qpid-cpp-server-rdma-0.14-10.el6.i686 qpid-cpp-server-ssl-0.14-10.el6.i686 qpid-cpp-server-store-0.14-10.el6.i686 qpid-cpp-server-xml-0.14-10.el6.i686 qpid-java-client-0.14-3.el6.noarch qpid-java-common-0.14-3.el6.noarch qpid-java-example-0.14-3.el6.noarch qpid-qmf-0.14-4.el6.i686 qpid-tools-0.14-1.el6.noarch ruby-qpid-qmf-0.14-4.el6.i686 RHEL5.8 python-qpid-0.14-3.el5 python-qpid-qmf-0.14-3.el5 qpid-cpp-client-0.14-10.el5 qpid-cpp-client-devel-0.14-10.el5 qpid-cpp-client-rdma-0.14-10.el5 qpid-cpp-client-ssl-0.14-10.el5 qpid-cpp-server-0.14-10.el5 qpid-cpp-server-cluster-0.14-10.el5 qpid-cpp-server-devel-0.14-10.el5 qpid-cpp-server-rdma-0.14-10.el5 qpid-cpp-server-ssl-0.14-10.el5 qpid-cpp-server-store-0.14-10.el5 qpid-cpp-server-xml-0.14-10.el5 qpid-java-client-0.14-3.el5 qpid-java-common-0.14-3.el5 qpid-java-example-0.14-3.el5 qpid-qmf-0.14-3.el5 qpid-qmf-devel-0.14-3.el5 qpid-tools-0.14-1.el5 ruby-qpid-qmf-0.14-3.el5 According to the output of command 'pmap $(which qpidd)', memory consumption by qpidd broker did not change during three-hours testrun. -> VERIFIED.
Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: Cause: Adding and removing bindings from the direct exchange using unique keys e.g. when creating and deleting lots of uniquely named temporary queues. Consequence: The bindings were not fully cleared up on removal, causing memory growth. Fix: Bindings are now properly leaned up when removed. Result: Memory is no longer leaked.
*** Bug 704541 has been marked as a duplicate of this bug. ***