Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
qpid-java-6.0, qpid-java-6.1, qpid-java-6.0.6, qpid-java-6.1.2
-
None
Description
If I close a virtualhost (either via management or owing to a change of HA mastership), the QBBs that hold message header and payload don't get released. The QBBs won't fall back into the pool and the JVMs will have to reclaim the direct memory (which it does inefficiently).
On trunk, this causes the value returned by QBB.getNumberOfActivePooledBuffers() to be incorrect. This value is used to determine when to flow to disk, to this would cause flow to disk to be more frequent than it needs.
This problem does exist on 6.0/6.1, but is not particular impactful. The garbage collector will eventually collect the QBBs associated with the messages. As the recovery paths uses heap byte buffers: messages recovered by it are not affected by this problem.