[ https://issues.apache.org/jira/browse/AMQ-5851?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14601700#comment-14601700 ]
ASF GitHub Bot commented on AMQ-5851: ------------------------------------- GitHub user cshannon opened a pull request: https://github.com/apache/activemq/pull/123 https://issues.apache.org/jira/browse/AMQ-5851 This commit resolves an issue where unmatched acknowledgement messages could be received when running a MDB consumer and sending messages with a short TTL. The expiration logic when receiveing an expired Message Ack will now only expire messages in dispatch relating to the received ack, not all expired messages in the dispatch list. You can merge this pull request into a Git repository by running: $ git pull https://github.com/cshannon/activemq AMQ-5851 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/activemq/pull/123.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #123 ---- commit 1bce29ac6f55394fa9ebf2ee347dcde415bac7e0 Author: Christopher L. Shannon (cshannon) <christopher.l.shan...@gmail.com> Date: 2015-06-25T18:22:32Z https://issues.apache.org/jira/browse/AMQ-5851 This commit resolves an issue where unmatched acknowledgement messages could be received when running a MDB consumer and sending messages with a short TTL. The expiration logic when receiveing an expired Message Ack will now only expire messages in dispatch relating to the received ack, not all expired messages in the dispatch list. ---- > Unmatched acknowledge: MessageAck {commandId = 77, responseRequired = false, > ackType = 2, ...Could not find Message-ID XXX in dispatched-list (start of > ack) > ------------------------------------------------------------------------------------------------------------------------------------------------------------ > > Key: AMQ-5851 > URL: https://issues.apache.org/jira/browse/AMQ-5851 > Project: ActiveMQ > Issue Type: Bug > Components: JMS client > Affects Versions: 5.10.0, 5.11.0, 5.11.1 > Reporter: Grijesh Saini > Labels: ttl > Attachments: AcknowledgeIssue.zip > > > When lot of messages got expired because of JMS client Time to Live (TTL) > property then below error will appear and consumer will freeze > {code:xml} > Connection to broker failed: Unmatched acknowledge: MessageAck {commandId = > 77, responseRequired = false, ackType = 2, consumerId =XXX firstMessageId = > ID:XXX > lastMessageId = ID:XXX > , destination = queue://abc, transactionId = null, messageCount = 1, > poisonCause = null}; Could not find Message-ID in dispatched-list (start of > ack) > at > org.apache.activemq.broker.region.PrefetchSubscription.assertAckMatchesDispatched(PrefetchSubscription.java:477) > [activemq-broker-5.11.1.jar:5.11.1 > at > org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:212) > [activemq-broker-5.11.1.jar:5.11.1] > at > org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:441) > [activemq-broker-5.11.1.jar:5.11.1] > at > org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:484) > [activemq-broker-5.11.1.jar:5.11.1] > at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:87) > [activemq-broker-5.11.1.jar:5.11.1] > at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:87) > [activemq-broker-5.11.1.jar:5.11.1] > at > org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:277) > [activemq-broker-5.11.1.jar:5.11.1] > at > org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:97) > [activemq-broker-5.11.1.jar:5.11.1] > at > org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:550) > [activemq-broker-5.11.1.jar:5.11.1] > at org.apache.activemq.command.MessageAck.visit(MessageAck.java:245) > [activemq-client-5.11.1.jar:5.11.1] > at > org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:334) > [activemq-broker-5.11.1.jar:5.11.1] > at > org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:188) > [activemq-broker-5.11.1.jar:5.11.1] > at > org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50) > [activemq-client-5.11.1.jar:5.11.1] > at > org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) > [activemq-client-5.11.1.jar:5.11.1] > at > org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270) > [activemq-client-5.11.1.jar:5.11.1] > at > org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) > [activemq-client-5.11.1.jar:5.11.1] > at > org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214) > [activemq-client-5.11.1.jar:5.11.1] > at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196) > [activemq-client-5.11.1.jar:5.11.1] > at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_25] > {code} > Steps to reproduce : > 1. Enable TTL property for JMS client > 2. Keep TTL value very low say 5 sec > 3. Send lot of messages so some message will get expired > 4. Make sure that some message should expired when they are in MDB means > running inside MDB > Then we will see above error in the logs -- This message was sent by Atlassian JIRA (v6.3.4#6332)