Red Hat Bugzilla – Bug 812950
Duplicate delivery after consumer failover in HA configuration.
Last modified: 2013-02-24 22:13:21 EST
Created attachment 577764 [details]
test client for pausing before acking allowing time to kill connected broker.
Description of problem:
Using connection.reconnect=True if a consumer goes to fetch a message off a broker in an HA cluster and the broker fails before the acknowledgement, the failed over broker doesn't remove the message from the queue after the acknowledgement.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Connect to an HA cluster (using connection.reconnect = True) and fetch a message (don't ack).
2. Kill the broker you're connected to.
3. Acknowledge the message after your connection/session is failed over.
4. Examine the queue and see that your message is still on the queue even though you acknowledged w/out error.
No error, message is delivered to client but message is not removed from queue.
After session.acknowledge the message is removed from the queue.
This is really a messaging API issue. The call to acknowledge will not fail after reconnecting, even though the set of messages it actually refers to may have been changed by the failover. How best to signal this fact to the application this needs some further thought and debate.