[jboss-user] [JBoss Cache: Core Edition] - JBossCache Deadlock in Hibernate BulkOperationCleanupAction

jonmc do-not-reply at jboss.com
Sat Feb 21 22:10:38 EST 2009


Hi, I'm experiencing a JBossCache deadlock under Hibernate when committing a transaction which performs a Hibernate bulk operation (in this case a single bulk UPDATE statement using Query.executeUpdate()).

My setup:

* Spring 2.5.5
* Hibernate 3.3.1.GA
* JBossCache 3.0.3.CR1 (also tried 3.0.2.GA)
* Atomikos Transactions 3.5.2
* Spring-managed JTA transactions

I'm using the MVCC locking and READ_COMMITTED isolation level.  Clustering is turned off.

Stack trace beginning from the transaction commit() call:

2009-02-21 21:53:36,920 ERROR [org.hibernate.engine.ActionQueue] - <could not release a cache lock>
org.hibernate.cache.CacheException: org.jboss.cache.lock.TimeoutException: Unable to acquire lock on Fqn [/com/foo/Bar/ENTITY] after [10000] milliseconds for requestor [Thread[main,5,main]]! Lock held by [GlobalTransaction::2]
	at org.hibernate.cache.jbc2.util.CacheHelper.removeAll(CacheHelper.java:380)
	at org.hibernate.cache.jbc2.util.CacheHelper.removeAll(CacheHelper.java:360)
	at org.hibernate.cache.jbc2.access.TransactionalAccessDelegate.evictOrRemoveAll(TransactionalAccessDelegate.java:146)
	at org.hibernate.cache.jbc2.access.TransactionalAccessDelegate.evictAll(TransactionalAccessDelegate.java:142)
	at org.hibernate.cache.jbc2.entity.TransactionalAccess.evictAll(TransactionalAccess.java:102)
	at org.hibernate.impl.SessionFactoryImpl.evictEntity(SessionFactoryImpl.java:870)
	at org.hibernate.action.BulkOperationCleanupAction.evictEntityRegions(BulkOperationCleanupAction.java:153)
	at org.hibernate.action.BulkOperationCleanupAction.afterTransactionCompletion(BulkOperationCleanupAction.java:132)
	at org.hibernate.engine.ActionQueue.afterTransactionCompletion(ActionQueue.java:198)
	at org.hibernate.impl.SessionImpl.afterTransactionCompletion(SessionImpl.java:451)
	at org.hibernate.jdbc.JDBCContext.afterTransactionCompletion(JDBCContext.java:252)
	at org.hibernate.transaction.CacheSynchronization.afterCompletion(CacheSynchronization.java:117)
	at com.atomikos.icatch.jta.Sync2Sync.afterCompletion(Sync2Sync.java:91)
	at com.atomikos.icatch.imp.SynchToFSM.doAfterCompletion(SynchToFSM.java:38)
	at com.atomikos.icatch.imp.SynchToFSM.entered(SynchToFSM.java:59)
	at com.atomikos.finitestates.FSMImp.notifyListeners(FSMImp.java:197)
	at com.atomikos.finitestates.FSMImp.setState(FSMImp.java:288)
	at com.atomikos.icatch.imp.CoordinatorImp.setState(CoordinatorImp.java:481)
	at com.atomikos.icatch.imp.CoordinatorImp.setStateHandler(CoordinatorImp.java:312)
	at com.atomikos.icatch.imp.CoordinatorStateHandler.commit(CoordinatorStateHandler.java:730)
	at com.atomikos.icatch.imp.IndoubtStateHandler.commit(IndoubtStateHandler.java:225)
	at com.atomikos.icatch.imp.CoordinatorImp.commit(CoordinatorImp.java:807)
	at com.atomikos.icatch.imp.CoordinatorImp.terminate(CoordinatorImp.java:1106)
	at com.atomikos.icatch.imp.CompositeTerminatorImp.commit(CompositeTerminatorImp.java:151)
	at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:297)
	at com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java:608)
	at com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:168)
	at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1028)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:709)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678)

Deadlock occurs intermittently, both under heavy load and no load. About 50% of the time. It remains deadlocked until the JBossCache lock acquisition timeout expires.

Known issue? Suggestions to fix?

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4212054#4212054

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4212054



More information about the jboss-user mailing list