Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-6938

KahaDB's ignoreMissingJournalFiles argument doesn't actually ignore missing journal files

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 5.13.1
    • None
    • KahaDB
    • None

    Description

      It was reported on the user mailing list (http://activemq.2283324.n4.nabble.com/Re-failed-to-start-ActiveMQ-td4737631.html) that a user is seeing the broker fail to start due to "java.io.IOException: Could not locate data file /data/kahadb/db-531.log" even though ignoreMissingJournalFiles is set to true. Presumably the purpose of that option is to allow the broker to ignore missing journal files (otherwise we chose poorly when naming the option and then failed to document it adequately on the wiki), which means the option doesn't work properly in all situations.

      Looking at the code on master as of 3/25/2018, org.apache.activemq.store.kahadb.MessageDatabase.recover() calls journal.getNextLocation(null) on line 677, which will throw the exception in question when DataFile.getDataFile() is called. This call to journal.getNextLocation() occurs outside of the while loop, whereas the ignoreMissingJournalFiles value is only checked in the catch block within the while loop, so we do not consider the ignoreMissingJournalFiles value in the call to getNextLocation(), even though missing journal files can cause getNextLocation() to fail.

      Note that the file is missing because the user manually deleted it in an effort to work around AMQ-6931, but that should not be relevant to the behavior that's being seen.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              tbain98 Tim Bain
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: