Ilkka Virolainen created ARTEMIS-1889:
-----------------------------------------

             Summary: Replication Failure During Compacting
                 Key: ARTEMIS-1889
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1889
             Project: ActiveMQ Artemis
          Issue Type: Bug
          Components: Broker
    Affects Versions: 2.6.0, 2.5.0
         Environment: RHEL 6.2, Windows 7
            Reporter: Ilkka Virolainen


It is possible for the broker to corrupt its journal during operations and 
subsequently fail replication when configured as a replicating master/slave 
pair. Exceptions on master node:

 
{noformat}
15:00:18,074 ERROR [org.apache.activemq.artemis.core.server] AMQ224016: Caught 
exception:
ActiveMQIllegalStateException[errorType=ILLEGAL_STATE message=AMQ119028: 
Consumer 0 doesn't
exist on the server]
        at 
org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.findConsumer(ServerSessionImpl.java:889)
[artemis-server-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.acknowledge(ServerSessionImpl.java:858)
[artemis-server-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.core.protocol.core.ServerSessionPacketHandler.onSessionAcknowledge(ServerSessionPacketHandler.java:632)
[artemis-server-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.core.protocol.core.ServerSessionPacketHandler.onMessagePacket(ServerSessionPacketHandler.java:268)
[artemis-server-2.5.0.jar:2.5.0]
        at org.apache.activemq.artemis.utils.actors.Actor.doTask(Actor.java:33) 
[artemis-commons-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66)
[artemis-commons-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
[artemis-commons-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
[artemis-commons-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66)
[artemis-commons-2.5.0.jar:2.5.0]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[rt.jar:1.8.0_162]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[rt.jar:1.8.0_162]
        at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
[artemis-commons-2.5.0.jar:2.5.0]

{noformat}
 

After this both master and slave log these errors:

 
{noformat}
20:54:15,063 WARN  [org.apache.activemq.artemis.journal] AMQ142032: Error 
reading journal
file: java.lang.IllegalStateException: Inconsistency during compacting: 
RollbackRecord ID
= 4452580183 for an already rolled back transaction during compacting
        at 
org.apache.activemq.artemis.core.journal.impl.JournalCompactor.onReadRollbackRecord(JournalCompactor.java:349)
[artemis-journal-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.core.journal.impl.JournalImpl.readJournalFile(JournalImpl.java:733)
[artemis-journal-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.core.journal.impl.JournalImpl.compact(JournalImpl.java:1566)
[artemis-journal-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.core.journal.impl.JournalImpl$14.run(JournalImpl.java:2111)
[artemis-journal-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
[artemis-commons-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
[artemis-commons-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66)
[artemis-commons-2.5.0.jar:2.5.0]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[rt.jar:1.8.0_162]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[rt.jar:1.8.0_162]
        at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
[artemis-commons-2.5.0.jar:2.5.0]

20:54:15,067 WARN  [org.apache.activemq.artemis.journal] AMQ142011: Error on 
reading compacting
for JournalFileImpl: (activemq-data-259.amq id = 355, recordID = 355)
20:54:15,104 ERROR [org.apache.activemq.artemis.journal] AMQ144003: Error 
compacting: java.lang.Exception:
Error on reading compacting for JournalFileImpl: (activemq-data-259.amq id = 
355, recordID
= 355)
        at 
org.apache.activemq.artemis.core.journal.impl.JournalImpl.compact(JournalImpl.java:1569)
[artemis-journal-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.core.journal.impl.JournalImpl$14.run(JournalImpl.java:2111)
[artemis-journal-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
[artemis-commons-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
[artemis-commons-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66)
[artemis-commons-2.5.0.jar:2.5.0]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[rt.jar:1.8.0_162]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[rt.jar:1.8.0_162]
        at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
[artemis-commons-2.5.0.jar:2.5.0]
Caused by: java.lang.Exception: Inconsistency during compacting: RollbackRecord 
ID = 4452580183
for an already rolled back transaction during compacting
        at 
org.apache.activemq.artemis.core.journal.impl.JournalImpl.readJournalFile(JournalImpl.java:761)
[artemis-journal-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.core.journal.impl.JournalImpl.compact(JournalImpl.java:1566)
[artemis-journal-2.5.0.jar:2.5.0]
        ... 7 more
Caused by: java.lang.IllegalStateException: Inconsistency during compacting: 
RollbackRecord
ID = 4452580183 for an already rolled back transaction during compacting
        at 
org.apache.activemq.artemis.core.journal.impl.JournalCompactor.onReadRollbackRecord(JournalCompactor.java:349)
[artemis-journal-2.5.0.jar:2.5.0]
        at 
org.apache.activemq.artemis.core.journal.impl.JournalImpl.readJournalFile(JournalImpl.java:733)
[artemis-journal-2.5.0.jar:2.5.0]
        ... 8 more{noformat}
 

This results in HA not working. Restarting the broker logs:
{noformat}
08:58:28,608 WARN  [org.apache.activemq.artemis.core.server] AMQ222013: Error 
when trying
to start replication: java.lang.RuntimeException: Error during compact, look at 
the logs
                             at 
org.apache.activemq.artemis.core.journal.impl.JournalImpl.scheduleCompactAndBlock(JournalImpl.java:1481)
[artemis-journal-2.5.0.jar:2.5.0]
                             at 
org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager.startReplication(JournalStorageManager.java:553)
[artemis-server-2.5.0.jar:2.5.0]
                             at 
org.apache.activemq.artemis.core.server.impl.SharedNothingLiveActivation$2.run(SharedNothingLiveActivation.java:178)
[artemis-server-2.5.0.jar:2.5.0]
                             at java.lang.Thread.run(Thread.java:748) 
[rt.jar:1.8.0_162]{noformat}
 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to