您的位置:首页 > 其它

zookeeper的坑(二)

2016-04-14 16:35 330 查看
接上篇,同样的代码,同样的地方debug。

zkCli.sh执行

[zk: localhost:2181(CONNECTED) 13] ls /t
[]
[zk: localhost:2181(CONNECTED) 14] create /t/1 "1"
Created /t/1
[zk: localhost:2181(CONNECTED) 15] create /t/2 "1"
Created /t/2
[zk: localhost:2181(CONNECTED) 16] create /t/3 "1"
Created /t/3
[zk: localhost:2181(CONNECTED) 17] create /t/4 "1"
Created /t/4
[zk: localhost:2181(CONNECTED) 18] delete /t/2
[zk: localhost:2181(CONNECTED) 19] delete /t/4
[zk: localhost:2181(CONNECTED) 20] ls /t
[3, 1]


放开debug,Console输出:

2016-04-14 16:28:58,553 INFO  [PathChildrenCache-0] alarm.ZkTest (ZkTest.java:childEvent(65)) - zk:[path] ADD_WATCHER:/t/1
2016-04-14 16:28:58,940 INFO  [PathChildrenCache-0] alarm.ZkTest (ZkTest.java:childEvent(65)) - zk:[path] ADD_WATCHER:/t/3


居然"/t/2"和"/t/4"相关信息控制台毫无输出,貌似因为如下Code:

private volatile Watcher childrenWatcher = new Watcher()
{
@Override
public void process(WatchedEvent event)
{
offerOperation(new RefreshOperation(PathChildrenCache.this, RefreshMode.STANDARD));
}
};


因为"/t/2"和"/t/4"创建后又删除了,事件触发刷新操作,刷新后又无变化造成这个原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: