Arunlal A created AMQ-8105:
------------------------------

             Summary: ActiveMQ stopped suddenly due to corrupted KahaDB journal 
file 
                 Key: AMQ-8105
                 URL: https://issues.apache.org/jira/browse/AMQ-8105
             Project: ActiveMQ
          Issue Type: Bug
          Components: KahaDB
    Affects Versions: 5.15.2
            Reporter: Arunlal A


We recently faced in issue on our production ActiveMQ cluster. The ActiveMQ 
process stopped suddenly with "Failed to load message at" KahaDB journal file. 

+*Cluster details*+

*ActiveMQ version:* activemq-5.9.1-2.el7.noarch

*OS:* CentOS Linux release 7.4.1708 (Core

*Cluster:* Active Passive (2 nodes)

*Persistent storage:* KahaDB (default configurations). KahaDB directory is on 
NFS shared mount.
{code:java}
<persistenceAdapter>
 <kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>{code}
 

Issue noticed from ActiveMQ log.
 * The AMQ process tried to clear the journal log. Cleared.
 * The AMQ tried to delete the journal file (3 journals in our case). Seems 
it's not deleted.
 * AMQ failed, it's trying to load the journal that it deleted. 
 * Stopped broker.
 * Automatically trying to restart/recover and failed. 

*Adding the logs here for more details*

*Section 1:* Cleaning journal file 67481Section 1: Cleaning journal file 67481
{code:java}
2020-12-16 22:51:34,759 | DEBUG | Cleanup removing the data files: [67481] | 
org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint 
Worker2020-12-16 22:51:34,759 | DEBUG | Checkpoint started. | 
org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint 
Worker{code}

*Section 2:* Deleting data file 67481
{code:java}
2020-12-16 22:51:35,200 | DEBUG | Deleting data file: db-67481.log number = 
67481 , length = 33554432 | 
org.apache.activemq.store.kahadb.disk.journal.Journal | ActiveMQ Journal 
Checkpoint Worker2020-12-16 22:51:35,202 | DEBUG | Discarded data file: 
db-67481.log number = 67481 , length = 33554432 | 
org.apache.activemq.store.kahadb.disk.journal.Journal | ActiveMQ Journal 
Checkpoint Worker{code}

It's not deleted, it seems. The following journal files were there on the 
server with zero size:
{code:java}
-rw-r--r--  1 nobody nobody         0 Dec 16 08:26 db-67459.log-rw-r--r--  1 
nobody nobody         0 Dec 16 22:26 db-67480.log-rw-r--r--  1 nobody nobody    
     0 Dec 16 23:09 db-67481.log{code}

*Section 3:* Error on AMQ. Reason: failed to load journal file 67459. Assuming 
that this file also cleaned up as same as in section 1. [The old log were 
rotated on the server.]
{code:java}
2020-12-16 22:51:35,342 | ERROR | Failed to load message at: 67459:30059414 | 
org.apache.activemq.store.kahadb.KahaDBStore | ActiveMQ Broker[localhost] 
Schedulerjava.io.IOException: Unexpected error on journal read at: 
67459:30059414 at 
org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:28) 
at 
org.apache.activemq.store.kahadb.KahaDBStore.loadMessage(KahaDBStore.java:1260) 
at 
org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore$4.execute(KahaDBStore.java:594)
 at 
org.apache.activemq.store.kahadb.disk.page.Transaction.execute(Transaction.java:779)
 at 
org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore.recoverNextMessages(KahaDBStore.java:583)
 at 
org.apache.activemq.store.ProxyMessageStore.recoverNextMessages(ProxyMessageStore.java:110)
 at 
org.apache.activemq.broker.region.cursors.QueueStorePrefetch.doFillBatch(QueueStorePrefetch.java:127)
 at 
org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:448)
 at 
org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:168)
 at 
org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:169)
 at 
org.apache.activemq.broker.region.Queue.doPageInForDispatch(Queue.java:1981) at 
org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:2210) at 
org.apache.activemq.broker.region.Queue.doBrowse(Queue.java:1155) at 
org.apache.activemq.broker.region.Queue.expireMessages(Queue.java:932) at 
org.apache.activemq.broker.region.Queue.access$100(Queue.java:106) at 
org.apache.activemq.broker.region.Queue$2.run(Queue.java:149) at 
org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33) 
at java.util.TimerThread.mainLoop(Timer.java:555) at 
java.util.TimerThread.run(Timer.java:505)Caused by: java.io.IOException: 
Invalid location size: 67459:30059414, size: 1843 at 
org.apache.activemq.store.kahadb.disk.journal.DataFileAccessor.readRecord(DataFileAccessor.java:88)
 at 
org.apache.activemq.store.kahadb.disk.journal.Journal.read(Journal.java:950) at 
org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:1151)
 at 
org.apache.activemq.store.kahadb.KahaDBStore.loadMessage(KahaDBStore.java:1242){code}
*Section 4:* Stopping broker.
{code:java}
2020-12-16 22:51:35,343 | INFO  | Stopping BrokerService[localhost] due to 
exception, java.io.IOException: Unexpected error on journal read at: 
67459:30059414 | org.apache.activemq.util.DefaultIOExceptionHandler | ActiveMQ 
Broker[localhost] Schedulerjava.io.IOException: Unexpected error on journal 
read at: 67459:30059414
Caused by: java.io.IOException: Invalid location size: 67459:30059414, size: 
1843
2020-12-16 22:51:35,345 | ERROR | 
org.apache.activemq.broker.region.cursors.QueueStorePrefetch@20307b25:REMINDERS_QUEUE,batchResetNeeded=false,size=46,cacheEnabled=false,maxBatchSize:46,hasSpace:true,pendingCachedIds.size:0,lastSyncCachedId:null,lastSyncCachedId-seq:null,lastAsyncCachedId:null,lastAsyncCachedId-seq:null,store=permits:10000,sd=nextSeq:55349190,lastRet:MessageOrderCursor:[def:0,
 low:0, high:0],pending:0 - Failed to fill batch | 
org.apache.activemq.broker.region.cursors.AbstractStoreCursor | ActiveMQ 
Broker[localhost] Schedulerorg.apache.activemq.broker.SuppressReplyException: 
ShutdownBrokerInitiated{code}
*Section 5*: Then it stopped Broker 
{code:java}
2020-12-16 22:51:36,548 | DEBUG | stopping 
qtp1166106620{STARTED,8<=8<=200,i=8,q=0} | 
org.eclipse.jetty.util.component.AbstractLifeCycle | IOExceptionHandler: 
stopping BrokerService[localhost]2020-12-16 22:51:36,552 | DEBUG | STOPPED 
qtp1166106620{STOPPED,8<=8<=200,i=0,q=0} | 
org.eclipse.jetty.util.component.AbstractLifeCycle | IOExceptionHandler: 
stopping BrokerService[localhost]2020-12-16 22:51:36,553 | DEBUG | STOPPED 
org.eclipse.jetty.server.Server@5e1fa5b1 | 
org.eclipse.jetty.util.component.AbstractLifeCycle | IOExceptionHandler: 
stopping ````
Section 6: Trying to load KahaDB again - Seems starting AMQ again. Failed at 
loading journal 67481.{code}
This was cleaned in early. See section 1.
{code:java}
2020-12-16 22:51:37,577 | DEBUG | loading | 
org.apache.activemq.store.kahadb.disk.index.BTreeIndex | main2020-12-16 
22:51:37,578 | DEBUG | loading | 
org.apache.activemq.store.kahadb.disk.index.ListIndex | main2020-12-16 
22:51:37,578 | DEBUG | loading | 
org.apache.activemq.store.kahadb.disk.index.ListIndex | main2020-12-16 
22:51:37,579 | ERROR | Looking for key 67481 but not found in fileMap: 
{67395=db-67395.log number = 67395 , length = 33554432, 67459=db-67459.log 
number = 67459 , length = 0, 67397=db-67397.log number = 67397 , length = 
33554432, 67461=db-67461.log number = 67461 , length = 33554432, 
67463=db-67463.log number = 67463 , length = 33554432, 67465=db-67465.log 
number = 67465 , length = 33554432, 67467=db-67467.log number = 67467 , length 
= 33554432, 67469=db-67469.log number = 67469 , length = 33554432, 
67471=db-67471.log number = 67471 , length = 33554432, 67473=db-67473.log 
number = 67473 , length = 33554432, 67411=db-67411.log number = 67411 , length 
= 33554432, 67348=db-67348.log number = 67348 , length = 33554432, 
67353=db-67353.log number = 67353 , length = 33554432, 67480=db-67480.log 
number = 67480 , length = 0, 67354=db-67354.log number = 67354 , length = 
33554432, 67482=db-67482.log number = 67482 , length = 627205, 
67423=db-67423.log number = 67423 , length = 33554432, 67425=db-67425.log 
number = 67425 , length = 33553724, 67363=db-67363.log number = 67363 , length 
= 33554432, 67362=db-67362.log number = 67362 , length = 33554432, 
67373=db-67373.log number = 67373 , length = 33554432, 54190=db-54190.log 
number = 54190 , length = 33554445, 67377=db-67377.log number = 67377 , length 
= 33554432, 67376=db-67376.log number = 67376 , length = 33554432, 
67317=db-67317.log number = 67317 , length = 33554432, 67380=db-67380.log 
number = 67380 , length = 33554432, 67382=db-67382.log number = 67382 , length 
= 33554448, 67318=db-67318.log number = 67318 , length = 33554432, 
67320=db-67320.log number = 67320 , length = 33554432, 67384=db-67384.log 
number = 67384 , length = 33554432, 53946=db-53946.log number = 53946 , length 
= 33554432, 67322=db-67322.log number = 67322 , length = 33554432} | 
org.apache.activemq.store.kahadb.disk.journal.Journal | main2020-12-16 
22:51:37,580 | WARN  | Cannot recover message audit | 
org.apache.activemq.store.kahadb.MessageDatabase | mainjava.io.IOException: 
Could not locate data file /opt/apache-activemq-5.15.2/data/kahadb/db-67481.log 
at 
org.apache.activemq.store.kahadb.disk.journal.Journal.getDataFile(Journal.java:725)
 at org.apache.activemq.store.kahadb.disk.journal.Journal.read(Journal.java:946)

2020-12-16 22:51:38,049 | WARN  | Exception encountered during context 
initialization - cancelling refresh attempt: 
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'org.apache.activemq.xbean.XBeanBrokerService#0' defined in class 
path resource [activemq.xml]: Invocation of init method failed; nested 
exception is java.io.IOException: Could not locate data file 
/opt/apache-activemq-5.15.2/data/kahadb/db-67481.log | 
org.apache.activemq.xbean.XBeanBrokerFactory$1 | main
{code}
 


This file was there on the server. But no contents in that file. See section 3.

*Section 7*: trying to recover 

 
{code:java}
2020-12-16 23:21:01,116 | INFO  | ignoring zero length, partially initialised 
journal data file: db-67459.log number = 67459 , length = 0 | 
org.apache.activemq.store.kahadb.disk.journal.Journal | main2020-12-16 
23:21:01,116 | INFO  | ignoring zero length, partially initialised journal data 
file: db-67480.log number = 67480 , length = 0 | 
org.apache.activemq.store.kahadb.disk.journal.Journal | main2020-12-16 
23:21:01,116 | INFO  | ignoring zero length, partially initialised journal data 
file: db-67481.log number = 67481 , length = 0 | 
org.apache.activemq.store.kahadb.disk.journal.Journal | main2020-12-16 
23:21:01,212 | DEBUG | Page File: 
/opt/apache-activemq-5.15.2/data/kahadb/db.data, Recovering page file... | 
org.apache.activemq.store.kahadb.disk.page.PageFile | main2020-12-16 
23:21:14,191 | INFO  | KahaDB is version 6 | 
org.apache.activemq.store.kahadb.MessageDatabase | main2020-12-16 23:21:14,197 
| DEBUG | loading | org.apache.activemq.store.kahadb.disk.index.BTreeIndex | 
main2020-12-16 23:21:14,216 | DEBUG | loading | 
org.apache.activemq.store.kahadb.disk.index.BTreeIndex | 
main.....................................
.........................................
.........................................
................>>>>>>>


2020-12-16 23:21:14,351 | DEBUG | loading | 
org.apache.activemq.store.kahadb.disk.index.ListIndex | main2020-12-16 
23:21:14,351 | DEBUG | loading | 
org.apache.activemq.store.kahadb.disk.index.ListIndex | main2020-12-16 
23:21:14,360 | WARN  | Cannot recover message audit | 
org.apache.activemq.store.kahadb.MessageDatabase | mainjava.io.EOFException at 
java.io.RandomAccessFile.readInt(RandomAccessFile.java:803) at 
org.apache.activemq.util.RecoverableRandomAccessFile.readInt(RecoverableRandomAccessFile.java:169)
 at 
org.apache.activemq.store.kahadb.disk.journal.DataFileAccessor.readRecord(DataFileAccessor.java:82)
 at 
org.apache.activemq.store.kahadb.disk.journal.Journal.read(Journal.java:950) at 
org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:1151)
 at 
org.apache.activemq.store.kahadb.MessageDatabase.recoverProducerAudit(MessageDatabase.java:784)
 at 
org.apache.activemq.store.kahadb.MessageDatabase.recover(MessageDatabase.java:674)
 at 
org.apache.activemq.store.kahadb.MessageDatabase.open(MessageDatabase.java:473) 
at 
org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:493) 
at 
org.apache.activemq.store.kahadb.MessageDatabase.doStart(MessageDatabase.java:297)
 at org.apache.activemq.store.kahadb.KahaDBStore.doStart(KahaDBStore.java:219) 
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55) at 
org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter.doStart(KahaDBPersistenceAdapter.java:232)
 at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55) at 
org.apache.activemq.broker.BrokerService.doStartPersistenceAdapter(BrokerService.java:687)
 at 
org.apache.activemq.broker.BrokerService.startPersistenceAdapter(BrokerService.java:671)
 at org.apache.activemq.broker.BrokerService.start(BrokerService.java:635) at 
org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:73)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498) at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1758)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1695)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
 at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
 at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
 at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
 at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
 at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
 at 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
 at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
 at 
org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64)
 at 
org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52)
 at 
org.apache.activemq.xbean.XBeanBrokerFactory$1.<init>(XBeanBrokerFactory.java:104)
 at 
org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:104)
 at 
org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:67)
 at 
org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) at 
org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) at 
org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:87) 
at 
org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63)
 at 
org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:154) 
at 
org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63)
 at 
org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:104) at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498) at 
org.apache.activemq.console.Main.runTaskClass(Main.java:262) at 
org.apache.activemq.console.Main.main(Main.java:115)


2020-12-16 23:21:14,378 | WARN  | Cannot recover ackMessageFileMap | 
org.apache.activemq.store.kahadb.MessageDatabase | mainjava.io.EOFException at 
java.io.RandomAccessFile.readInt(RandomAccessFile.java:803) at 
org.apache.activemq.util.RecoverableRandomAccessFile.readInt(RecoverableRandomAccessFile.java:169)
 at 
org.apache.activemq.store.kahadb.disk.journal.DataFileAccessor.readRecord(DataFileAccessor.java:82)
 at 
org.apache.activemq.store.kahadb.disk.journal.Journal.read(Journal.java:950) at 
org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:1151)
 at 
org.apache.activemq.store.kahadb.MessageDatabase.recoverAckMessageFileMap(MessageDatabase.java:805)
 at 
org.apache.activemq.store.kahadb.MessageDatabase.recover(MessageDatabase.java:675)
 at 
org.apache.activemq.store.kahadb.MessageDatabase.open(MessageDatabase.java:473) 
at 
org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:493) 
at 
org.apache.activemq.store.kahadb.MessageDatabase.doStart(MessageDatabase.java:297)
 at org.apache.activemq.store.kahadb.KahaDBStore.doStart(KahaDBStore.java:219) 
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55) at 
org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter.doStart(KahaDBPersistenceAdapter.java:232)
 at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55) at 
org.apache.activemq.broker.BrokerService.doStartPersistenceAdapter(BrokerService.java:687)
 at 
org.apache.activemq.broker.BrokerService.startPersistenceAdapter(BrokerService.java:671)
 at org.apache.activemq.broker.BrokerService.start(BrokerService.java:635) at 
org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:73)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498) at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1758)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1695)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
 at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
 at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
 at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
 at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
 at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
 at 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
 at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
 at 
org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64)
 at 
org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52)
 at 
org.apache.activemq.xbean.XBeanBrokerFactory$1.<init>(XBeanBrokerFactory.java:104)
 at 
org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:104)
 at 
org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:67)
 at 
org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) at 
org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) at 
org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:87) 
at 
org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63)
 at 
org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:154) 
at 
org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63)
 at 
org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:104) at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498) at 
org.apache.activemq.console.Main.runTaskClass(Main.java:262) at 
org.apache.activemq.console.Main.main(Main.java:115)


2020-12-16 23:21:14,381 | ERROR | Failed to start Apache ActiveMQ (localhost, 
null) | org.apache.activemq.broker.BrokerService | 
mainjava.lang.NullPointerException at 
org.apache.activemq.store.kahadb.disk.util.LinkedNode.isTailNode(LinkedNode.java:68)
 at 
org.apache.activemq.store.kahadb.disk.util.LinkedNode.getNext(LinkedNode.java:48)
 at 
org.apache.activemq.store.kahadb.disk.journal.Journal.getNextLocation(Journal.java:901)
 at 
org.apache.activemq.store.kahadb.disk.journal.Journal.getNextLocation(Journal.java:865)
 at 
org.apache.activemq.store.kahadb.MessageDatabase.getNextInitializedLocation(MessageDatabase.java:1042)
 at 
org.apache.activemq.store.kahadb.MessageDatabase.getRecoveryPosition(MessageDatabase.java:1034)
 at 
org.apache.activemq.store.kahadb.MessageDatabase.recover(MessageDatabase.java:676)
 at 
org.apache.activemq.store.kahadb.MessageDatabase.open(MessageDatabase.java:473) 
at 
org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:493) 
at 
org.apache.activemq.store.kahadb.MessageDatabase.doStart(MessageDatabase.java:297)
 at org.apache.activemq.store.kahadb.KahaDBStore.doStart(KahaDBStore.java:219) 
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55) at 
org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter.doStart(KahaDBPersistenceAdapter.java:232)
 at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55) at 
org.apache.activemq.broker.BrokerService.doStartPersistenceAdapter(BrokerService.java:687)
 at 
org.apache.activemq.broker.BrokerService.startPersistenceAdapter(BrokerService.java:671)
 at org.apache.activemq.broker.BrokerService.start(BrokerService.java:635) at 
org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:73)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498) at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1758)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1695)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
 at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
 at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
 at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
 at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
 at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
 at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
 at 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
 at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
 at 
org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64)
 at 
org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52)
 at 
org.apache.activemq.xbean.XBeanBrokerFactory$1.<init>(XBeanBrokerFactory.java:104)
 at 
org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:104)
 at 
org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:67)
 at 
org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) at 
org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) at 
org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:87) 
at 
org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63)
 at 
org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:154) 
at 
org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63)
 at 
org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:104) at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498) at 
org.apache.activemq.console.Main.runTaskClass(Main.java:262) at 
org.apache.activemq.console.Main.main(Main.java:115)2020-12-16 23:21:14,393 | 
INFO  | Apache ActiveMQ 5.15.2 (localhost, null) is shutting down | 
org.apache.activemq.broker.BrokerService | main{code}

*Section 8:* Repeating same.

To fix we removed the KahaDB directory and recreated and then started the 
ActiveMQ process again on both the nodes. 

Can someone help me to understand the issue here, please ? Why AMQ were trying 
to load message from the journal that already removed. Those journals (3 in our 
case) were cleared but not deleted.
{code:java}
-rw-r--r-- 1 nobody nobody 0 Dec 16 08:26 db-67459.log
-rw-r--r-- 1 nobody nobody 0 Dec 16 22:26 db-67480.log
-rw-r--r-- 1 nobody nobody 0 Dec 16 23:09 db-67481.log{code}
*System resources analysis*
 * Have done analysis on both AMQ nodes + the NFS cluster (KahaDB data dir is 
on NFS mount). Nothing found suspicious there (Prometheus Node Exporter).
 * JMX metrics also looks fine. Heap usage was normal. Disk usage was low (1.5 
GB). Queue size was also normal.

 Is there any bug in this version. 

Future plan: We are planning to containerise ActiveMQ with the same version. So 
please help me to understand the issue.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to