Hi,

On Thu, Feb 25, 2010 at 10:24 PM, Thomas Müller <thomas.muel...@day.com> wrote:
>> http://issues.apache.org/jira/browse/JCR-2443.
>
> Unfortunately this bug doesn't have a test case. Also I didn't find a
> thread dump that shows what the problem was exactly. I can't say what
> was the problem there.

This problem was caused by observation delivery trying to synchronize
on the receiving session while that session was waiting for an
internal lock that the event source was still holding. I had a thread
dump and could reproduce this behaviour in our CQ5 product (search for
JCR-2443 in our issue tracker) where it occurred as a result of heavy
concurrent writing and observation, but writing a standalone test case
proved quite challenging.

The good thing about this is that without the synchronization we would
sooner or later have seen cases where the state of the internal map
got corrupted due to concurrent updates. Such problems would have been
much more difficult to troubleshoot than the deadlock that clearly
pointed to the incorrect locking order. I'm quite sure that some of
the hairier Jackrabbit issues we see reported may in fact be caused by
exactly such concurrent session access without proper synchronization.

BR,

Jukka Zitting

Reply via email to