You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ke...@apache.org on 2022/11/27 06:27:54 UTC
[dolphinscheduler] branch dev updated: [Bug-12994] [Worker] Fix kill process does not take effect (#12995)
This is an automated email from the ASF dual-hosted git repository.
kerwin pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new d480c271ec [Bug-12994] [Worker] Fix kill process does not take effect (#12995)
d480c271ec is described below
commit d480c271ec7d86b3af1a6132b88bbb2cdcabc558
Author: Kerwin <37...@users.noreply.github.com>
AuthorDate: Sun Nov 27 14:27:48 2022 +0800
[Bug-12994] [Worker] Fix kill process does not take effect (#12995)
---
.../plugin/task/api/AbstractCommandExecutor.java | 25 ++++++++++------------
1 file changed, 11 insertions(+), 14 deletions(-)
diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java
index bdcf25c3e7..8674723911 100644
--- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java
+++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java
@@ -17,6 +17,7 @@
package org.apache.dolphinscheduler.plugin.task.api;
+import static org.apache.dolphinscheduler.plugin.task.api.ProcessUtils.getPidsStr;
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.EXIT_CODE_FAILURE;
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.EXIT_CODE_KILL;
@@ -233,10 +234,11 @@ public abstract class AbstractCommandExecutor {
ProcessUtils.kill(taskRequest);
result.setExitStatusCode(EXIT_CODE_FAILURE);
}
-
- logger.info(
- "process has exited, execute path:{}, processId:{} ,exitStatusCode:{} ,processWaitForStatus:{} ,processExitValue:{}",
- taskRequest.getExecutePath(), processId, result.getExitStatusCode(), status, process.exitValue());
+ int exitCode = process.exitValue();
+ String exitLogMessage = EXIT_CODE_KILL == exitCode ? "process has killed." : "process has exited.";
+ logger.info(exitLogMessage
+ + " execute path:{}, processId:{} ,exitStatusCode:{} ,processWaitForStatus:{} ,processExitValue:{}",
+ taskRequest.getExecutePath(), processId, result.getExitStatusCode(), status, exitCode);
return result;
}
@@ -263,16 +265,11 @@ public abstract class AbstractCommandExecutor {
logger.info("cancel process: {}", processId);
// kill , waiting for completion
- boolean killed = softKill(processId);
+ boolean alive = softKill(processId);
- if (!killed) {
+ if (alive) {
// hard kill
hardKill(processId);
-
- // destory
- process.destroy();
-
- process = null;
}
}
@@ -308,12 +305,12 @@ public abstract class AbstractCommandExecutor {
private void hardKill(int processId) {
if (processId != 0 && process.isAlive()) {
try {
- String cmd = String.format("kill -9 %d", processId);
+ String cmd = String.format("kill -9 %s", getPidsStr(processId));
cmd = OSUtils.getSudoCmd(taskRequest.getTenantCode(), cmd);
logger.info("hard kill task:{}, process id:{}, cmd:{}", taskRequest.getTaskAppId(), processId, cmd);
- Runtime.getRuntime().exec(cmd);
- } catch (IOException e) {
+ OSUtils.exeCmd(cmd);
+ } catch (Exception e) {
logger.error("kill attempt failed ", e);
}
}