You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Andor Molnar (JIRA)" <ji...@apache.org> on 2018/03/28 15:58:00 UTC
[jira] [Comment Edited] (ZOOKEEPER-3014) watch can be added to
non-existed path by exist command
[ https://issues.apache.org/jira/browse/ZOOKEEPER-3014?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16417617#comment-16417617 ]
Andor Molnar edited comment on ZOOKEEPER-3014 at 3/28/18 3:57 PM:
------------------------------------------------------------------
Thanks for the clarification. I'll look into it in more detail.
In the meantime, would you please test with the latest stable version of Curator/ZooKeeper to make sure you're not reporting an issue which is fixed already?
was (Author: andorm):
Thanks for the clarification. I'll look into it in more detail.
In the meantime, would you please this with the latest stable version of Curator/ZooKeeper to make sure you're not reporting an issue which is fixed already?
> watch can be added to non-existed path by exist command
> -------------------------------------------------------
>
> Key: ZOOKEEPER-3014
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3014
> Project: ZooKeeper
> Issue Type: Bug
> Components: server
> Affects Versions: 3.4.5, 3.4.6
> Reporter: CHQ
> Priority: Major
> Fix For: 3.4.12
>
> Attachments: image-2018-03-28-22-51-33-751.png
>
>
> We have client A which create a znode ,and its path is /zk/lock/100000. Another client B thread is acquiring for the lock, so it calls the exist command with watch periodically to check if it is available. Then Client A has finished this work, and delete this znode. Client b still calls exist command with watch. Because the code doesn't check node existence, when the Watch add operation comes , it will add to non-exist node path.
> This problem may be cause by the follow code.
> {code:java}
> public Stat statNode(String path, Watcher watcher)
> throws KeeperException.NoNodeException {
> Stat stat = new Stat();
> DataNode n = nodes.get(path);
> if (watcher != null) {
> dataWatches.addWatch(path, watcher);
> }
> if (n == null) {
> throw new KeeperException.NoNodeException();
> }
> synchronized (n) {
> n.copyStat(stat);
> return stat;
> }
> }
> {code}
> The zk version we use is 3.4.5. We meet a problem that is the zk client try to reestablish to zk cluster failed after disconnect for some reason.We find it causes by ZOOKEEPER-706. But we try to know why there are so many watches. Then we find this problem.
>
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)