A transaction test based on activemq-artemis TransactionTest reveals a credit propagation bug. The original case and reproducer code is at https://issues.jboss.org/browse/ENTMQIC-2004
Attached are two traces of the test running direct and routed. I think this is a router bug.
- In the direct case (D-2004-direct.html) look at Frames 101-103. Frame 101 starts a drain cycle and Frame 102 complete the drain cycle. The the client in Frame 103 immediately sends the receiver 1000 more credits.
- In the routed case (D-2004-routed.html) the same sequence is Frames 90-94. Frame 90 (client->router) and Frame 91 (router->broker) start the drain cycle. Frame 92 (broker->router) and Frame 93 (router->client) complete the drain cycle. Then in Frame 94 the client sends 1000 more credits but the router never sends the credits to the broker. That is the bug.
After Frame 94, where the router does not send any receiver credits to the broker, the broker is unable to send any received messages to the receiver and everything freezes until the test times out.