Gary Tully created AMQ-5703:
-------------------------------
Summary: kahadb - index recovery - corrupt journal records cannot
be skipped
Key: AMQ-5703
URL: https://issues.apache.org/jira/browse/AMQ-5703
Project: ActiveMQ
Issue Type: Bug
Components: KahaDB, Message Store
Affects Versions: 5.11.0
Reporter: Gary Tully
Assignee: Gary Tully
Fix For: 5.12.0
Working with some corrupt data stores - if corruption occurs in the middle of a
journal and the index needs to be rebuilt we get:{code}java.io.EOFException
at java.io.RandomAccessFile.readFully(RandomAccessFile.java:446)
at java.io.RandomAccessFile.readFully(RandomAccessFile.java:424)
at
org.apache.activemq.util.RecoverableRandomAccessFile.readFully(RecoverableRandomAccessFile.java:75)
at
org.apache.activemq.store.kahadb.disk.journal.DataFileAccessor.readRecord(DataFileAccessor.java:87)
at
org.apache.activemq.store.kahadb.disk.journal.Journal.read(Journal.java:641)
at
org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:1014)
at
org.apache.activemq.store.kahadb.MessageDatabase.recover(MessageDatabase.java:606)
at
org.apache.activemq.store.kahadb.MessageDatabase.open(MessageDatabase.java:400)
at
org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:418)
at
org.apache.activemq.store.kahadb.MessageDatabase.doStart(MessageDatabase.java:262)
at
org.apache.activemq.store.kahadb.KahaDBStore.doStart(KahaDBStore.java:206)
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55)
at
org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter.doStart(KahaDBPersistenceAdapter.java:223)
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55)
at
org.apache.activemq.broker.BrokerService.doStartPersistenceAdapter(BrokerService.java:652)
at
org.apache.activemq.broker.BrokerService.startPersistenceAdapter(BrokerService.java:641)
at
org.apache.activemq.broker.BrokerService.start(BrokerService.java:606){code}
attempting to read an invalid location. This stops further recovery and the
entire journal needs to be removed to progress.
We have already identified the corrupt record, we just need to skip it when we
replay.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)