Browse Source

[bug fix] fix bug:2634:Process shows success,when the task of the process is killed in the terminal (#2731)

* fix bug: some bugs about worker group from 1.2.0 to 1.3.0

* fix bug: scheduler from 1.2.0 to 1.3.0 do not work

* fix bug: scheduler from 1.2.0 to 1.3.0 do not work

* fix ut bug

* fix bug: Process shows success,when the task of the process is killed in the termina

* fix bug #2634: Process shows success,when the task of the process is killed in the terminal

Co-authored-by: baoliang <baoliang@analysys.com.cn>
bao liang 5 years ago
parent
commit
a9da86abb4

+ 1 - 1
dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/ExecutionStatus.java

@@ -76,7 +76,7 @@ public enum ExecutionStatus {
   * @return status
   */
    public boolean typeIsFailure(){
-     return this == FAILURE || this == NEED_FAULT_TOLERANCE || this == KILL;
+     return this == FAILURE || this == NEED_FAULT_TOLERANCE;
    }
 
  /**

+ 9 - 3
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterExecThread.java

@@ -805,7 +805,8 @@ public class MasterExecThread implements Runnable {
         ProcessInstance instance = processService.findProcessInstanceById(processInstance.getId());
         ExecutionStatus state = instance.getState();
 
-        if(activeTaskNode.size() > 0 || haveRetryTaskStandBy()){
+        if(activeTaskNode.size() > 0 || retryTaskExists()){
+            // active task and retry task exists
             return runningState(state);
         }
         // process failure
@@ -828,7 +829,8 @@ public class MasterExecThread implements Runnable {
             List<TaskInstance> stopList = getCompleteTaskByState(ExecutionStatus.STOP);
             List<TaskInstance> killList = getCompleteTaskByState(ExecutionStatus.KILL);
             if(CollectionUtils.isNotEmpty(stopList)
-                    || CollectionUtils.isNotEmpty(killList) || !isComplementEnd()){
+                    || CollectionUtils.isNotEmpty(killList)
+                    || !isComplementEnd()){
                 return ExecutionStatus.STOP;
             }else{
                 return ExecutionStatus.SUCCESS;
@@ -837,9 +839,13 @@ public class MasterExecThread implements Runnable {
 
         // success
         if(state == ExecutionStatus.RUNNING_EXEUTION){
+            List<TaskInstance> killTasks = getCompleteTaskByState(ExecutionStatus.KILL);
             if(readyToSubmitTaskList.size() > 0){
                 //tasks currently pending submission, no retries, indicating that depend is waiting to complete
                 return ExecutionStatus.RUNNING_EXEUTION;
+            }else if(CollectionUtils.isNotEmpty(killTasks)){
+                // tasks maybe killed manually
+                return ExecutionStatus.FAILURE;
             }else{
                 //  if the waiting queue is empty and the status is in progress, then success
                 return ExecutionStatus.SUCCESS;
@@ -853,7 +859,7 @@ public class MasterExecThread implements Runnable {
      * whether standby task list have retry tasks
      * @return
      */
-    private boolean haveRetryTaskStandBy() {
+    private boolean retryTaskExists() {
 
         boolean result = false;