Kahadb archiving does not work accross different physical file systems

Solution In Progress - Updated -

Issue

  • Cannot archive Journal files in a separate file system
  • We cannot use a separate file system to host the A-MQ archived Journal files, e.g. in activemq.xml configuration :
<kahaDB directory="${karaf.data}/live" archiveDataLogs="true" directoryArchive="${karaf.data}/archive"...

where ${karaf.data}/live and ${karaf.data}/archive are not on the same file system.
If the live and archive file systems are different, we get the below error when a Journal file has to be moved to the archive:

ERROR | heckpoint Worker | MessageDatabase   | q.store.kahadb.MessageDatabase$3  364 | 171 - 
org.apache.activemq.activemq-osgi - 5.11.0.redhat-620153 | Checkpoint failed
java.io.IOException: Failed to move /opt/amqdb/kahadb/db-810.log to /opt/amqdb/archive/kahadb
        at org.apache.activemq.util.IOHelper.moveFile(IOHelper.java:189)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.disk.journal.DataFile.move(DataFile.java:90)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.disk.journal.Journal.forceRemoveDataFile(Journal.java:568)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.disk.journal.Journal.removeDataFiles(Journal.java:544)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.MessageDatabase.checkpointUpdate(MessageDatabase.java:1715)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.MessageDatabase$17.execute(MessageDatabase.java:1513)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.disk.page.Transaction.execute(Transaction.java:779)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.MessageDatabase.checkpointUpdate(MessageDatabase.java:1510)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.MessageDatabase.checkpointCleanup(MessageDatabase.java:940)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.MessageDatabase$3.run(MessageDatabase.java:353)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
2015-10-28 11:03:38,266 | INFO  | heckpoint Worker | DefaultIOExceptionHandler   | q.util.DefaultIOExceptionHandler  165 | 171 - 
org.apache.activemq.activemq-osgi - 5.11.0.redhat-620153 | Stopping BrokerService[amqbroker] due to exception, java.io.IOException: Failed to move /opt/amqdb/kahadb/db-810.log to /opt/amqdb/archive/kahadb
java.io.IOException: Failed to move /opt/amqdb/kahadb/db-810.log to /opt/amqdb/archive/kahadb
        at org.apache.activemq.util.IOHelper.moveFile(IOHelper.java:189)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.disk.journal.DataFile.move(DataFile.java:90)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.disk.journal.Journal.forceRemoveDataFile(Journal.java:568)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.disk.journal.Journal.removeDataFiles(Journal.java:544)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.MessageDatabase.checkpointUpdate(MessageDatabase.java:1715)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.MessageDatabase$17.execute(MessageDatabase.java:1513)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.disk.page.Transaction.execute(Transaction.java:779)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.MessageDatabase.checkpointUpdate(MessageDatabase.java:1510)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.MessageDatabase.checkpointCleanup(MessageDatabase.java:940)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]
        at org.apache.activemq.store.kahadb.MessageDatabase$3.run(MessageDatabase.java:353)[171:org.apache.activemq.activemq-osgi:5.11.0.redhat-620153]

Environment

  • Red Hat JBoss A-MQ 6.2.0
    • kahadb archive directory on a separate physical file system
    • Red Hat Enterprise Linux (RHEL)

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.