[
https://issues.apache.org/jira/browse/ARTEMIS-2459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
clebert suconic reopened ARTEMIS-2459:
--------------------------------------
> Fix err in the replacement of a non-destructively consumed LVQ message
> ----------------------------------------------------------------------
>
> Key: ARTEMIS-2459
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2459
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: Broker
> Affects Versions: 2.9.0
> Reporter: yangwei
> Priority: Major
> Fix For: 2.10.0
>
> Time Spent: 1.5h
> Remaining Estimate: 0h
>
> The issue was reported by users, see
> [http://activemq.2283324.n4.nabble.com/AMQ-224038-on-Last-Value-Queue-td4751400.html#a4751422.|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)
> [:]
>
--
This message was sent by Atlassian Jira
(v8.3.2#803003)