Hi, On Thu, Feb 25, 2010 at 10:24 PM, Thomas Müller <[email protected]> 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
