From e0e2078ae0a3b4c0cecf8859d1dbdee35e48bb35 Mon Sep 17 00:00:00 2001 From: zeaslity Date: Sun, 26 Feb 2023 14:40:49 +0800 Subject: [PATCH] [agent][executor]- bug - 10 --- .../io/wdd/agent/executor/CommandExecutor.java | 7 +++++-- .../executor/thread/CommandExecLogCache.java | 15 ++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/agent/src/main/java/io/wdd/agent/executor/CommandExecutor.java b/agent/src/main/java/io/wdd/agent/executor/CommandExecutor.java index dcf4cd0..df78de5 100644 --- a/agent/src/main/java/io/wdd/agent/executor/CommandExecutor.java +++ b/agent/src/main/java/io/wdd/agent/executor/CommandExecutor.java @@ -40,7 +40,7 @@ public class CommandExecutor { /** * 一个命令执行的最长等待时间 */ - int processMaxWaitSeconds = 20; + int processMaxWaitSeconds = 10; /** * 持久化命令执行的最长等待时间 @@ -215,7 +215,10 @@ public class CommandExecutor { } // 关停任务执行的缓存日志收集 BufferedReader 否则无法终止 - commandExecLogCache.StopExecLogBufferedReader(streamKey); + commandExecLogCache.StopExecLogBufferedReader( + streamKey, + process + ); } diff --git a/agent/src/main/java/io/wdd/agent/executor/thread/CommandExecLogCache.java b/agent/src/main/java/io/wdd/agent/executor/thread/CommandExecLogCache.java index 2581192..e55cd15 100644 --- a/agent/src/main/java/io/wdd/agent/executor/thread/CommandExecLogCache.java +++ b/agent/src/main/java/io/wdd/agent/executor/thread/CommandExecLogCache.java @@ -148,7 +148,7 @@ public class CommandExecLogCache { * 对于一些没有中止的任务,必须要手动将读取的 InputStream流关闭 * 否则部分任务的日志无法收集 */ - public void StopExecLogBufferedReader(String streamKey) { + public void StopExecLogBufferedReader(String streamKey, Process process) { BufferedReader bufferedReader = CommandLogReaderMap.get(streamKey); @@ -160,7 +160,14 @@ public class CommandExecLogCache { if (ObjectUtils.isNotEmpty(bufferedReader)) { try { + + // 关闭command的输出流 + process + .getInputStream() + .close(); + bufferedReader.close(); + } catch (IOException e) { throw new RuntimeException(e); } @@ -185,12 +192,6 @@ public class CommandExecLogCache { .writerWithDefaultPrettyPrinter() .writeValueAsString(cachedCommandLog); - log.info( - "任务 [ {} ] 的缓存执行结果为 \n{}", - streamKey, - s - ); - System.out.println("s = " + s);