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;
}