Bug 729441 - Empty bindings are not internally pruned from the direct exchange
Summary: Empty bindings are not internally pruned from the direct exchange
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: 1.3
Hardware: Unspecified
OS: Unspecified
high
medium
Target Milestone: 2.1.2
: ---
Assignee: Gordon Sim
QA Contact: Leonid Zhaldybin
URL:
Whiteboard:
: 704541 (view as bug list)
Depends On:
Blocks: 698367
TreeView+ depends on / blocked
 
Reported: 2011-08-09 18:47 UTC by Jason Dillaman
Modified: 2018-11-30 21:58 UTC (History)
10 users (show)

Fixed In Version: qpid-cpp-0.14
Doc Type: Bug Fix
Doc Text:
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.
Clone Of:
Environment:
Last Closed: 2012-11-14 20:12:14 UTC


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
Apache JIRA QPID-3403 None None None 2012-11-14 20:12:14 UTC

Description Jason Dillaman 2011-08-09 18:47:32 UTC
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:

Comment 1 Jason Dillaman 2011-08-09 20:43:47 UTC
See https://issues.apache.org/jira/browse/QPID-3403 for proposed patch

Comment 2 Gordon Sim 2011-08-10 17:10:09 UTC
Fixed upstream: http://svn.apache.org/viewvc?view=rev&rev=1156266

Comment 3 Mike Cressman 2012-03-02 15:37:51 UTC
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.

Comment 7 Leonid Zhaldybin 2012-03-06 14:48:45 UTC
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.

Comment 8 Gordon Sim 2012-03-06 17:57:16 UTC
    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.

Comment 9 Pavel Moravec 2012-03-08 09:34:01 UTC
*** Bug 704541 has been marked as a duplicate of this bug. ***


Note You need to log in before you can comment on or make changes to this bug.