[jbosscache-dev] ClusteredCacheLoader deadlocks and JBCCACHE-1103

Bela Ban bela at jboss.com
Fri Jun 15 08:09:35 EDT 2007



Jason T. Greene wrote:
> That should be ok though because the CCL will still timeout on that
> lock. The original problem was that the same thread with the CCL lock
> was blocking on an FC lock so that the CCL lock would never be released
> (since the FC lock was higher in the stack).

See my previous reply. Yes, it blocked on FC.down() because it didn't 
receive credits in up(). But up() wasn't called because there was a 
replication message ahead of it in the queue that blocked on the FQN 
held by the CCL.

So to tackle this, my suggestion were, in this order:
#1 Don't hold a lock while making a synchronous cluster method call. 
That's a big no no, especially in pre-2.5 releases. We had lots of bugs 
in the clustering code due to such code. Then Brian cleaned up all of 
it... :-)
#2 The timeout mechanism in JGroups which uses threads. Ugly, and a 
hack, and only needed for 2.4. As I argued, this will avoid the 
deadlock, but it will constantly time out (assuming some traffic).

The root cause of this is #1

-- 
Bela Ban
Lead JGroups / JBoss Clustering team
JBoss - a division of Red Hat



More information about the jbosscache-dev mailing list