Rob, This is good news - I will try using last nights snapshot.
I started out using AMQMessageStore, but I've never had good performance luck with AMQs Journal - it always seems to have this frequent, high CPU cost as it checkpoints. Our Durable rate requirements are fairly significant, such as a few hundred events per second to a handful of consumers, on one of our clusters. It has not performed well, whereas Kaha by itself is excellent. Kevin rajdavies wrote: > > > On 14 Apr 2008, at 14:07, yaussy wrote: > >> >> I have not been able to reproduce this problem outside of our >> application, >> but I'm still trying. >> >> Anyway, I'm using regular Kaha persistence (not AMQMessageStore), >> and during >> a Durable Topic test, I'm eventually getting the following exception >> in the >> AMQBroker, after which the broker stops forwarding events to the >> consumer. >> >> Anyone seen this? >> >> >> < >> org >> .apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch> >> <Thread[ActiveMQ Transport: tcp:///127.0.0.1:43595,4,main]> Failed >> to fill >> batch >> Stack Trace follows: >> java.lang.RuntimeException: Failed to get next index from >> IndexManager:(index-topic-subs) for offset=7681977, key=(2, >> 20080006, 47), >> value=(2, 20080058, 165), previousItem=7681212, nextItem=7682895 >> at >> org >> .apache >> .activemq >> .kaha >> .impl >> .index.DiskIndexLinkedList.getNextEntry(DiskIndexLinkedList.java:267) >> at >> org >> .apache >> .activemq >> .kaha.impl.container.MapContainerImpl.getNext(MapContainerImpl.java: >> 449) >> at >> org >> .apache >> .activemq >> .store >> .kahadaptor.TopicSubContainer.getNextEntry(TopicSubContainer.java:95) >> at >> org >> .apache >> .activemq >> .store >> .kahadaptor >> .KahaTopicMessageStore >> .recoverNextMessages(KahaTopicMessageStore.java:165) >> at >> org >> .apache >> .activemq >> .store >> .ProxyTopicMessageStore >> .recoverNextMessages(ProxyTopicMessageStore.java:97) >> at >> org >> .apache >> .activemq >> .broker >> .region >> .cursors.TopicStorePrefetch.doFillBatch(TopicStorePrefetch.java:107) >> at >> org >> .apache >> .activemq >> .broker >> .region >> .cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:188) >> at >> org >> .apache >> .activemq >> .broker >> .region.cursors.AbstractStoreCursor.hasNext(AbstractStoreCursor.java: >> 104) >> at >> org >> .apache >> .activemq >> .broker >> .region >> .cursors >> .StoreDurableSubscriberCursor >> .hasNext(StoreDurableSubscriberCursor.java:210 >> ) >> at >> org >> .apache >> .activemq >> .broker >> .region >> .PrefetchSubscription.dispatchPending(PrefetchSubscription.java:479) >> at >> org >> .apache >> .activemq >> .broker >> .region.PrefetchSubscription.acknowledge(PrefetchSubscription.java: >> 357) >> at >> org >> .apache >> .activemq >> .broker.region.AbstractRegion.acknowledge(AbstractRegion.java:349) >> at >> org >> .apache >> .activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java: >> 474) >> at >> org >> .apache >> .activemq >> .broker.TransactionBroker.acknowledge(TransactionBroker.java:194) >> at >> org >> .apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73) >> at >> org >> .apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73) >> at >> org >> .apache >> .activemq >> .broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:84) >> at >> org >> .apache >> .activemq >> .broker >> .TransportConnection.processMessageAck(TransportConnection.java:444) >> at >> org.apache.activemq.command.MessageAck.visit(MessageAck.java:196) >> at >> org >> .apache >> .activemq >> .broker.TransportConnection.service(TransportConnection.java:293) >> at >> org.apache.activemq.broker.TransportConnection >> $1.onCommand(TransportConnection.java:181) >> at >> org >> .apache >> .activemq.transport.TransportFilter.onCommand(TransportFilter.java:68) >> at >> org >> .apache >> .activemq >> .transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java: >> 143) >> at >> org >> .apache >> .activemq >> .transport.InactivityMonitor.onCommand(InactivityMonitor.java:206) >> at >> org >> .apache >> .activemq.transport.TransportSupport.doConsume(TransportSupport.java: >> 84) >> at >> org >> .apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java: >> 196) >> at >> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java: >> 183) >> at java.lang.Thread.run(Thread.java:619) >> Caused by: java.io.EOFException >> at java.io.RandomAccessFile.readFully(RandomAccessFile.java: >> 383) >> at java.io.RandomAccessFile.readFully(RandomAccessFile.java: >> 361) >> at >> org >> .apache >> .activemq >> .kaha.impl.index.StoreIndexReader.readItem(StoreIndexReader.java:46) >> at >> org >> .apache >> .activemq.kaha.impl.index.IndexManager.getIndex(IndexManager.java:66) >> at >> org >> .apache >> .activemq >> .kaha >> .impl >> .index.DiskIndexLinkedList.getNextEntry(DiskIndexLinkedList.java:265) >> ... 27 more >> >> -- >> View this message in context: >> http://www.nabble.com/Kaha-persistence-issue-w-5.1-%28upto-4-8-SNAPSHOT%29-tp16677512s2354p16677512.html >> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >> > > There was a bug fixed in this area last Friday - would be interested > if this is still a problem for you with a later version? > If it is - Ill digg a little deeper. > > btw - why are you using Kaha instead of AMQStore ? > > > > > cheers, > > Rob > > http://open.iona.com/ -Enterprise Open Integration > http://rajdavies.blogspot.com/ > > > > > -- View this message in context: http://www.nabble.com/Kaha-persistence-issue-w-5.1-%28upto-4-8-SNAPSHOT%29-tp16677512s2354p16700153.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.