Active MQ KahaDB Invalid location
来源:互联网 发布:菲律宾网络彩票合法吗 编辑:程序博客网 时间:2024/05/16 17:41
0. Environment
OS: CentOS 5.4
Active MQ: 5.5.1
Active MQ configuration:
</pre><p><pre name="code" class="html"><persistenceAdapter> <kahaDB directory="${activemq.base}/data/kahadb"/></persistenceAdapter>
<transportConnectors> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/> </transportConnectors>
1. Problem Description
Pending messages in queue cannot be consumed and we can't delete data in Active MQ administration page.
In our production back end, we encountered this exception:
2015-01-19 12:39:43,813 | ERROR | QueueStorePrefetch383867497 - Failed to fill batch | org.apache.activemq.broker.region.cursors.AbstractStoreCursor | ActiveMQ Broker[localhost] Schedulerjava.lang.RuntimeException: java.io.IOException: Invalid location: 542164:30466873, : java.lang.NegativeArraySizeExceptionat org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:263)at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:108)at org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:157)at org.apache.activemq.broker.region.Queue.doBrowse(Queue.java:1028)at org.apache.activemq.broker.region.Queue.expireMessages(Queue.java:785)at org.apache.activemq.broker.region.Queue.access$100(Queue.java:84)at org.apache.activemq.broker.region.Queue$2.run(Queue.java:124)at org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)at java.util.TimerThread.mainLoop(Timer.java:512)at java.util.TimerThread.run(Timer.java:462)Caused by: java.io.IOException: Invalid location: 542164:30466873, : java.lang.NegativeArraySizeExceptionat org.apache.kahadb.journal.DataFileAccessor.readRecord(DataFileAccessor.java:94)at org.apache.kahadb.journal.Journal.read(Journal.java:601)at org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:817)at org.apache.activemq.store.kahadb.KahaDBStore.loadMessage(KahaDBStore.java:955)at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore$5.execute(KahaDBStore.java:493)at org.apache.kahadb.page.Transaction.execute(Transaction.java:728)at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore.recoverNextMessages(KahaDBStore.java:485)at org.apache.activemq.store.ProxyMessageStore.recoverNextMessages(ProxyMessageStore.java:88)at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.doFillBatch(QueueStorePrefetch.java:97)at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:260)... 9 more2015-01-19 12:39:43,813 | ERROR | Problem retrieving message for browse | org.apache.activemq.broker.region.Queue | ActiveMQ Broker[localhost] Schedulerjava.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException: Invalid location: 542164:30466873, : java.lang.NegativeArraySizeExceptionat org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:111)at org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:157)at org.apache.activemq.broker.region.Queue.doBrowse(Queue.java:1028)at org.apache.activemq.broker.region.Queue.expireMessages(Queue.java:785)at org.apache.activemq.broker.region.Queue.access$100(Queue.java:84)at org.apache.activemq.broker.region.Queue$2.run(Queue.java:124)at org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)at java.util.TimerThread.mainLoop(Timer.java:512)at java.util.TimerThread.run(Timer.java:462)Caused by: java.lang.RuntimeException: java.io.IOException: Invalid location: 542164:30466873, : java.lang.NegativeArraySizeExceptionat org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:263)at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:108)... 8 moreCaused by: java.io.IOException: Invalid location: 542164:30466873, : java.lang.NegativeArraySizeExceptionat org.apache.kahadb.journal.DataFileAccessor.readRecord(DataFileAccessor.java:94)at org.apache.kahadb.journal.Journal.read(Journal.java:601)at org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:817)at org.apache.activemq.store.kahadb.KahaDBStore.loadMessage(KahaDBStore.java:955)at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore$5.execute(KahaDBStore.java:493)at org.apache.kahadb.page.Transaction.execute(Transaction.java:728)at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore.recoverNextMessages(KahaDBStore.java:485)at org.apache.activemq.store.ProxyMessageStore.recoverNextMessages(ProxyMessageStore.java:88)at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.doFillBatch(QueueStorePrefetch.java:97)at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:260)... 9 more
2. Analysis
3. Workaround
Good suggestion from Reference 3:
ActiveMQ v5.5.1 Corrupt data log found recovery: Symptom: The ActiveMQ slave process died and will not restarted. Root Cause: Corrupt data log found Root Cause verification: Search the affected ActiveMQ log file for the following entries in sequence: Corrupt journal records found Failed to discard data file Failed to start ActiveMQ JMS Message Broker shutting down Recovery: Shutdown the ActiveMQ master instance. Rename the Kaha db storage file Restart the ActiveMQ Master and Slave instances Note: the journal data affected by the corruption will be lost. The affected journal data will need to be identify and resent to the ActiveMQ appropriate queue.
4. Solution
[1] http://activemq.apache.org/message-cursors.html
[2] https://issues.apache.org/jira/browse/AMQ-4943
[3] http://activemq.2283324.n4.nabble.com/KahaDB-corruption-td3321382.html
0 0
- Active MQ KahaDB Invalid location
- Active MQ
- Active MQ
- active MQ
- Active-MQ
- active mq
- ACTIVE MQ 的学习
- Active MQ 配置
- Active MQ使用
- Active MQ C#实现
- active mq 配置文件说明
- Active MQ学习总结
- active mq 简介
- active mq 入门实例
- active mq jndi实战
- jms服务器 , active MQ
- Active MQ使用场景
- Active MQ 使用
- actionbar去掉阴影
- HttpClient设置HTTP请求头Header
- [Android]Android的常用adb命令
- 【C#】 vs2010启动调试、停止调试非常慢
- OLE 常用方法和属性
- Active MQ KahaDB Invalid location
- JAVA复习笔记--------类(四)接口和抽象类
- 利用管道重定向标准输入输出流
- 专业知识点总结(补充版)
- UVA 10023 - Square root(手算平方根)
- js基础(2)
- Objectice-C之类层次结构
- gradle cache转为local Maven库,解决gradle编译依赖包时常被墙
- android系统发送短信息代码