activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vadim Pesochinskiy (JIRA)" <>
Subject [jira] Created: (AMQ-1333) Broker stops delivering messages to some consumers
Date Fri, 20 Jul 2007 18:51:27 GMT
Broker stops delivering messages to some consumers

                 Key: AMQ-1333
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 4.1.0
         Environment: WinXP
            Reporter: Vadim Pesochinskiy
            Priority: Critical
             Fix For: 4.1.2

This is a clone of AMQ-1251 to put the fix into 4.1.2. I think there is a serious synchronization
issue here.


I have around 40 consumers taking messages from a single queue. After awhile 1 or 2 consumers
stop receiveing any messages. Going to JMX and stopping corresponding connection causes re-connect
and messages are delivered again.

I reproduced it twice in QA enviroment and now it happened in production. I tried to instrument
the code and set the log in debug, but that changed timing and I failed to reproduce it after
the changes.

I suspect that runtime association b/w Queue and Consumer objects is lost on the Broker side.

One of the suspects is the empty catch block in the RoundRobinDispatchPolicy (line 64) class.
It is possible that the CopyOnWrite array list is messed up and it fails when removed consumer
is added back.

BTW CopyOnWrite list is good when you mostly read, but not so good when you write for every
message delivery and empty catch blocks are bad in any case.

if (firstMatchingConsumer != null) {
// Rotate the consumer list.
try { consumers.remove(firstMatchingConsumer); consumers.add(firstMatchingConsumer); } catch
(Throwable bestEffort) {

This issue now occurs on a very slow and busy machine after consumer gets a dozen of messages
it stops getting others.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message