[
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:58 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?
ZK 3.4.12 is coming soon you might want to wait for it before doing any test.
was (Author: andorm):
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?
> 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)