[ 
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)

Reply via email to