[ https://issues.apache.org/jira/browse/ZOOKEEPER-2217?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14600549#comment-14600549 ]
Camille Fournier commented on ZOOKEEPER-2217: --------------------------------------------- This is a fundamental aspect of the design of ZK watches, they do not guarantee that events will be caught in-between the watch being fired and the new data being read. See the documentation here: http://zookeeper.apache.org/doc/r3.4.6/zookeeperProgrammers.html#ch_zkWatches In particular, they are not designed to be a messaging bus where you get every change in order. > event might lost before re-watch > -------------------------------- > > Key: ZOOKEEPER-2217 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2217 > Project: ZooKeeper > Issue Type: Improvement > Components: c client, java client > Affects Versions: 3.4.5, 3.4.6 > Environment: jdk1.7_45 on centos6.5 and ubuntu14.4 > Reporter: Caspian > > I use zk to monitor the children nodes under a path, eg: /servers. > when the client is told that children changes, I have to re-watch the path > again, during the peroid, it's possible that some children down, or some up. > And those events will be missed. > For now, my temporary solution is not to use getChildren(path, true...) to > get children and re-watch this path, but re-watch this path first, then get > the children. Thus non events can be ignored, but I don't know what will the > zk server be like if there are too much clients that act like this. > How do you think of this problem? Is there any other solutions? -- This message was sent by Atlassian JIRA (v6.3.4#6332)