Race condition in IdempotentConsumer
------------------------------------
Key: CAMEL-1650
URL: https://issues.apache.org/activemq/browse/CAMEL-1650
Project: Apache Camel
Issue Type: Bug
Components: camel-core
Affects Versions: 2.0-M1
Reporter: Oliver Hecker
A possible possible race condition exists in the IdempotentConsumer
implementation:
The code first checks in the MessageIdRepository if the message was already
processed. If not then it processes the message and
afterwards adds the id to the repository. (See also
http://issues.apache.org/activemq/browse/CAMEL-1451). There is no locking
between the check with "contains" and the insert with "add". So if multiple
threads/instances try this in parallel for the same id, then
it might happen that more than one finds the id not yet contained in the
repository and the same message is processed multiple
times.
I enclose an extended version of IdempotentConsumerTest which illustrates the
problem.
It is important to note that even if the test demonstrates the issue with an
MemoryIdempotentRepository a solution should also
address the case of a database based respository in a clustered environment. So
this might imply that some locking mechanism on the
database is required.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.