jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dominique Jäggi (JIRA) <j...@apache.org>
Subject [jira] [Closed] (OAK-4532) race-condition in commit-rate-limiter
Date Mon, 11 Jul 2016 12:43:12 GMT

     [ https://issues.apache.org/jira/browse/OAK-4532?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Dominique Jäggi closed OAK-4532.
--------------------------------

bulk close after 1.5.5 release

> race-condition in commit-rate-limiter
> -------------------------------------
>
>                 Key: OAK-4532
>                 URL: https://issues.apache.org/jira/browse/OAK-4532
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.5.4
>            Reporter: Stefan Egli
>            Assignee: Stefan Egli
>             Fix For: 1.5.5
>
>
> [CommitRateLimiter.delay|https://github.com/apache/jackrabbit-oak/blob/jackrabbit-oak-1.5.4/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/CommitRateLimiter.java#L81]
has a race-condition when the queue length drops below thres-hold right when {{delay()}} is
called. Consider the following steps:
> * thread T1 enters {{delay()}} with a positive value for {{delay}} but gets paused right
after the check for {{delay>0}}
> * thread T2 enters {{setDelay(0)}}, thus goes into the synchronized block and does a
notifyAll
> * thread T1 continues in {{delay()}} after above mentioned check, thus now goes into
the synchronized block - at this stage {{delay}} is {{0}} (as it's volatile) - thus it sets
{{dt=0}}.
> * thread T1 then goes and calls {{wait(0)}} - which is an infinite wait, until it gets
notified. This can be forever if the threshold is never ever hit again.
> Would suggest to do a {{while}} loop rather than a {{do-while}}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message