You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "maoling (JIRA)" <ji...@apache.org> on 2018/11/09 09:22:00 UTC

[jira] [Commented] (ZOOKEEPER-3186) bug in barrier example code

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-3186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16681125#comment-16681125 ] 

maoling commented on ZOOKEEPER-3186:
------------------------------------

[~pancheng]

Thanks for reporting this issue.I had fixed this bug in the [ZOOKEEPER-1011|https://github.com/apache/zookeeper/pull/618] which had not been reviewed and merged.

I will nudge this issue.
h1.  

 

> bug in barrier example code
> ---------------------------
>
>                 Key: ZOOKEEPER-3186
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3186
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: documentation
>            Reporter: cheng pan
>            Priority: Major
>
> the code given in the documentation
> {code:java}
> while (true) {
>     synchronized (mutex) {
>         List<String> list = zk.getChildren(root, true);
>         if (list.size() < size) {
>             mutex.wait();
>         } else {
>             return true;
>         }
>     }
> }
> {code}
> When some nodes are not ready, the code calls mutex.wait() and waits for the watcher event to call mutex.notify() to wake it up. The problem is, we can't guarantee that mutex.notify() will definitely happen after mutex.wait(), which will cause client is stuck.
> The solution might be CountDownLatch?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)