Does anybody have experience with hsqldb? I'm getting a java thread deadlock
within about 10 seconds of running a job. I want to know if anyone has seen
this before, or has used hsqldb in a massively multithreaded environment.
Found one Java-level deadlock:
=============================
"Thread-745":
waiting for ownable synchronizer 0x293b0b70, (a java.util.concurrent.locks.Ree
ntrantReadWriteLock$NonfairSync),
which is held by "Thread-725"
"Thread-725":
waiting to lock monitor 0x04614284 (object 0x2927b550, a org.hsqldb.persist.Lo
bManager),
which is held by "Thread-732"
"Thread-732":
waiting for ownable synchronizer 0x293b0b70, (a java.util.concurrent.locks.Ree
ntrantReadWriteLock$NonfairSync),
which is held by "Thread-725"
Java stack information for the threads listed above:
===================================================
"Thread-745":
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x293b0b70> (a java.util.concurrent.locks.Reentr
antReadWriteLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInt
errupt(AbstractQueuedSynchronizer.java:811)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(A
bstractQueuedSynchronizer.java:842)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Abstrac
tQueuedSynchronizer.java:1178)
at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(Reen
trantReadWriteLock.java:807)
at org.hsqldb.TransactionManager2PL.beginAction(Unknown Source)
at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
at org.hsqldb.Session.executeDirectStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
- locked <0x23dc38d0> (a org.hsqldb.Session)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source)
- locked <0x23dc6fc0> (a org.hsqldb.jdbc.JDBCStatement)
at org.apache.manifoldcf.core.database.Database.execute(Database.java:52
6)
at org.apache.manifoldcf.core.database.Database$ExecuteQueryThread.run(D
atabase.java:381)
"Thread-725":
at org.hsqldb.persist.LobManager.adjustUsageCount(Unknown Source)
- waiting to lock <0x2927b550> (a org.hsqldb.persist.LobManager)
at org.hsqldb.SessionData.adjustLobUsageCount(Unknown Source)
at org.hsqldb.TransactionManagerCommon.persistCommit(Unknown Source)
at org.hsqldb.TransactionManager2PL.commitTransaction(Unknown Source)
at org.hsqldb.Session.commit(Unknown Source)
- locked <0x23ca46f0> (a org.hsqldb.Session)
at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
- locked <0x23ca46f0> (a org.hsqldb.Session)
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source)
- locked <0x23ca8038> (a org.hsqldb.jdbc.JDBCPreparedStatement)
at org.apache.manifoldcf.core.database.Database.execute(Database.java:56
6)
at org.apache.manifoldcf.core.database.Database$ExecuteQueryThread.run(D
atabase.java:381)
"Thread-732":
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x293b0b70> (a java.util.concurrent.locks.Reentr
antReadWriteLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInt
errupt(AbstractQueuedSynchronizer.java:811)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(A
bstractQueuedSynchronizer.java:842)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Abstrac
tQueuedSynchronizer.java:1178)
at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(Reen
trantReadWriteLock.java:807)
at org.hsqldb.TransactionManager2PL.beginAction(Unknown Source)
at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
at org.hsqldb.persist.LobManager.createClob(Unknown Source)
- locked <0x2927b550> (a org.hsqldb.persist.LobManager)
at org.hsqldb.Session.createClob(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.performPreExecute(Unknown Sourc
e)
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source)
- locked <0x23d0d570> (a org.hsqldb.jdbc.JDBCPreparedStatement)
at org.apache.manifoldcf.core.database.Database.execute(Database.java:56
6)
at org.apache.manifoldcf.core.database.Database$ExecuteQueryThread.run(D
atabase.java:381)
Found 1 deadlock.
Karl