[ https://issues.apache.org/jira/browse/AMQ-5274?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yannick Malins reopened AMQ-5274: --------------------------------- Hi Tim, I just ran my test against apache-activemq-5.11-20140715.223633-34 on win64 , and I got exactly the same issue. The test script prints that it rejects messages 1->10 (the others have already expired), and after it closes, when you go to: http://localhost:8161/admin/queues.jsp you see: ActiveMQ.DLQ 20 0 20 0 Browse Active Consumers Active Producers Send To Purge Delete queue.test 1 0 20 19 Browse Active Consumers Active Producers Send To Purge Delete There is one "ghost" message stuck in queue.test I will try integrating your junit and running that to see if I can reproduce with that, it will make things easier indeed > Stuck messages and CPU churn when aborted transacted message expires > -------------------------------------------------------------------- > > Key: AMQ-5274 > URL: https://issues.apache.org/jira/browse/AMQ-5274 > Project: ActiveMQ > Issue Type: Bug > Affects Versions: 5.8.0, 5.9.0, 5.9.1, 5.10.0 > Environment: win64, RHEL11 > Reporter: Yannick Malins > Priority: Critical > Attachments: AMQ-5274.zip, AMQ5274Test.java, logs_extract.txt > > > The test case is a simple producer/consumer: > Producer: 20 messages are injected, with a timeout of 10s. > Consumer: The redelivery policy is set to 0 retries (the issue exists with > other values). The consumer uses transactions and throws a runtime exception > on each message received. > queue stats show 20 enqueue, 19 dequeue, 1 pending > DLQ stat show 20 enqueue: all 20 messages go to DLQ, IDs ending in 1-10 for > failing, 11-20 for expiry (approx) > the pending item (ID ending in 10) is a "ghost message" , and remains stuck > indefinitely in queue.test > if you browse, the message is not shown > A) if you restart the broker, after a short while the message is cleaned: > jvm 1 | WARN | Duplicate message add attempt rejected. Destination: > QUEUE://ActiveMQ.DLQ, Message id: ID:REDACTED-52872-1405079629779-1:1:1:1:10 > jvm 1 | WARN | > org.apache.activemq.broker.region.cursors.QueueStorePrefetch@5b427f3c:ActiveMQ.DLQ,batchResetNeeded=false,storeHasMessages=true,size=0,cacheEnabled=true,maxBatchSize:20,hasSpace:tru > e - cursor got duplicate: ID:REDACTED--52872-1405079629779-1:1:1:1:10, 4 > jvm 1 | WARN | duplicate message from store > ID:REDACTED--52872-1405079629779-1:1:1:1:10, redirecting for dlq processing > B) if you purge, ActiveMQ logs a warning: "WARN | queue://queue.test after > purge complete, message count stats report: 1" > the queue is marked as being empty. > however if you restart the broker, the message re-appears shorty, > before being cleaned as above > > > SUPPLEMENTARY: with activeMQ 5.9.0 and above , if you run the injection > several times, the CPU usage of ActiveMQ climbs drastically until the queue > is purged. -- This message was sent by Atlassian JIRA (v6.2#6252)