public static boolean hasChildren(ClusterState clusterState, String path) throws Exception {
    if (clusterState == null || path == null) {
      return false;
    }

    List<String> children = clusterState.get_children(path, false);
    return children != null && !children.isEmpty();
  }
  public static List<ZookeeperNode> listZKNodes(String clusterName, String parent) {
    List<ZookeeperNode> nodes = new ArrayList<>();
    try {
      ClusterState clusterState = getAndCreateClusterState(clusterName);
      if (clusterState == null) {
        throw new IllegalStateException("Cluster state is null");
      }

      List<String> elements = clusterState.get_children(parent, false);
      for (String element : elements) {
        String path = PathUtils.normalize_path(parent + Cluster.ZK_SEPERATOR + element);
        nodes.add(new ZookeeperNode(parent, element, hasChildren(clusterState, path)));
      }
    } catch (Exception e) {
      LOG.error("Get zookeeper info error!", e);
    }
    return nodes;
  }