Leaving my persistance settings to default I wanted to do some tests about
the behavior of the broker with lots of messages incoming when the consumer
is dead.

I am using a slow virtual machine and Tanukiwrapper, when Tanuki detects the
ActiveMQ VM is not responding it kills and restarts it - in effect it's a
test what would happen should a server just loose power and I'm quite
interested in knowing my persistent queues will be able to survive such a
power event.

It's my understanding that the Kaha store is specifically resilient to this
kind of crash/server death/VM crash but what I am seeing are exceptions
like:

2010-08-06 20:02:49,948 [erSimpleAppMain] ERROR BrokerService                 
- Failed to start ActiveMQ JMS Message Broker. Reason: java.io.EOFException:
Chunk stream does not exist at page: 0
java.io.EOFException: Chunk stream does not exist at page: 0
        at
org.apache.kahadb.page.Transaction$2.readPage(Transaction.java:454)
        at org.apache.kahadb.page.Transaction$2.<init>(Transaction.java:431)
        at
org.apache.kahadb.page.Transaction.openInputStream(Transaction.java:428)
        at org.apache.kahadb.page.Transaction.load(Transaction.java:404)
        at org.apache.kahadb.page.Transaction.load(Transaction.java:361)
        at
org.apache.activemq.store.kahadb.MessageDatabase$1.execute(MessageDatabase.java:233)
        at org.apache.kahadb.page.Transaction.execute(Transaction.java:728)
        at
org.apache.activemq.store.kahadb.MessageDatabase.loadPageFile(MessageDatabase.java:220)

2010-08-06 20:02:49,992 [erSimpleAppMain] ERROR KahaDBStore                   
- Could not stop service:
org.apache.activemq.store.kahadb.kahadbst...@2a869113. Reason: 
java.lang.NullPointerException
java.lang.NullPointerException
        at
org.apache.kahadb.page.Transaction.openOutputStream(Transaction.java:262)
        at org.apache.kahadb.page.Transaction.store(Transaction.java:247)
        at
org.apache.activemq.store.kahadb.MessageDatabase$5.execute(MessageDatabase.java:382)
        at org.apache.kahadb.page.Transaction.execute(Transaction.java:728)
        at
org.apache.activemq.store.kahadb.MessageDatabase.unload(MessageDatabase.java:380)



If I just delete all the data it comes back - but looses the data obviously.

Is Kaha the best storage system to use for persistence I was under the
impression that it's default enableJournalDiskSyncs should always keep the
journal updated and that a recovery will then be able to recover things. 
I'd even be happy if the in-flight transaction gets aborted but would be
really nice to be able to recover the bulk of a queue post power event.


-- 
View this message in context: 
http://old.nabble.com/Kaha-corruption-in-5.4-SNAPSHOT-tp29356482p29356482.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to