Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-6847

Immediate poison ACK after move from DLQ leads to message loss

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.14.5, 5.15.2
    • 5.14.6, 5.15.3, 5.16.0
    • None
    • None

    Description

      Setup

      • setMaximumRedeliveries(0)
      • Throw RuntimeException (Poison ACK) in consumer directly after receiving message

      Scenario

      • Move message from DLQ to original input queue (either web console or JMX retryMessages)
      • Processing of message fails again directly
      • The message is considered to be still on the DLQ on the rejection and ActiveMQ logs "Not adding duplicate to DLQ"

      Introducing a delay before throwing the exception in the client will get around the issue.

      I initially noticed the issue when using an AMQP reject (Apache Qpid Proton) after which I reproduced similar conditions (instant poison ACK) it with the JMS client. The attached Java app will reproduce the issue on 5.14.5 and 5.15.2.

      Might be related to AMQ-5752.

      2017-10-24 13:38:11,275 | DEBUG | Not adding duplicate to DLQ: ID:xxx-32848-1508845049112-6:1:1:1:1, dest: queue://TEST | org.apache.activemq.broker.region.policy.AbstractDeadLetterStrategy | ActiveMQ Transport: tcp:///127.0.0.1:36360@61616

      Attachments

        1. FailingReceiver.java
          2 kB
          Alvin Kwekel
        2. dlq-redelivery-issue.tar.gz
          2 kB
          Alvin Kwekel

        Activity

          People

            gtully Gary Tully
            alvinkwekel@gmail.com Alvin Kwekel
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: