[
https://issues.apache.org/jira/browse/AMQCPP-384?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Laügt updated AMQCPP-384:
--------------------------------
Attachment: (was: ConnectionStateTracker.cpp.diff)
> Failover and prefetch=0 can result in hung consumers if the MessagePull
> command is lost
> ---------------------------------------------------------------------------------------
>
> Key: AMQCPP-384
> URL: https://issues.apache.org/jira/browse/AMQCPP-384
> Project: ActiveMQ C++ Client
> Issue Type: Bug
> Affects Versions: 3.4.0
> Reporter: Daniel Laügt
> Assignee: Timothy Bish
> Attachments: ConnectionStateTracker.cpp.diff,
> ConnectionStateTracker.h.diff
>
>
> The problem has been fixed in ActiveMQ Java Client with the issue AMQ-2877:
> https://issues.apache.org/jira/browse/AMQ-2877
> I've attached a patch that backport the fix done in java to C++. It can be
> probably used as suggestion...
> With prefetch=0, a consumer that has no messages sends an async message to
> the broker to have it dispatch a single message and waits for the dispatch to
> ocurr. prefetch=0 makes the consumer a pull consumer, in that it has to ask
> for a message each time.
> there is a possibility that failover occurs just after the send of the
> messagePull command such that the consumer is blocked waiting for a message
> but a failover connection or broker does not know about the outstanding pull
> command. The connection state tracker is the normal mechanism for command
> replay after failover. This needs to be extended to track messagePull
> commands, keeping one outstanding reference for each consumer/destination
> pair that can be replayed after failover.
> It makes sense to reuse the messageCache for this.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira