Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.32, qpid-java-6.0, qpid-java-6.0.4
-
None
Description
When the application calls Session#receive(), the client will automatically open the prefetch window by 1 message if necessary (QPID-6088). On committing the received message, the client takes care to revert the prefetch level back to the session's default value. However, if the application calls rollback, the client fails to account for the increased credit, so when the application calls #receive again, the prefetch window will be opened further.
If the downstream application experiences some kind of failure meaning it rolls back every message, this could potentially lead to the prefetch buffer growing large. If the queue is deep, this could cause excessive network utilisation (as large numbers of messages are continually received/rejected) and excessive memory use on the client.
This defect also allows a Broker defect to manifest - QPID-7387.