Kahadb error during SAN failover delayed write - Allow kahaDB to recover in a 
similar manner as the JDBC store using the IOExceptionHandler
-------------------------------------------------------------------------------------------------------------------------------------------

                 Key: AMQ-3725
                 URL: https://issues.apache.org/jira/browse/AMQ-3725
             Project: ActiveMQ
          Issue Type: Bug
          Components: Message Store
    Affects Versions: 5.5.1
            Reporter: Jason Sherman
             Fix For: 5.6.0, 5.x


An issue can arise that causes the broker to terminate when using kahaDB with a 
SAN, when the SAN fails over.  In this case the failover process is seamless 
however, on fail back there is a 2-3 sec delay where writes are blocked and the 
broker terminates.  With the JDBC datastore a similar situation can be handled 
by using the IOExceptionHandler.  However with kahaDB, when this same 
IOExceptionHandler is added it prevents the broker from terminating but kahaDB 
retains an invalid index.

{code}
 INFO | ActiveMQ JMS Message Broker (Broker1, 
ID:macbookpro-251a.home-56915-1328715089252-0:1) started
 INFO | jetty-7.1.6.v20100715
 INFO | ActiveMQ WebConsole initialized.
 INFO | Initializing Spring FrameworkServlet 'dispatcher'
 INFO | ActiveMQ Console at http://0.0.0.0:8161/admin
 INFO | ActiveMQ Web Demos at http://0.0.0.0:8161/demo
 INFO | RESTful file access application at http://0.0.0.0:8161/fileserver
 INFO | FUSE Web Console at http://0.0.0.0:8161/console
 INFO | Started [email protected]:8161
ERROR | KahaDB failed to store to Journal
java.io.SyncFailedException: sync failed
        at java.io.FileDescriptor.sync(Native Method)
        at 
org.apache.kahadb.journal.DataFileAppender.processQueue(DataFileAppender.java:382)
        at 
org.apache.kahadb.journal.DataFileAppender$2.run(DataFileAppender.java:203)
 INFO | Ignoring IO exception, java.io.SyncFailedException: sync failed
java.io.SyncFailedException: sync failed
        at java.io.FileDescriptor.sync(Native Method)
        at 
org.apache.kahadb.journal.DataFileAppender.processQueue(DataFileAppender.java:382)
        at 
org.apache.kahadb.journal.DataFileAppender$2.run(DataFileAppender.java:203)
ERROR | Checkpoint failed
java.io.SyncFailedException: sync failed
        at java.io.FileDescriptor.sync(Native Method)
        at 
org.apache.kahadb.journal.DataFileAppender.processQueue(DataFileAppender.java:382)
        at 
org.apache.kahadb.journal.DataFileAppender$2.run(DataFileAppender.java:203)
 INFO | Ignoring IO exception, java.io.SyncFailedException: sync failed
java.io.SyncFailedException: sync failed
        at java.io.FileDescriptor.sync(Native Method)
        at 
org.apache.kahadb.journal.DataFileAppender.processQueue(DataFileAppender.java:382)
        at 
org.apache.kahadb.journal.DataFileAppender$2.run(DataFileAppender.java:203)
ERROR | KahaDB failed to store to Journal
java.io.FileNotFoundException: /Volumes/NAS-01/data/kahadb/db-1.log (No such 
file or directory)
        at java.io.RandomAccessFile.open(Native Method)
        at java.io.RandomAccessFile.<init>(RandomAccessFile.java:216)
        at 
org.apache.kahadb.journal.DataFile.openRandomAccessFile(DataFile.java:70)
        at 
org.apache.kahadb.journal.DataFileAppender.processQueue(DataFileAppender.java:324)
        at 
org.apache.kahadb.journal.DataFileAppender$2.run(DataFileAppender.java:203)
 INFO | Ignoring IO exception, java.io.FileNotFoundException: 
/Volumes/NAS-01/data/kahadb/db-1.log (No such file or directory)
java.io.FileNotFoundException: /Volumes/NAS-01/data/kahadb/db-1.log (No such 
file or directory)
        at java.io.RandomAccessFile.open(Native Method)
        at java.io.RandomAccessFile.<init>(RandomAccessFile.java:216)
        at 
org.apache.kahadb.journal.DataFile.openRandomAccessFile(DataFile.java:70)
        at 
org.apache.kahadb.journal.DataFileAppender.processQueue(DataFileAppender.java:324)
        at 
org.apache.kahadb.journal.DataFileAppender$2.run(DataFileAppender.java:203)
ERROR | KahaDB failed to store to Journal
java.io.FileNotFoundException: /Volumes/NAS-01/data/kahadb/db-1.log (No such 
file or directory)
        at java.io.RandomAccessFile.open(Native Method)
        at java.io.RandomAccessFile.<init>(RandomAccessFile.java:216)
        at 
org.apache.kahadb.journal.DataFile.openRandomAccessFile(DataFile.java:70)
        at 
org.apache.kahadb.journal.DataFileAppender.processQueue(DataFileAppender.java:324)
        at 
org.apache.kahadb.journal.DataFileAppender$2.run(DataFileAppender.java:203)
 INFO | Ignoring IO exception, java.io.FileNotFoundException: 
/Volumes/NAS-01/data/kahadb/db-1.log (No such file or directory)
java.io.FileNotFoundException: /Volumes/NAS-01/data/kahadb/db-1.log (No such 
file or directory)
        at java.io.RandomAccessFile.open(Native Method)
        at java.io.RandomAccessFile.<init>(RandomAccessFile.java:216)
        at 
org.apache.kahadb.journal.DataFile.openRandomAccessFile(DataFile.java:70)
        at 
org.apache.kahadb.journal.DataFileAppender.processQueue(DataFileAppender.java:324)
        at 
org.apache.kahadb.journal.DataFileAppender$2.run(DataFileAppender.java:203)
 WARN | Transport failed: java.io.EOFException
 WARN | Transport failed: java.io.EOFException
 INFO | KahaDB: Recovering checkpoint thread after death
ERROR | Checkpoint failed
java.io.IOException: Input/output error
        at java.io.RandomAccessFile.write(Native Method)
        at java.io.RandomAccessFile.writeLong(RandomAccessFile.java:1001)
        at org.apache.kahadb.page.PageFile.writeBatch(PageFile.java:1006)
        at org.apache.kahadb.page.PageFile.flush(PageFile.java:484)
        at 
org.apache.activemq.store.kahadb.MessageDatabase.checkpointUpdate(MessageDatabase.java:1290)
        at 
org.apache.activemq.store.kahadb.MessageDatabase$10.execute(MessageDatabase.java:768)
        at org.apache.kahadb.page.Transaction.execute(Transaction.java:760)
        at 
org.apache.activemq.store.kahadb.MessageDatabase.checkpointCleanup(MessageDatabase.java:766)
        at 
org.apache.activemq.store.kahadb.MessageDatabase$3.run(MessageDatabase.java:315)
 INFO | Ignoring IO exception, java.io.IOException: Input/output error
java.io.IOException: Input/output error
        at java.io.RandomAccessFile.write(Native Method)
        at java.io.RandomAccessFile.writeLong(RandomAccessFile.java:1001)
        at org.apache.kahadb.page.PageFile.writeBatch(PageFile.java:1006)
        at org.apache.kahadb.page.PageFile.flush(PageFile.java:484)
        at 
org.apache.activemq.store.kahadb.MessageDatabase.checkpointUpdate(MessageDatabase.java:1290)
        at 
org.apache.activemq.store.kahadb.MessageDatabase$10.execute(MessageDatabase.java:768)
        at org.apache.kahadb.page.Transaction.execute(Transaction.java:760)
        at 
org.apache.activemq.store.kahadb.MessageDatabase.checkpointCleanup(MessageDatabase.java:766)
        at 
org.apache.activemq.store.kahadb.MessageDatabase$3.run(MessageDatabase.java:315)
 INFO | KahaDB: Recovering checkpoint thread after death
ERROR | Checkpoint failed
java.io.IOException: Input/output error
        at java.io.RandomAccessFile.write(Native Method)
        at java.io.RandomAccessFile.writeLong(RandomAccessFile.java:1001)
        at org.apache.kahadb.page.PageFile.writeBatch(PageFile.java:1006)
        at org.apache.kahadb.page.PageFile.flush(PageFile.java:484)
        at 
org.apache.activemq.store.kahadb.MessageDatabase.checkpointUpdate(MessageDatabase.java:1290)
        at 
org.apache.activemq.store.kahadb.MessageDatabase$10.execute(MessageDatabase.java:768)
        at org.apache.kahadb.page.Transaction.execute(Transaction.java:760)
        at 
org.apache.activemq.store.kahadb.MessageDatabase.checkpointCleanup(MessageDatabase.java:766)
        at 
org.apache.activemq.store.kahadb.MessageDatabase$3.run(MessageDatabase.java:315)
 INFO | Ignoring IO exception, java.io.IOException: Input/output error
java.io.IOException: Input/output error
        at java.io.RandomAccessFile.write(Native Method)
        at java.io.RandomAccessFile.writeLong(RandomAccessFile.java:1001)
        at org.apache.kahadb.page.PageFile.writeBatch(PageFile.java:1006)
        at org.apache.kahadb.page.PageFile.flush(PageFile.java:484)
        at 
org.apache.activemq.store.kahadb.MessageDatabase.checkpointUpdate(MessageDatabase.java:1290)
        at 
org.apache.activemq.store.kahadb.MessageDatabase$10.execute(MessageDatabase.java:768)
        at org.apache.kahadb.page.Transaction.execute(Transaction.java:760)
        at 
org.apache.activemq.store.kahadb.MessageDatabase.checkpointCleanup(MessageDatabase.java:766)
        at 
org.apache.activemq.store.kahadb.MessageDatabase$3.run(MessageDatabase.java:315)
 WARN | Transport failed: java.io.EOFException
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to