Hi,
I'm using JbossCache 1.1 as a transactional cache for Hibernate 2.1.6. Currently we're running on Tomcat 4.1.30 with JOTM 1.5.3 as the TransactionManager. Database is Oracle 10g.
Frequently, Hibernate is running into deadlock-situations with TImeoutException as a result while putting data into any of the two nodes (or their children):
//net/sf/hibernate/cache/StandardQueryCache
//net/sf/hibernate/cache/UpdateTimestampsCache
From a discussion on the Hibernate forum
http://forum.hibernate.org/viewtopic.php?t=931969&highlight=timeoutexception+query+cache I see that neither of these paths must be in a transactional context. Gavin King notes that
"Oh, you never explained that this is with the query cache. You will need to put the JBoss query cache region in some kind of nonstransactional mode. Not sure how to do this, ask Ben Wang." Is it possible to specify separate isolation levels on different nodes?
My current solution is to utilize an extended TreeCacheProvider and TreeCache wrapper in hibernate where two instances of the cache is created. One with isolation level set to REPEATABLE_READ and the other with isolation level NONE.
Best regards,
Ørjan