Hi,

We are using H2 in an environment where multiple vms access the database 
file over a windows network share using 
AUTO_SERVER=TRUE;AUTO_RECONNECT=TRUE to allow whichever vm can start the 
database to be the server.

We are experiencing some stability issues which look like they are related 
to access to the network share being lost, at least temporarily.

The following exception will start showing in our trace.db file, even after 
the share is once again accessible:

04-25 13:23:14 database: flush
org.h2.message.DbException: IO Exception: "java.io.IOException: Write 
error"; "//SVR/db/store.h2.db" [90031-168]
at org.h2.message.DbException.get(DbException.java:158)
at org.h2.message.DbException.convertIOException(DbException.java:315)
at org.h2.store.FileStore.write(FileStore.java:330)
at org.h2.security.SecureFileStore.write(SecureFileStore.java:64)
at org.h2.store.PageStore.writePage(PageStore.java:1327)
at org.h2.store.PageStreamData.write(PageStreamData.java:105)
at org.h2.store.PageOutputStream.storePage(PageOutputStream.java:146)
at org.h2.store.PageOutputStream.flush(PageOutputStream.java:154)
at org.h2.store.PageLog.flushOut(PageLog.java:856)
at org.h2.store.PageLog.flush(PageLog.java:663)
at org.h2.store.PageStore.flushLog(PageStore.java:986)
at org.h2.engine.Database.flush(Database.java:1780)
at org.h2.store.WriterThread.run(WriterThread.java:86)
at java.lang.Thread.run(Unknown Source)
Caused by: org.h2.jdbc.JdbcSQLException: IO Exception: 
"java.io.IOException: Write error"; "//SVR/db/store.h2.db" [90031-168]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
... 14 more
Caused by: java.io.IOException: Write error
at java.io.RandomAccessFile.writeBytes(Native Method)
at java.io.RandomAccessFile.write(Unknown Source)
at org.h2.store.fs.FileDisk.write(FilePathDisk.java:438)
at org.h2.store.fs.FileUtils.writeFully(FileUtils.java:372)
at org.h2.store.FileStore.write(FileStore.java:327)
... 11 more


Other client connections will usually get errors like:

org.h2.jdbc.JdbcSQLException: Timeout trying to lock table "STORE_ITEM"; 
SQL statement:

If we query for locks (SELECT * FROM INFORMATION_SCHEMA.LOCKS ) there often 
will not be any.  Calling SHUTDOWN will shutdown the database and allow all 
the vms to reconnect. 

If there is a lock, CANCEL_SESSION(<offending session>) will return false. 
 If we call SET EXCLUSIVE 2, all other connections will be closed except 
for the connection with the lock.  If we attempt to SHUTDOWN, we get the 
following error:

IO Exception: "java.io.IOException: Write error"; "//SVR/db/store.h2.db"; 
SQL statement:
shutdown [90031-168] 90031/90031 (Help)

In this scenario, only killing the VM with running the database seems to be 
the only solution.
Is the any way to capture this exception (i.e. flush error) in the vm in 
which the server is running and restart the database in response?

Thanks

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to