activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Bain <tb...@alumni.duke.edu>
Subject Re: Async error occurred javax.jms.JMSException: Unmatched acknowledge
Date Wed, 14 Mar 2018 02:16:10 GMT
Are you using XA transactions, or just JMS ones? And did a master-slave
failover occur? If you're using XA and a failover occurred while that
message was being processing, it's possible you're seeing an occurrence of
https://issues.apache.org/jira/browse/AMQ-5854. It was observed as early as
5.9.1, but it's possible that it's also in earlier versions such as 5.8.0
that you're using. If this describes your setup, I'd definitely recommend
an upgrade to get that fix. You'd probably want to go all the way to 5.15.3
unless you've got a strong reason to use an earlier version.

And in general, if you see that message immediately after a failover (even
without XA transactions), this could be expected behavior, because it would
indicate the client trying to ack a message that the new master broker
didn't dispatch. Did a failover occur around the time this happened?

If not, there have been several reports of similar symptoms over the past
few years (
http://activemq.2283324.n4.nabble.com/Active-MQ-5-15-acknowledgment-issue-Async-error-occurred-javax-jms-JMSException-Unmatched-acknowledg-td4735271.html,
https://issues.apache.org/jira/browse/AMQ-6902,
https://issues.apache.org/jira/browse/AMQ-3901,
https://stackoverflow.com/questions/27928419/activemq-throwing-unmatched-acknowledge-exception),
but not enough information from those reporters to actually figure out the
root cause. Can you please look at each of those reports and tell us in
which ways your situation matches theirs and in which ways if any you're
doing something different than they are? Maybe by comparing and
contrasting, we can find something to investigate further.

Also, did I understand you to say that you would get this message
indicating a duplicate ack, but then the message would not be discarded and
would be redelivered later? That sounds like either we have two copies of
the message in the message store or like we're somehow confusing which
message the ack goes to, but I want to be sure I understand the exact
sequence of events correctly.

Tim

On Tue, Mar 13, 2018 at 8:04 AM, mm <marcus.meusel@novis-software.de> wrote:

> Hi, i have got the following WARNING Message...
>
> 2018-03-05 17:07:17,385 | WARN  | Async error occurred:
> javax.jms.JMSException: Unmatched acknowledge: MessageAck {commandId =
> 3101,
> responseRequired = false, ackType = 2, consumerId =
> ID:FEICFFR011-61629-1520204406620-0:4:0:0, firstMessageId =
> ID:FEICFFR011-63905-1520229600356-1:1:1:1:301, lastMessageId =
> ID:FEICFFR011-63905-1520229600356-1:1:1:1:302, destination =
> queue://DZBANK_TO_ICF, transactionId =
> TX:ID:FEICFFR011-61629-1520204406620-0:4:1027, messageCount = 2,
> poisonCause
> = null}; Could not find Message-ID
> ID:FEICFFR011-63905-1520229600356-1:1:1:1:301 in dispatched-list (start of
> ack) | org.apache.activemq.broker.TransportConnection.Service | ActiveMQ
> Transport: tcp:///127.0.0.1:49257@61616
> javax.jms.JMSException: Unmatched acknowledge: MessageAck {commandId =
> 3101,
> responseRequired = false, ackType = 2, consumerId =
> ID:FEICFFR011-61629-1520204406620-0:4:0:0, firstMessageId =
> ID:FEICFFR011-63905-1520229600356-1:1:1:1:301, lastMessageId =
> ID:FEICFFR011-63905-1520229600356-1:1:1:1:302, destination =
> queue://DZBANK_TO_ICF, transactionId =
> TX:ID:FEICFFR011-61629-1520204406620-0:4:1027, messageCount = 2,
> poisonCause
> = null}; Could not find Message-ID
> ID:FEICFFR011-63905-1520229600356-1:1:1:1:301 in dispatched-list (start of
> ack)
>                 at
> org.apache.activemq.broker.region.PrefetchSubscription.
> assertAckMatchesDispatched(PrefetchSubscription.java:482)
>                 at
> org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(
> PrefetchSubscription.java:214)
>                 at
> org.apache.activemq.broker.region.AbstractRegion.
> acknowledge(AbstractRegion.java:426)
>                 at
> org.apache.activemq.broker.region.RegionBroker.
> acknowledge(RegionBroker.java:408)
>                 at
> org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77)
>                 at
> org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77)
>                 at
> org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77)
>                 at
> org.apache.activemq.broker.TransactionBroker.acknowledge(
> TransactionBroker.java:287)
>                 at
> org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77)
>                 at
> org.apache.activemq.broker.MutableBrokerFilter.acknowledge(
> MutableBrokerFilter.java:87)
>                 at
> org.apache.activemq.broker.TransportConnection.processMessageAck(
> TransportConnection.java:508)
>                 at
> org.apache.activemq.command.MessageAck.visit(MessageAck.java:236)
>                 at
> org.apache.activemq.broker.TransportConnection.service(
> TransportConnection.java:329)
>                 at
> org.apache.activemq.broker.TransportConnection$1.
> onCommand(TransportConnection.java:184)
>                 at
> org.apache.activemq.transport.MutexTransport.onCommand(
> MutexTransport.java:50)
>                 at
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(
> WireFormatNegotiator.java:113)
>                 at
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(
> AbstractInactivityMonitor.java:288)
>                 at
> org.apache.activemq.transport.TransportSupport.doConsume(
> TransportSupport.java:83)
>                 at
> org.apache.activemq.transport.tcp.TcpTransport.doRun(
> TcpTransport.java:214)
>                 at
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
>                 at java.lang.Thread.run(Unknown Source)
>
> My Probelm is know that it seems that the incoming Message would not be
> acknowlodged at this time, the message would hold back in ActiveMQ (we use
> no dead letter Queue!) and would be send again some times later. So our
> Application receive the message at 2 times.
>
> We use ActiveMQ 5.8.0 on Windows distribution (32 bit).
> Our Transport Mode for ActiveMQ is SESSION_TRANSACTED so we commit every
> Message when they was arraived. This works the most time perfect, but
> sometimes we had this WARNING "Async error occurred" and we get some
> Messages doubles. Is it possible to solve this when we update to newer
> ActiveMQ maybe 5.12. or is it a problem with the transport Mode?
>
> Hope somebody can hel me...
>
>
>
>
> --
> Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-
> f2341805.html
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message