Uploaded image for project: 'ActiveMQ Artemis'
  1. ActiveMQ Artemis
  2. ARTEMIS-2459

Fix err in the replacement of a non-destructively consumed LVQ message

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.9.0
    • 2.10.0
    • Broker
    • None

    Description

      The issue was reported by users, see http://activemq.2283324.n4.nabble.com/AMQ-224038-on-Last-Value-Queue-td4751400.html#a4751422.

      Protection steps are below:
      1. First send a message.
      2. Then receive the message. The key point is here: We ack this message and delete the message so the record is removed in "records" map.
      3. Last send another message. 
      Then exception thrown on broker side:
      [Thread-13 (ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$6@77a57272)] 15:01:06,990 ERROR [org.apache.activemq.artemis.core.server] AMQ224038: Failed to ack old reference: java.lang.IllegalStateException: Cannot find add info 446 on compactor or current records
      at org.apache.activemq.artemis.core.journal.impl.JournalImpl.checkKnownRecordID(JournalImpl.java:1081) [:]
      at org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendUpdateRecord(JournalImpl.java:888) [:]
      at org.apache.activemq.artemis.core.journal.Journal.appendUpdateRecord(Journal.java:98) [:]
      at org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.storeAcknowledge(AbstractJournalStorageManager.java:425) [:]
      at org.apache.activemq.artemis.core.server.impl.QueueImpl.acknowledge(QueueImpl.java:1539) [:]
      at org.apache.activemq.artemis.core.server.impl.LastValueQueue.acknowledge(LastValueQueue.java:193) [:]
      at org.apache.activemq.artemis.core.server.impl.MessageReferenceImpl.acknowledge(MessageReferenceImpl.java:235) [:]
      at org.apache.activemq.artemis.core.server.impl.LastValueQueue.replaceLVQMessage(LastValueQueue.java:172) [:]
      at org.apache.activemq.artemis.core.server.impl.LastValueQueue.addTail(LastValueQueue.java:107) [:]
      at org.apache.activemq.artemis.core.server.impl.RoutingContextImpl.internalprocessReferences(RoutingContextImpl.java:164) [:]
      at org.apache.activemq.artemis.core.server.impl.RoutingContextImpl.processReferences(RoutingContextImpl.java:159) [:]
      at org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl$2.done(PostOfficeImpl.java:1378) [:]
      at org.apache.activemq.artemis.core.persistence.impl.journal.OperationContextImpl$1.run(OperationContextImpl.java:244) [:]
      at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) [:]
      at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) [:]
      at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66) [:]
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_102]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_102]
      at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [:]
       

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              wy96f Wei Yang
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1.5h
                  1.5h