Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Fixed
-
qpid-java-6.0
-
None
Description
With current implementation consumer acquired messages are put into intermediate queue on ConsumerTarget before putting them into wire. The registering of those messages as unacknowledged with session happens letter. When TCP connection is get closed between message being put into a ConsumerTarget queue and registering of it on session as unacknowledged, such message cannot be released as part of session close and can continue remain in ACQUIRED state blocking the queue message flow. Only Broker restart can remediate the issue.
It seems we can fix the issue by introducing a method on a ConsumerTarget to iterate over the messages stored in intermediate queue and call release method on them. The method shall be invoked as part of ConsumerTarget close.