You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "clebert suconic (Jira)" <ji...@apache.org> on 2019/08/26 15:45:02 UTC

[jira] [Closed] (ARTEMIS-2459) Fix err in the replacement of a non-destructively consumed LVQ message

     [ https://issues.apache.org/jira/browse/ARTEMIS-2459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

clebert suconic closed ARTEMIS-2459.
------------------------------------
    Fix Version/s: 2.10.0
       Resolution: Fixed

> 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)