diff options
Diffstat (limited to 'zookeeper-server/src/main/java/org/apache/zookeeper/server/DataTree.java')
-rw-r--r-- | zookeeper-server/src/main/java/org/apache/zookeeper/server/DataTree.java | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataTree.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataTree.java index a6f605390..603cb0b38 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataTree.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataTree.java @@ -675,7 +675,9 @@ public class DataTree { public void addWatch(String basePath, Watcher watcher, int mode) { WatcherMode watcherMode = WatcherMode.fromZooDef(mode); dataWatches.addWatch(basePath, watcher, watcherMode); - childWatches.addWatch(basePath, watcher, watcherMode); + if (watcherMode != WatcherMode.PERSISTENT_RECURSIVE) { + childWatches.addWatch(basePath, watcher, watcherMode); + } } public byte[] getData(String path, Stat stat, Watcher watcher) throws NoNodeException { @@ -1511,7 +1513,6 @@ public class DataTree { this.dataWatches.addWatch(path, watcher, WatcherMode.PERSISTENT); } for (String path : persistentRecursiveWatches) { - this.childWatches.addWatch(path, watcher, WatcherMode.PERSISTENT_RECURSIVE); this.dataWatches.addWatch(path, watcher, WatcherMode.PERSISTENT_RECURSIVE); } } |