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
            Reporter: Daniel Laügt
            Assignee: Timothy Bish


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


Reply via email to