Details
-
New Feature
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
5.5.0
Description
I am not sure why, but Scheduler database got corrupted, and some messages couldn't be delivered to a broker. I got many exceptions similar to:
2012-03-02 03:26:08,234 | ERROR | JMS Failed to schedule job | org.apache.activemq.broker.scheduler.JobSchedulerImpl | JobScheduler:JMS
java.io.IOException: Could not locate data file <correct-file-path>\db-2.log
at org.apache.kahadb.journal.Journal.getDataFile(Journal.java:350)
at org.apache.kahadb.journal.Journal.read(Journal.java:597)
at org.apache.activemq.broker.scheduler.JobSchedulerStore.getPayload(JobSchedulerStore.java:315)
at org.apache.activemq.broker.scheduler.JobSchedulerImpl.fireJob(JobSchedulerImpl.java:421)
at org.apache.activemq.broker.scheduler.JobSchedulerImpl.mainLoop(JobSchedulerImpl.java:473)
at org.apache.activemq.broker.scheduler.JobSchedulerImpl.run(JobSchedulerImpl.java:429)
at java.lang.Thread.run(Unknown Source)
The problem is that there is no way to restore the database like you can if you are working with the main ActiveMQ database. You can fix the main database by specifying the following configuration:
<persistenceAdapter> <kahaDB directory="${activemq.base}/data/kahadb" ignoreMissingJournalfiles="true" checkForCorruptJournalFiles="true" checksumJournalFiles="true" /> </persistenceAdapter>
It would be nice to have the same feature for the scheduler database.