-
Bug
-
Resolution: Done
-
Major
-
JBoss A-MQ 6.3
-
None
-
-
+
-
-
A publisher that is getting throttled (within a Local transaction) due to destination memory limit hitting 100%, are not getting removed when the underlying JMS connection is removed. In turn the transaction is not being rolled back.
A potential consequence; if this is a large batch transaction, this can result in the Producer Flow Control being triggered on the topic. As the messages have not being committed yet, they cannot be consumed . So there is no way for the topic's "memory used" to fall below 100 %. This means the topic will be constantly throttling new or existing producers until the broker is restarted.
The expectation is that, once the connection is killed the publisher should be cleared away and the transaction should be rolled back - reducing the memoryUsed to the value before the large batch transaction was started.
I have tested with sendFailIfNoSpaceAfterTimeout on the destination policy and this does not make a difference to the outcome.
NOTE Setting sendFailIfNoSpace at the systemUsage seems to avoid the issue. This will cause the broker to send an Exception rather than Block the publisher when trying to throttle
<systemUsage>
<systemUsage sendFailIfNoSpace="true">
<memoryUsage>
....
It also seemed to take effect when set at the destination policy level
<policyEntry topic="my.topic" memoryLimit="2mb" sendFailIfNoSpace="true"/>