[
https://issues.apache.org/jira/browse/AMQ-5324?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timothy Bish closed AMQ-5324.
-----------------------------
Resolution: Cannot Reproduce
No test case available to reproduce. Recommend that you try a later relase of
the broker to see if the problem still exists.
> JMSXDeliveryCount incremented unexpectedly after EOFException
> -------------------------------------------------------------
>
> Key: AMQ-5324
> URL: https://issues.apache.org/jira/browse/AMQ-5324
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.9.0
> Environment: jdk 1.7.0_45, atomikos 3.7.1, tomcat 7.0.26
> Reporter: Andy Hanton
>
> While testing recovery of my application after tomcat fails, I am seeing
> messages delivered with an unexpectedly high redelivery count after a a
> tomcat instance restarts. When tomcat stops, several transports receive an
> EOFException which causes the transports and the associated connections and
> consumers to stop. If any of the consumers had unacknowledged messages, the
> messages are immediately dispatched to another consumer. In some cases, the
> messages are dispatched to another consumer that is in the process of closing
> in response to one of the EOFExceptions. This dispatch fails and causes the
> redelivery count for the message to be incremented one or more times even
> though the consumer couldn't possibly deliver the message to the client
> because its tcp connection is already closed.
> My MessageListener is ignoring messages with a redelivery count of 4 or
> higher because the messages are expensive to process. In some cases,
> restarting the application server causes the message to be delivered a second
> time with a redelivery count of 4 instead of 2. I attempted to work around
> this problem by enabling the redelivery policy plugin, but the plugin does
> not appear to be invoked in this case.
> The problem is easiest to reproduce when at least three consumers are
> processing messages from a queue when tomcat is killed. While killing the
> application server in production is not ideal, it may be necessary if the
> application server hangs or runs out of memory. Other conditions such as a
> jvm crash or a networking failure would also produce a similar situation.
> While I understand that ensuring that messages are never delivered to
> consumers that are stopping might be difficult, I would expect a consumer to
> be marked as stopping within much less that a third of a second after its tcp
> connection closes. I would also expect that when the redelivery count of a
> message is incremented, the redelivery plugin would have a chance to delay
> the dispatch of the message based on the configured policy.
> Here are the log messages related to a message that is dispatched multiple
> times:
> 2014-08-19 15:49:54,024 | localhost adding consumer:
> ID:hostname-58095-1408405246656-1:10:114166:1 for destination
> queue://queueName | org.apache.activemq.broker.region.AbstractRegion |
> ActiveMQ Transport: tcp://xx.xx.xx.xx:59625@61616
> 2014-08-19 15:49:54,626 | ack MessageAck {commandId = 559437,
> responseRequired = false, ackType = 0, consumerId =
> ID:hostname-58095-1408405246656-1:10:114166:1, firstMessageId =
> ID:hostname-58095-1408405246656-1:8:114134:1:1, lastMessageId =
> ID:hostname-58095-1408405246656-1:8:114134:1:1, destination =
> queue://queueName, transactionId = XID:[...], messageCount = 1, poisonCause =
> null} | org.apache.activemq.broker.region.PrefetchSubscription | ActiveMQ
> Transport: tcp://xx.xx.xx.xx:59625@61616
> 2014-08-19 15:49:54,624 | ID:hostname-58095-1408405246656-1:10:114166:1
> dispatched: ID:hostname-58095-1408405246656-1:8:114134:1:1 -
> queue://queueName, dispatched: 1, inflight: 1 |
> org.apache.activemq.broker.region.PrefetchSubscription | ActiveMQ Connection
> Dispatcher: tcp://xx.xx.xx.xx:59625
> 2014-08-19 15:49:57,915 | localhost adding consumer:
> ID:hostname-58095-1408405246656-1:1:114032:1 for destination:
> queue://queueName | org.apache.activemq.broker.region.AbstractRetion |
> ActiveMQ Transport: tcp:///xx.xx.xx.xx:59607@61616
> 2014-08-19 15:49:58,291 | DEBUG | Transport Connection to:
> tcp://xx.xx.xx.xx:59607 failed: java.io.EOFException |
> org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ
> Transport: tcp://xx.xx.xx.xx:59607@61616
> 2014-08-19 15:49:58,293 | DEBUG | Transport Connection to:
> tcp://xx.xx.xx.xx:59625 failed: java.io.EOFException |
> org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ
> Transport: tcp://xx.xx.xx.xx:59625@61616
> 2014-08-19 15:49:58,370 | DEBUG | Stopping connection:
> tcp://xx.xx.xx.xx:59625 | org.apache.activemq.broker.TransportConnection |
> ActiveMQ BrokerService[localhost] Task-478
> 2014-08-19 15:49:58,430 | DEBUG | Stopped transport: tcp://xx.xx.xx.xx:59625
> | org.apache.activemq.broker.TransportConnection | ActiveMQ
> BrokerService[localhost] Task-478
> 2014-08-19 15:49:58,435 | DEBUG | Stopping connection:
> tcp://xx.xx.xx.xx:59607 | org.apache.activemq.broker.TransportConnection |
> ActiveMQ BrokerService[localhost] Task-487
> 2014-08-19 15:49:58,437 | DEBUG | Cleaning up connection resources:
> tcp://xx.xx.xx.xx:59625 | org.apache.activemq.broker.TransportConnection |
> ActiveMQ BrokerService[localhost] Task-478
> 2014-08-19 15:49:58,524 | DEBUG | Stopped transport: tcp://xx.xx.xx.xx:59607
> | org.apache.activemq.broker.TransportConnection | ActiveMQ
> BrokerService[localhost] Task-487
> 2014-08-19 15:49:58,543 | DEBUG | Cleaning up connection resources:
> tcp://xx.xx.xx.xx:59607 | org.apache.activemq.broker.TransportConnection |
> ActiveMQ Brokerwserice[localhost] Task-487
> 2014-08-19 15:49:58,874 | DEBUG | Connection Stopped: tcp://xx.xx.xx.xx:59625
> | org.apache.activemq.broker.TransportConnection | ActiveMQ
> BrokerService[localhost] Task-478
> 2014-08-19 15:49:59,264 | DEBUG | Connection Stopped: tcp://xx.xx.xx.xx:59607
> | org.apache.activemq.broker.TransportConnection | ActiveMQ
> BrokerService[localhost] Task-487
> 2014-08-19 15:49:58,492 | DEBUG | localhost removing consumer:
> ID:hostname-58095-1408405246656-1:10:114166:1 for destination:
> queue://queueName | org.apache.activemq.broker.region.AbstractRegion |
> ActiveMQ BrokerService[localhost] Task-478
> 2014-08-19 15:49:58,493 | DEBUG | queue://queueName remove sub:
> QueueSubscription: consumer=ID:hostname-58095-1408405246656-1:10:114166:1,
> destinations=1, dispatched=1, delivered=1, pending=0, lastDeliveredSeqId: 0,
> dequeues: 184, dispatched: 187, infligh: 3 |
> org.apache.activemq.broker.region.Queue | ActiveMQ BrokerService[localhost]
> Task-478
> 2014-08-19 15:49:58,604 | DEBUG | localhost removing consumer:
> ID:hostname-58095-1408405246656-1:1:114032:1 for destination:
> queue://queueName | org.apache.activemq.broker.region.AbstractRegion |
> ActiveMQ BrokerService[localhost] Task-487
> 2014-08-19 15:49:58,864 | TRACE |
> ID:hostname-58095-1408405246656-1:1:114032:1 failed to dispatch:
> ID:hostname-58095-1408405246656-1:8:114134:1:1 - queue://queueName,
> dispatched: 1, inflight: 1 |
> org.apache.activemq.broker.region.PrefetchSubscription | ActiveMQ
> BrokerService[localhost] Task-478
> 2014-08-19 15:49:58,966 | TRACE | Subscription full QueueSubscription:
> consumer=ID:hostname-58095-1408405246656-1:1:114032:1, destinations=1,
> dispatched=1, delivered=1, pending=0 |
> org.apache.activemq.broker.retgion.Queue | ActiveMQ BrokerService[localhost]
> Task-476
> 2014-08-19 15:49:58,978 | TRACE | Subscription full QueueSubscription:
> consumer=ID:hostname-58095-1408405246656-1:1:114032:1, destinations=1,
> dispatched=1, delivered=1, pending=0 |
> org.apache.activemq.broker.retgion.Queue | ActiveMQ BrokerService[localhost]
> Task-479
> 2014-08-19 15:49:59,175 | TRACE | Subscription full QueueSubscription:
> consumer=ID:hostname-58095-1408405246656-1:1:114032:1, destinations=1,
> dispatched=1, delivered=1, pending=0 |
> org.apache.activemq.broker.retgion.Queue | ActiveMQ BrokerService[localhost]
> Task-485
> 2014-08-19 15:49:59,176 | DEBUG | queue://queueName remove sub:
> QueueSubscription: consumer=ID:hostname-58095-1408405246656-1:1:114032:1,
> destinations=1, dispatched=1, delivered=1, pending=0, lastDeliveredSeqId: 0,
> dequeues: 184, dispatched: 185, inflight: 1 |
> org.apache.activemq.broker.region.Queue | ActiveMQ BrokerService[localhost]
> task-487
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)