Hi Thomas

We use H2 in server mode on a linux system. Several clients running
Windows connect to the H2 db. In one client's log file, I see three
types of alarming error messages such as:

1. org.h2.jdbc.JdbcSQLException: General error:
"java.lang.NoClassDefFoundError: java/lang/ref/Finalizer
$2" [50000-139]
2. org.h2.jdbc.JdbcSQLException: IO Exception: "java.io.IOException:
Read-only file system"; "/pathto/db/myDb.h2.db"; SQL statement:
3.org.h2.jdbc.JdbcSQLException: Unique index or primary key violation:
"USERS_DATA ON PUBLIC.USERS(<removed attributes>)"; SQL statement:
4. org.h2.jdbc.JdbcSQLException: Timeout trying to lock table "USERS";
SQL statement:

The full stack traces are given at the end of this post.

Except for 3 and 4, these errors have nothing in common. Can you as
the developer see any correlation?

1: What could be the reason for this anonymous inner class not to be
found? Is it a corrupted JRE installation? On that machine, a 1.6.0_21
is installed
2: In our productive environment there are many of these linux db
server boxes and all are setup the same. And certainly, the file
system where the db files resides is not read only. The error only
occurs from time to time and in most cases, data can be manipulated
without any problems. I don't have access to that machine right now
but I could do some investigation if necessary.
3: During some updates on the USERS table, an application error occurs
and leads to a rollback operation, which in turn leads to the given
primary key violation. It looks like a lock persists which leads to
error 4.

Well that's a lot of errors at once, but maybe you could give me a
hint on what could be wrong with that db. In case you need further
information, I'll be glad to provide it if I can.

Thanks,
Remo


Full stack traces:

org.h2.jdbc.JdbcSQLException: General error:
"java.lang.NoClassDefFoundError: java/lang/ref/Finalizer
$2" [50000-139]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:
327)
        at org.h2.message.DbException.get(DbException.java:156)
        at org.h2.message.DbException.convert(DbException.java:275)
        at org.h2.server.TcpServerThread.sendError(TcpServerThread.java:183)
        at org.h2.server.TcpServerThread.run(TcpServerThread.java:136)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoClassDefFoundError: java/lang/ref/Finalizer$2
        at java.lang.ref.Finalizer.runFinalization(Finalizer.java:126)
        at java.lang.Runtime.runFinalization0(Native Method)
        at java.lang.Runtime.runFinalization(Runtime.java:688)
        at
org.h2.store.fs.FileSystemDisk.freeMemoryAndFinalize(FileSystemDisk.java:
430)
        at org.h2.store.fs.FileSystemDisk.openFileObject(FileSystemDisk.java:
445)
        at org.h2.store.FileStore.<init>(FileStore.java:86)
        at org.h2.store.FileStore.open(FileStore.java:137)
        at org.h2.store.FileStore.open(FileStore.java:119)
        at org.h2.engine.Database.openFile(Database.java:445)
        at org.h2.result.ResultDiskBuffer.<init>(ResultDiskBuffer.java:68)
        at org.h2.result.LocalResult.addRow(LocalResult.java:265)
        at org.h2.command.dml.Select.queryFlat(Select.java:503)
        at org.h2.command.dml.Select.queryWithoutCache(Select.java:579)
        at org.h2.command.dml.Query.query(Query.java:241)
        at org.h2.command.CommandContainer.query(CommandContainer.java:80)
        at org.h2.command.Command.executeQuery(Command.java:132)
        at org.h2.server.TcpServerThread.process(TcpServerThread.java:275)
        at org.h2.server.TcpServerThread.run(TcpServerThread.java:134)

org.h2.jdbc.JdbcSQLException: IO Exception: "java.io.IOException: Read-
only file system"; "/pathto/db/myDb.h2.db"; SQL statement:
SELECT ....<removed the query> [90031-139]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:
327)
        at org.h2.message.DbException.get(DbException.java:156)
        at org.h2.message.DbException.convertIOException(DbException.java:
313)
        at org.h2.store.FileStore.write(FileStore.java:338)
        at org.h2.store.PageStore.writePage(PageStore.java:1060)
        at org.h2.index.PageBtreeLeaf.write(PageBtreeLeaf.java:240)
        at org.h2.store.PageStore.writeBack(PageStore.java:778)
        at org.h2.util.CacheLRU.removeOld(CacheLRU.java:179)
        at org.h2.util.CacheLRU.removeOldIfRequired(CacheLRU.java:124)
        at org.h2.util.CacheLRU.put(CacheLRU.java:102)
        at org.h2.store.PageStore.getPage(PageStore.java:592)
        at org.h2.index.PageDataIndex.getPage(PageDataIndex.java:211)
        at org.h2.index.PageDataNode.getRow(PageDataNode.java:281)
        at org.h2.index.PageDataIndex.getRow(PageDataIndex.java:387)
        at org.h2.index.PageDataIndex.getRow(PageDataIndex.java:376)
        at org.h2.table.RegularTable.getRow(RegularTable.java:104)
        at org.h2.index.PageBtreeIndex.getRow(PageBtreeIndex.java:285)
        at org.h2.index.PageBtreeCursor.get(PageBtreeCursor.java:45)
        at org.h2.index.IndexCursor.get(IndexCursor.java:207)
        at org.h2.table.TableFilter.getValue(TableFilter.java:824)
        at org.h2.expression.ExpressionColumn.getValue(ExpressionColumn.java:
167)
        at org.h2.command.dml.Select.queryFlat(Select.java:498)
        at org.h2.command.dml.Select.queryWithoutCache(Select.java:579)
        at org.h2.command.dml.Query.query(Query.java:241)
        at org.h2.command.CommandContainer.query(CommandContainer.java:80)
        at org.h2.command.Command.executeQuery(Command.java:132)
        at org.h2.server.TcpServerThread.process(TcpServerThread.java:275)
        at org.h2.server.TcpServerThread.run(TcpServerThread.java:134)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.IOException: Read-only file system
        at java.io.RandomAccessFile.writeBytes(Native Method)
        at java.io.RandomAccessFile.write(RandomAccessFile.java:466)
        at org.h2.store.FileStore.write(FileStore.java:336)

org.h2.jdbc.JdbcSQLException: Unique index or primary key violation:
"USERS_DATA ON PUBLIC.USERS(<removed attributes>)"; SQL statement:
ROLLBACK [23001-139]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:
327)
        at org.h2.message.DbException.get(DbException.java:167)
        at org.h2.message.DbException.get(DbException.java:144)
        at org.h2.index.BaseIndex.getDuplicateKeyException(BaseIndex.java:
157)
        at org.h2.index.PageDataIndex.add(PageDataIndex.java:132)
        at org.h2.table.RegularTable.addRow(RegularTable.java:116)
        at org.h2.engine.UndoLogRecord.undo(UndoLogRecord.java:116)
        at org.h2.engine.Session.rollbackTo(Session.java:546)
        at org.h2.engine.Session.rollback(Session.java:523)
        at
org.h2.command.dml.TransactionCommand.update(TransactionCommand.java:
123)
        at org.h2.command.CommandContainer.update(CommandContainer.java:70)
        at org.h2.command.Command.executeUpdate(Command.java:199)
        at org.h2.server.TcpServerThread.process(TcpServerThread.java:297)
        at org.h2.server.TcpServerThread.run(TcpServerThread.java:134)
        at java.lang.Thread.run(Thread.java:619)

org.h2.jdbc.JdbcSQLException: Timeout trying to lock table "USERS";
SQL statement:
SELECT ... <removed rest of select statement>' [50200-139]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:
327)
        at org.h2.message.DbException.get(DbException.java:167)
        at org.h2.message.DbException.get(DbException.java:144)
        at org.h2.table.RegularTable.doLock(RegularTable.java:466)
        at org.h2.table.RegularTable.lock(RegularTable.java:404)
        at org.h2.table.TableFilter.lock(TableFilter.java:139)
        at org.h2.command.dml.Select.queryWithoutCache(Select.java:554)
        at org.h2.command.dml.Query.query(Query.java:241)
        at org.h2.command.CommandContainer.query(CommandContainer.java:80)
        at org.h2.command.Command.executeQuery(Command.java:132)
        at org.h2.server.TcpServerThread.process(TcpServerThread.java:275)
        at org.h2.server.TcpServerThread.run(TcpServerThread.java:134)
        at java.lang.Thread.run(Thread.java:619)

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

Reply via email to