Description
When I set up a ZooKeeper ensemble that uses Observers, The network is not very good.
I find all of the watcher disappear.
I read the source code and find:
When the observer connect to leader, will dump the DataTree from leader and rebuild in observer.
But the datawachers and childWatches is cleared for this operation.
after i change code like:
WatchManager dataWatchers = zk.getZKDatabase().getDataTree()
.getDataWatches();
WatchManager childWatchers = zk.getZKDatabase().getDataTree()
.getChildWatches();
zk.getZKDatabase().clear();
zk.getZKDatabase().deserializeSnapshot(leaderIs);
zk.getZKDatabase().getDataTree().setDataWatches(dataWatchers);
zk.getZKDatabase().getDataTree().setChildWatches(childWatchers);
The watcher do not disappear