persistent messages disappear (lost!!) upon expiry rather than ending up in a
DLQ
---------------------------------------------------------------------------------
Key: AMQ-3194
URL: https://issues.apache.org/jira/browse/AMQ-3194
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 5.4.2
Environment: Java 1.6, Sun Solaris
Reporter: Oleg Kiorsak
Priority: Critical
Here is the setup:
ActiveMQ 5.4.2 using JDBC persistence (MSSQLServerExpress DB)... (just one
server connect - no "master/slave cluster"...)
1000 simulated clients send persistent messages every 10 seconds - 10 messages
each
so in total they enqueue 10000 messages into INBOUND queue (via a virtual
destination 'MDT.INBOUND' that does a bit of "forking")
<compositeQueue name="MDT.INBOUND" forwardOnly="true">
<forwardTo>
<queue physicalName="INBOUND" />
<queue
physicalName="ARCHIVING-DST" />
</forwardTo>
So within a minute or so - I can see 10000 messages all in 'INBOUND' via SQL
Server queries
messages TTL is set to 5 mins, so within 5 mins messages start expiriring...
BUT only some messages would end up in ActiveMQ.DLQ, whilst the others seem to
disappear in thin air (!!)
interestingly, the JMX counters (e.g. via jConsole) will actually show the
missing number of messages as being in the 'INBOUND' queue
but as a matter of fact they are NOT there (which can be confirmed by SQL
queries as well)
this happens sporadically... i.e. sometimes it would actually work ok - as
expected - all expired messages ending up in DLQ,
but other times always about a hundred or so messages were missing
For example I just ran this 5 times - 2 times then restarted ActiveMQ (very
"gently" - via the 'stop' command in jConsole) and ran again twice
Here are the numbers (see attached xls as well)
After ActiveMQ RESTART
After 1st run After 2nd run and 3rd run
after 4th run after 5th run
JMX Archiving-Q' QueueSize 10000 20000 30000
40000 50000
ActiveMQ.DLQ 'QueueSize 10000 19589 29589
39589 48848
INBOUND' QueueSize 0 411 ?? 0 hm...
were did those 411 go?!! 0 741
INBOUND' EnqueCount 10000 20000 10000
20000 30000
INBOUND' DequeCount 10000 19589 10000
20000 29259
INBOUND' ExpiredCpount 10000 19589 10000
20000 29259
DB Archiving-Q 10000 20000 30000 40000
50000
ActiveMQ.DLQ 10000 19589 29589 39589
48848
INBOUND 0 0 0 0
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira