[ 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.