This is an automated email from the ASF dual-hosted git repository.
SbloodyS 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 a60271d6c9 [Improvement-18388][TASK] Killed shell tasks should be
displayed as FAILURE (#18407)
a60271d6c9 is described below
commit a60271d6c9c1050e0cb8bfdef9c0303233514655
Author: HomminLee <[email protected]>
AuthorDate: Wed Jul 15 14:49:30 2026 +0800
[Improvement-18388][TASK] Killed shell tasks should be displayed as FAILURE
(#18407)
---
.../plugin/task/api/AbstractCommandExecutor.java | 6 ++-
.../plugin/task/api/AbstractTask.java | 4 +-
.../plugin/task/api/TaskConstants.java | 1 +
.../plugin/task/api/AbstractTaskTest.java | 44 ++++++++++++++++++++++
4 files changed, 52 insertions(+), 3 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 7abd3a98c5..19452fac8e 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
@@ -21,6 +21,7 @@ import static
org.apache.dolphinscheduler.common.constants.Constants.SLEEP_TIME_
import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.EXIT_CODE_FAILURE;
import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.EXIT_CODE_HARD_KILL;
import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.EXIT_CODE_KILL;
+import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.EXIT_CODE_SIGINT_KILL;
import org.apache.dolphinscheduler.common.thread.ThreadUtils;
import org.apache.dolphinscheduler.common.utils.OSUtils;
@@ -151,8 +152,9 @@ public abstract class AbstractCommandExecutor {
result.setExitStatusCode(EXIT_CODE_FAILURE);
}
int exitCode = this.process.exitValue();
- String exitLogMessage = (EXIT_CODE_KILL == exitCode ||
EXIT_CODE_HARD_KILL == exitCode) ? "process has killed."
- : "process has exited.";
+ boolean isCancelled =
+ EXIT_CODE_KILL == exitCode || EXIT_CODE_HARD_KILL == exitCode
|| EXIT_CODE_SIGINT_KILL == exitCode;
+ String exitLogMessage = isCancelled ? "process has killed." : "process
has exited.";
log.info("{} execute path:{}, processId:{} ,exitStatusCode:{}
,processWaitForStatus:{} ,processExitValue:{}",
exitLogMessage, taskRequest.getExecutePath(), processId,
result.getExitStatusCode(), status, exitCode);
return result;
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractTask.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractTask.java
index 006f40aa14..0c8f208fcb 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractTask.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractTask.java
@@ -141,7 +141,9 @@ public abstract class AbstractTask {
if (exitStatusCode == TaskConstants.EXIT_CODE_SUCCESS) {
return TaskExecutionStatus.SUCCESS;
}
- if (exitStatusCode == TaskConstants.EXIT_CODE_KILL || exitStatusCode
== TaskConstants.EXIT_CODE_HARD_KILL) {
+ if (exitStatusCode == TaskConstants.EXIT_CODE_KILL
+ || exitStatusCode == TaskConstants.EXIT_CODE_HARD_KILL
+ || exitStatusCode == TaskConstants.EXIT_CODE_SIGINT_KILL) {
return TaskExecutionStatus.KILL;
}
return TaskExecutionStatus.FAILURE;
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/TaskConstants.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/TaskConstants.java
index ee917d24ac..54f50d5bfe 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/TaskConstants.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/TaskConstants.java
@@ -40,6 +40,7 @@ public class TaskConstants {
public static final int EXIT_CODE_KILL = 137;
public static final int EXIT_CODE_HARD_KILL = 143;
+ public static final int EXIT_CODE_SIGINT_KILL = 130;
public static final String PID = "pid";
public static final String QUESTION = "?";
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/AbstractTaskTest.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/AbstractTaskTest.java
index a7439aef67..5421c05575 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/AbstractTaskTest.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/AbstractTaskTest.java
@@ -17,6 +17,10 @@
package org.apache.dolphinscheduler.plugin.task.api;
+import org.apache.dolphinscheduler.plugin.task.api.enums.TaskExecutionStatus;
+import
org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters;
+import
org.apache.dolphinscheduler.plugin.task.api.parameters.SubWorkflowParameters;
+
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -38,4 +42,44 @@ public class AbstractTaskTest {
Assertions.assertEquals(jobId, str.substring(6));
}
+ @Test
+ public void testGetExitStatus() {
+ AbstractTask task = new TestTask();
+
+ task.setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
+ Assertions.assertEquals(TaskExecutionStatus.SUCCESS,
task.getExitStatus());
+
+ task.setExitStatusCode(TaskConstants.EXIT_CODE_KILL);
+ Assertions.assertEquals(TaskExecutionStatus.KILL,
task.getExitStatus());
+
+ task.setExitStatusCode(TaskConstants.EXIT_CODE_HARD_KILL);
+ Assertions.assertEquals(TaskExecutionStatus.KILL,
task.getExitStatus());
+
+ task.setExitStatusCode(TaskConstants.EXIT_CODE_SIGINT_KILL);
+ Assertions.assertEquals(TaskExecutionStatus.KILL,
task.getExitStatus());
+
+ task.setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
+ Assertions.assertEquals(TaskExecutionStatus.FAILURE,
task.getExitStatus());
+ }
+
+ private static final class TestTask extends AbstractTask {
+
+ private TestTask() {
+ super(new TaskExecutionContext());
+ }
+
+ @Override
+ public void handle(TaskCallBack taskCallBack) {
+ }
+
+ @Override
+ public void cancel() {
+ }
+
+ @Override
+ public AbstractParameters getParameters() {
+ return new SubWorkflowParameters();
+ }
+ }
+
}