TimeToLive feature makes some messages disappear
------------------------------------------------
Key: AMQCPP-393
URL: https://issues.apache.org/jira/browse/AMQCPP-393
Project: ActiveMQ C++ Client
Issue Type: Bug
Components: CMS Impl
Affects Versions: 3.4.0
Environment: Ubuntu 10.04 x86_64, CMS 3.4.0, ActiveMQ 5.5.0 (and 5.6
SNAPSHOT of 2012-04-05)
Reporter: Thomas Riccardi
Assignee: Timothy Bish
The following setup is run in one machine:
ActiveMQ Broker 5.5.0, with:
{code:xml}
<deadLetterStrategy>
<sharedDeadLetterStrategy
processExpired="true"
processNonPersistent="true"
/>
</deadLetterStrategy>
{code}
Two C++ programs using CMS 3.4.0:
Program A produces messages to a "request" queue with a TTL of 1000ms.
Program B consumes messages from "request" queue with prefetch=0, process the
messages, and posts a reply in "reply" queue.
Program A sends 222 messages to the "request" queue.
Program B process a message in about 250ms.
Program B has the time to process 4 messages from "request", and post the 4
replies to "reply".
Then the broker moves to the "DLQ" queue the expired messages from the
"request" queue.
Final state: "request" is empty, "reply" has 4 enqueued messages, and "DLQ" has
125 enqueued messages.
*The bug*: the sum of messages counts from "DLQ" and "reply" is lower than the
number of messages initially enqueued in "request": there are 93 messages
missing.
The messages are not lost by the Program B: with traces on the receive() loop
we confirm that it only got 4 messages.
{code}
while (1)
{
cms::Message *message = _messageConsumer->receive();
if (! message)
continue;
_messageListener->onMessage(message);
delete message;
}
{code}
The bug is reproducible, but the numbers vary. This happens less often if we
increase the TTL to 10s, and this never happens with no TTL (TTL=0, default).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira