jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marcel Reutegger <marcel.reuteg...@gmx.net>
Subject Re: deadlock problem
Date Fri, 25 Nov 2005 13:51:07 GMT
Hi Brian,

what revision of jackrabbit are you using? according to the line numbers 
in the thread dumps at least the SharedItemStateManager is not up to date.

there was an issue with locking some time ago.
http://issues.apache.org/jira/browse/JCR-194

is that fix included in your build?

Brian Moseley wrote:
> hey all, any thoughts on this problem?
> 
> the weird thing is, each of these 10 threads is reading/writing 
> different nodes with different parents, eg
> 
> /test1/testfile.txt
> /test2/testfile.txt
> ...
> /test10/testfile.txt
> 
> so it's baffling me why anything would be sharing locks for operations 
> on different nodes.
> 
> i notice in the javadocs for WriterPreferenceReadWriteLock that a 
> deadlock can occur if a thread tries to re-acquire a read lock that it 
> already holds, if there are also waiting writers. i also see in the 
> thread dump that multiple threads are waiting to both read and write.

this is correct for the lock you mentioned, but jackrabbit uses the 
reentrant variant of the lock which takes care of such situations.

> i wonder if maybe some thread called two read methods on a node without 
> the lock having been released after the first one. is that possible?
> 
> or do the SISM locks apply to all operations in a workspace? can 
> somebody explain the locking behavior of SISM?

a thread holds a write lock while a change is stored in the persistence 
manager. during that time no other thread can read from the SISM. events 
are delivered while holding a read lock, which is the formerly hold 
write lock downgraded to a read lock. thus synchronous (and of course 
also asynchronous) listeners are able to read again.
well, that's basically it ;)

currently quite simple but works well.

regards
  marcel

Mime
View raw message