[
https://issues.apache.org/jira/browse/CURATOR-527?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16856881#comment-16856881
]
Jordan Zimmerman commented on CURATOR-527:
------------------------------------------
> test code may result only 1 failure for 100 times of test.
[~jc5201] In this case, we can reason about how the code works. There is no
possible way (unless I'm missing something) for the situation you describe to
occur. Lock2 will always get notified when Lock1 deletes via the set watcher.
Because, of synchronization the blocked thread (on wait() ) will always wake
up. If you see an error in this please let us know.
> Concurrency issue in LockInternals
> ----------------------------------
>
> Key: CURATOR-527
> URL: https://issues.apache.org/jira/browse/CURATOR-527
> Project: Apache Curator
> Issue Type: Bug
> Components: Recipes
> Affects Versions: 2.12.0
> Environment: Curator 2.12.0
> zookeeper 3.4.14
> Reporter: Kim Jaechang
> Priority: Major
>
> I'm using InterProcessMutex and InterProcessMutex often failed to acquire
> lock.
> In LockInternals.internalLockLoop(), watcher is registered to zookeeper and
> call wait() like below
> {code:java}
> client.getData().usingWatcher(watcher).forPath(previousSequencePath);
> if ( millisToWait != null )
> {
> millisToWait -= (System.currentTimeMillis() - startMillis);
> startMillis = System.currentTimeMillis();
> if ( millisToWait <= 0 )
> {
> doDelete = true; // timed out - delete our node
> break;
> }
> wait(millisToWait);
> }
> else
> {
> wait();
> }
> {code}
> In my case, my program is waiting
> previousSequencePath=_c_f290140d-9856-42ad-b9bf-348ffc086062-lock-0000000759
> to be deleted.
> But _c_f290140d-9856-42ad-b9bf-348ffc086062-lock-0000000759 is deleted
> between client.getData() and wait().
> if _c_f290140d-9856-42ad-b9bf-348ffc086062-lock-0000000759 is deleted when
> client.getData().usingWatcher(watcher).forPath(previousSequencePath) is
> called, it will throw Exception but it was exist at that time.
> I'm using Curator 2.12.0 but latest version seems to have same issue.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)