You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ji...@apache.org on 2022/07/01 05:58:11 UTC

[dolphinscheduler] branch 2.0.6-prepare updated: [Bug] [Fix-10673] Workflow recovery bug with failed tasks (#10722)

This is an automated email from the ASF dual-hosted git repository.

jinyleechina pushed a commit to branch 2.0.6-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/2.0.6-prepare by this push:
     new ab046dae9d [Bug] [Fix-10673] Workflow recovery bug with failed tasks (#10722)
ab046dae9d is described below

commit ab046dae9dd36e1d52a9b58e7964da416dd5bf32
Author: JinYong Li <42...@users.noreply.github.com>
AuthorDate: Fri Jul 1 13:58:05 2022 +0800

    [Bug] [Fix-10673] Workflow recovery bug with failed tasks (#10722)
    
    * fix 10517
    
    * fix dep warn bug
    
    * fix recover bug
    
    Co-authored-by: JinyLeeChina <ji...@foxmail.com>
---
 .../server/master/runner/WorkflowExecuteThread.java      | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java
index 39e903bdc2..1a0866f6f2 100644
--- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java
+++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java
@@ -1125,6 +1125,22 @@ public class WorkflowExecuteThread implements Runnable {
             if (errorTaskList.size() > 0) {
                 return true;
             }
+        } else {
+            if (processInstance.getCommandType() == CommandType.RECOVER_TOLERANCE_FAULT_PROCESS
+                || processInstance.getCommandType() == CommandType.RECOVER_SUSPENDED_PROCESS) {
+                List<Integer> failedList = processService.findTaskIdByInstanceState(processInstance.getId(), ExecutionStatus.FAILURE);
+                if (!failedList.isEmpty()) {
+                    return true;
+                }
+                List<Integer> toleranceList = processService.findTaskIdByInstanceState(processInstance.getId(), ExecutionStatus.NEED_FAULT_TOLERANCE);
+                if (!toleranceList.isEmpty()) {
+                    return true;
+                }
+                List<Integer> killedList = processService.findTaskIdByInstanceState(processInstance.getId(), ExecutionStatus.KILL);
+                if (!killedList.isEmpty()) {
+                    return true;
+                }
+            }
         }
         return dependFailedTask.size() > 0;
     }