[ 
https://issues.apache.org/jira/browse/QPID-783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12567222#action_12567222
 ] 

Jonathan Robie commented on QPID-783:
-------------------------------------

You can work around this problem by allocating credit after dispatcher.listen() 
is called, or by using the SubscriptionManager in a C++ client.

But it is still a problem because (1) we don't actually say what is supposed to 
happen if messages arrive between the time credit is allocated and the time 
that dispatcher.listen() is called, (2) clients in different languages behave 
differently, and (3) the problem is subtle enough and occasional enough that it 
is hard to find.

We can define correct behavior either the way described above (as I prefer), or 
by saying that all messages are lost until dispatcher.listen() is called. In 
either case, the behavior should be clearly defined and consistent across 
client bindings.

Jonathan

> 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

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to