maybe the problem is indicative of a bug in LCF? I think its strange
that there are locking problems with Derby, too.

That being said, maybe as a quick fix you could try SET DATABASE
TRANSACTION CONTROL MVCC or SET DATABASE TRANSACTION CONTROL MVLOCKS,
since i see you are using two phase locking:
http://hsqldb.org/doc/2.0/guide/sessions-chapt.html#sqlgeneral_trans_cc-sect


On Sun, Oct 10, 2010 at 9:18 AM,  <[email protected]> wrote:
> 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
>

Reply via email to