Hi Dan,

can you create an issue for this and attach your test program to it?

Regards
--
Dejan Bosanac

Open Source Integration - http://fusesource.com/
ActiveMQ in Action - http://www.manning.com/snyder/
Blog - http://www.nighttale.net


On Fri, Feb 6, 2009 at 3:42 PM, Dan James <dja...@verisign.com> wrote:

>
> I'm seeing exceptions like this in a simple master/slave setup:
>
> ERROR Service                        - Async error occurred:
> javax.jms.JMSException: Slave broker out of sync with master: Dispatched
> message (ID:DUL1SJAMES-L2-1231-1233929569359-0:4:1:1:207) was not in the
> pending list for MasterSlaveBug
> javax.jms.JMSException: Slave broker out of sync with master: Dispatched
> message (ID:DUL1SJAMES-L2-1231-1233929569359-0:4:1:1:207) was not in the
> pending list for MasterSlaveBug
>
> The problem only happens when there are multiple consumers listening to the
> queue, and is more likely to occur as there are more consumers listening.
> I've written a test program that demonstrates the problem.
>
> I start the master and slave with an empty data directory and let them both
> startup and settle.  Then start the test program.  The test program creates
> a specified number of consumers, and then starts queuing 256 messages.  The
> consumers process the message by sending a reply.  The producer counts the
> replies.  Both consumers and the producer see all the messages, but with
> multiple consumers it is very likely that the error above will occur and
> several of the messages will still be queued on the slave.
>
> While debugging through the activemq code, I noticed that both the master
> and the slave dispatch the message to a consumer's pending list
> independently.  In other words, it is possible that the master will add the
> message to consumer A's pending list and the slave will add the message to
> consumer B's pending list.  Once the message has been processed by consumer
> A, the master sends a message to the slaving which specifies consumer A so
> that the slave can remove the message.  The slave looks on its copy of
> consumer A's pending list and cannot find the message.  As a result, it
> throws this exception and the message stays stuck on consumer B's pending
> list on the slave.
> --
> View this message in context:
> http://www.nabble.com/Master-slave-out-of-sync-with-multiple-consumers-tp21873754p21873754.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>

Reply via email to