public boolean run()

in manager/dm-server/src/main/java/org/apache/doris/stack/shell/BaseCommand.java [58:109]


    public boolean run(long timeoutMs) {
        buildCommand();
        log.info("run command: {} ,timeout time: {}ms", StringUtils.join(resultCommand, " "), timeoutMs);
        ProcessBuilder pb = new ProcessBuilder(resultCommand);
        Process process = null;
        BufferedReader stdoutBufferedReader = null;
        BufferedReader errorBufferedReader = null;
        try {
            process = pb.start();
            stdoutBufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            errorBufferedReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));

            stdoutResponse = stdoutBufferedReader.lines().parallel().collect(Collectors.joining(System.lineSeparator()));
            errorResponse = errorBufferedReader.lines().parallel().collect(Collectors.joining(System.lineSeparator()));

            if (timeoutMs <= 0) {
                exitCode = process.waitFor();
            } else {
                boolean isExit = process.waitFor(timeoutMs, TimeUnit.MICROSECONDS);
                if (!isExit) {
                    exitCode = 124; // the same as timeout command
                    log.error("command run timeout in {}ms", timeoutMs);
                    return false;
                }
                exitCode = process.exitValue();
            }

            if (exitCode == 0) {
                return true;
            } else {
                log.error("shell command error, exit with {}, response:{}", exitCode, errorResponse);
                return false;
            }
        } catch (IOException | InterruptedException e) {
            log.error("command execute fail", e);
            return false;
        } finally {
            if (process != null) {
                process.destroy();
            }
            try {
                if (stdoutBufferedReader != null) {
                    stdoutBufferedReader.close();
                }
                if (errorBufferedReader != null) {
                    errorBufferedReader.close();
                }
            } catch (IOException e) {
                log.error("close buffered reader fail");
            }
        }
    }