[ 
https://issues.apache.org/jira/browse/JCR-2746?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12912917#action_12912917
 ] 

Thomas Mueller commented on JCR-2746:
-------------------------------------

The deadlock in DefaultISMLocking is now tracked in JCR-2753.

Even if this is fixed, there is a problem with the ObservationDispatcher: the 
loop to wait for the observation queue to shrink may be endless, because locks 
are held by the current thread. It doesn't looks like there is an easy 
solution, except for only waiting once (slowing down the main thread) instead 
of waiting until the queue is shorter. In most cases, this will solve the 
original problem (events are generated faster than processed), but it can't 
result in an endless loop, even if the observation listener tries to read from 
or write to the repository. Another option is to never wait / sleep, only to 
log a warning.

> Deadlock triggered by ObservationDispatcher 
> --------------------------------------------
>
>                 Key: JCR-2746
>                 URL: https://issues.apache.org/jira/browse/JCR-2746
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core, observation
>    Affects Versions: 2.0.0, 2.1.0, 2.1.1
>            Reporter: Jukka Zitting
>            Assignee: Thomas Mueller
>             Fix For: 2.2.0
>
>
> The rate-limitation code we added in JCR-2402 to prevent the observation 
> queue from growing too large was a good idea, but the current implementation 
> is a bit troublesome since it blocks the thread while it still holds the 
> journal lock, the SISM reader lock, and the SessionState lock. This can cause 
> a deadlock under heavy workloads if any of the observation listeners attempts 
> to reuse the session (not recommended/supported, but can still happen) or 
> write to the repository (quite likely).
> To solve this problem we should move the rate-limiter code to outside the 
> scope of any internal locks.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to