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();
+        }
+    }
+
 }

Reply via email to