[
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) <[email protected]>
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)