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

Reply via email to