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):
Steps to Reproduce:
1. Continuously declare and delete queues with unique names
The broker memory utilization grow as the bindings on the default (direct) exchange are not completely cleaned up
The broker memory utilization will not continue to grow
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:
According to the output of command 'pmap $(which qpidd)', memory consumption by qpidd broker did not change during three-hours testrun.
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.
Adding and removing bindings from the direct exchange using unique keys e.g. when creating and deleting lots of uniquely named temporary queues.
The bindings were not fully cleared up on removal, causing memory growth.
Bindings are now properly leaned up when removed.
Memory is no longer leaked.
*** Bug 704541 has been marked as a duplicate of this bug. ***