activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Tully (JIRA)" <>
Subject [jira] Updated: (AMQ-1295) Message lost and duplication with multiple consumers
Date Mon, 08 Sep 2008 14:55:55 GMT


Gary Tully updated AMQ-1295:

    Fix Version/s: 5.3.0
                       (was: 5.2.0)

> Message lost and duplication with multiple consumers
> ----------------------------------------------------
>                 Key: AMQ-1295
>                 URL:
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.0.0
>         Environment: Standalone broker, Oracle JDBC, no journal persistence.
>            Reporter: Manuel Teira
>             Fix For: 5.3.0
>         Attachments:, planb.xml
> Not sure about the exact conditions triggering this bug, but I was able to reproduce
it multiple times using the attached client. What the client does is:
> -Opens a connection.
> -Creates a configurable number of threads to play the role of consumers in a given queue.
>     -The consumer creates a transacted session and fetches messages using a JMSConsumer.
> -Creates a configurable number of threads to play the role of producers in the given
>     -Every consumer sends a given amount of messages to the queue, opening a AUTO_ACKNOWLEDGE
session and a JMSProducer to send them.
> The bug was detected running two clients simultaneously, with the configuration:
> - 1 Producer
> - 10 Consumers
> - 1000 Messages
> Sometimes one or two messages weren't delivered to the consumers. Running a new client
on the same queue didn't help. The only way to get the "frozen" messages delivered was restarting
the browser.
> On other situations, some message was delivered twice. This was seen as the JMX console
reported a queuesize = -2, and dequeuecount = enqueuecount + 2. Also, a counter in the client
 updated for every received message shown the wrong count of messages.รง
> The situation is hard or imposible to reproduce if:
> - You disable completely persistence.
> - You add some synchronized code in the client, between the lines:
> msg = consumer.receive(2000),
> session.commit();
> like the commented statement incrConsumedCount(), perhaps shortening the probability
of a race condition.
> - You run only a client at once (perhaps the problem only happens with consumers from
different connections simultaneously)
> - If you don't use multicast to connect to the broker. I'm using, as
> java.naming.provider.url = discovery:(multicast://planb.llu.xxxx)
> and the same discoveryUri in a openwire connector in the broker. I'm attaching the client
I've used and the configuration to reproduce the problem.
> - I was not able to reproduce it using 4.1.1

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

View raw message