-
Bug
-
Resolution: Done
-
Major
-
7.1.0.CR3
-
None
The documentation [1] says that flow control on cluster connection can be configured by property producer-window-size. However this property is ignored by Artemis [2].
// No producer flow control on the bridges, as we don't want to lock the queues
targetLocator.setProducerWindowSize(-1);
It seems there is a reason why it is always configured to -1. Redistribution of messages in the cluster bridge is implemented by single producer created from the targetLocator. If producer-window-size was configured to some value and there was a full queue with block policy, the producer would be blocked on acquiring of credits and the whole redistribution would be blocked as well.
IMO to fix this issue, it is not enough to just pass the producer-window-size to the targetLocator (as I explained above). The implementation should be enhanced to not to block producer if one of the queues is full. It should be able to redistribute messages to the rest of the queues.
[1] https://activemq.apache.org/artemis/docs/1.5.5/clusters.html#configuring-cluster-connections
[2] https://github.com/rh-messaging/jboss-activemq-artemis/blob/1.5.5.jbossorg-008/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java#L784
- blocks
-
ENTMQBR-1176 FLow control improvements to the bridge
- Closed
- relates to
-
JBEAP-13599 (7.4.z) ResendCache in ChannelImpl has no upper limit and may cause OOM error
- Closed