public List<String> getMetaReplicaNodesAndWatchChildren() throws KeeperException {
    List<String> childrenOfBaseNode =
      ZKUtil.listChildrenAndWatchForNewChildren(this, znodePaths.baseZNode);
    // Need to throw here instead of returning an empty list if the base znode hasn't been created
    // Caller should retry in that case, versus thinking the base znode has a watcher set
    if (childrenOfBaseNode == null) {
      keeperException(new KeeperException.NoNodeException(znodePaths.baseZNode));
    }
    return filterMetaReplicaNodes(childrenOfBaseNode);
  }
Same as {@link #getMetaReplicaNodes()} except that this also registers a watcher on base znode
for subsequent CREATE/DELETE operations on child nodes.
hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKWatcher.java