-
Bug
-
Resolution: Done
-
Major
-
A-MQ 7.0.0.ER7
-
None
-
Broker downloaded from:
A-MQ7 - 7.0.0.ER7-redhat-1Broker running in Fedora. > uname -a
Linux plicit 4.5.5-201.fc23.x86_64 #1 SMP Sat May 21 15:29:49 UTC 2016 x86_64 x86_64 x86_64 GNU/LinuxClient running in Windows Server 2012 R2.
amqpnetlite master branch, self test: LinkTests TestMethod_AdvancedLinkFlowControlBroker downloaded from: A-MQ7 - 7.0.0.ER7-redhat-1 Broker running in Fedora. > uname -a Linux plicit 4.5.5-201.fc23.x86_64 #1 SMP Sat May 21 15:29:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux Client running in Windows Server 2012 R2. amqpnetlite master branch, self test: LinkTests TestMethod_AdvancedLinkFlowControl
This issue may be a repeat of the multiple-competing-consumers-get-stuck.
The Lite client has a self test that executes:
SenderLink sender = new SenderLink(session, "sender-" + testName, "q1");
for (int i = 0; i < nMsgs; ++i)
{
Message message = new Message();
message.Properties = new Properties() { MessageId = "msg" + i, GroupId = testName };
sender.Send(message, null, null);
}
ReceiverLink receiver = new ReceiverLink(session, "receiver-" + testName, "q1");
receiver.SetCredit(2, false); // <<< does not renew credit
Message m1 = receiver.Receive();
Message m2 = receiver.Receive();
Assert.AreEqual("msg0", m1.Properties.MessageId);
Assert.AreEqual("msg1", m2.Properties.MessageId);
receiver.Accept(m1);
receiver.Accept(m2);
ReceiverLink receiver2 = new ReceiverLink(session, "receiver2-" + testName, "q1");
receiver2.SetCredit(2, false); // <<< does not renew credit
Message m3 = receiver2.Receive();
Message m4 = receiver2.Receive();
Assert.AreEqual("msg2", m3.Properties.MessageId);
Assert.AreEqual("msg3", m4.Properties.MessageId);
receiver2.Accept(m3);
receiver2.Accept(m4);
receiver.SetCredit(4); // <<< renews credit
for (int i = 4; i < nMsgs; i++)
{
Message m = receiver.Receive();
Assert.AreEqual("msg" + i, m.Properties.MessageId);
receiver.Accept(m);
}
When the test runs the second client receiver2-* never receives any messages.
With Qpidd the test passes and the receivers receive messages as expected.