Jonathan Robie wrote:
Ted Ross wrote:
Jonathan Robie (JIRA) wrote:
Messages get lost between credit allocation and
------------------------------------------------
Key: QPID-783
URL: https://issues.apache.org/jira/browse/QPID-783
Project: Qpid
Issue Type: Bug
Components: C++ Client, Java Client, Python Client, Ruby
Client
Reporter: Jonathan Robie
As I understand it, a client should receive all messages sent after
it subscribes and allocates credit.
Currently, the C++ client sometimes loses messages sent between the
time credit is allocated and the time that dispatcher.listen() is
called. I believe this is wrong behavior. This bug has been observed
in Listener.cpp for both fanout and direct. We suspect this problem
exists also in at least the Python client.
Correct behavior, as I understand it, is to queue all messages sent
after credit is allocated.
Jonathan
Jonathan,
I think the last thing you should do when setting up a subscription
is to set the credits. I noticed in the Python examples that the
credits are set before queue.listen is called. If you call
queue.listen before setting credits, you should never lose messages.
I assume this is the same for the C++ API.
Hi Ted,
I agree that this is an effective workaround, but I still think this
is a bug that needs to be fixed. In C++, another effective workaround
is to use the SubscriptionManager.
But the bug needs fixing ...
Jonathan
why is it a bug if done the wrong way round?
Carl.