[
https://issues.apache.org/jira/browse/AMQ-4943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13852920#comment-13852920
]
Gary Tully commented on AMQ-4943:
---------------------------------
with large queue depths like you have, there will be an impact on
startup as each journal data file will need to be read to verify batch
checksums. So multiple random reads per data file. So the restart
impact will be significant if IO random read performance is low.
the runtime overhead is minimal - generating an alder32 check on an
~8k buffer in memory.
--
http://redhat.com
http://blog.garytully.com
> Corrupted KahaDB store: java.lang.NegativeArraySizeException
> ------------------------------------------------------------
>
> Key: AMQ-4943
> URL: https://issues.apache.org/jira/browse/AMQ-4943
> Project: ActiveMQ
> Issue Type: Bug
> Environment: activemq-5.5.1-fuse-10-16
> Reporter: Lionel Cons
> Priority: Critical
>
> One of our brokers went crazy and logged _many_ exceptions looking like this:
> 2013-12-19 12:27:09,007 [BrokerService[foobar] Task-13] ERROR
> AbstractStoreCursor -
> org.apache.activemq.broker.region.cursors.QueueStorePrefetch@654e3615:Consumer.prod.whatever,batchResetNeeded=false,storeHasMessages=true,size=2461725,cacheEnabled=false,maxBatchSize:200
> - Failed to fill batch
> java.lang.RuntimeException: java.io.IOException: Invalid location: 43153:28,
> : java.lang.NegativeArraySizeException
> at
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:277)
> at
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:110)
> at
> org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:157)
> at
> org.apache.activemq.broker.region.Queue.doPageInForDispatch(Queue.java:1746)
> at
> org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1962)
> at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1470)
> at
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
> at
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: java.io.IOException: Invalid location: 43153:28, :
> java.lang.NegativeArraySizeException
> at
> 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:908)
> at
> org.apache.activemq.store.kahadb.KahaDBStore.loadMessage(KahaDBStore.java:1024)
> at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore$4.execute(KahaDBStore.java:552)
> at org.apache.kahadb.page.Transaction.execute(Transaction.java:771)
> at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore.recoverNextMessages(KahaDBStore.java:541)
> 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:274)
> ... 10 more
> 2013-12-19 12:27:09,007 [BrokerService[foobar] Task-13] ERROR Queue - Failed
> to page in more queue messages
> java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException:
> Invalid location: 43153:28, : java.lang.NegativeArraySizeException
> at
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:113)
> at
> org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:157)
> at
> org.apache.activemq.broker.region.Queue.doPageInForDispatch(Queue.java:1746)
> at
> org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1962)
> at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1470)
> at
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
> at
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.RuntimeException: java.io.IOException: Invalid location:
> 43153:28, : java.lang.NegativeArraySizeException
> at
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:277)
> at
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:110)
> ... 9 more
> Caused by: java.io.IOException: Invalid location: 43153:28, :
> java.lang.NegativeArraySizeException
> at
> 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:908)
> at
> org.apache.activemq.store.kahadb.KahaDBStore.loadMessage(KahaDBStore.java:1024)
> at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore$4.execute(KahaDBStore.java:552)
> at org.apache.kahadb.page.Transaction.execute(Transaction.java:771)
> at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore.recoverNextMessages(KahaDBStore.java:541)
> 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:274)
> A restart did not hep, the KahaDB stores is corrupted :-(
--
This message was sent by Atlassian JIRA
(v6.1.4#6159)