private boolean isReach(Map<String, Set<String>> paths, Set<String> inputs, String output) {
        Queue<String> queue = new LinkedList<>(inputs);
        Set<String> preNodes = new HashSet<>(inputs);
        while (!queue.isEmpty()) {
            String node = queue.remove();
            if (paths.get(node) == null) {
                continue;
            }
            Set<String> postNodes = paths.get(node);
            if (postNodes.contains(output)) {
                return true;
            }
            for (String postNode : postNodes) {
                if (!preNodes.contains(postNode)) {
                    preNodes.add(postNode);
                    queue.add(postNode);
                }
            }
        }
        return false;
    }
Check if a pipeline has a circle, if it has, return circled node names
inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/stream/StreamPipeline.java