From 10295d322a34868c455f14d892689b7f032818f1 Mon Sep 17 00:00:00 2001 From: "veli.yang" <897900564@qq.com> Date: Thu, 22 Aug 2024 16:28:36 +0800 Subject: [PATCH] [Improvement-16487][Master] Improve the dependent result for workflow dependency tasks (#16488) --- .../server/master/utils/DependentExecute.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/utils/DependentExecute.java b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/utils/DependentExecute.java index 28f9fd682b..f3f48365df 100644 --- a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/utils/DependentExecute.java +++ b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/utils/DependentExecute.java @@ -284,7 +284,7 @@ public class DependentExecute { addItemVarPool(taskInstance.getVarPool(), taskInstance.getEndTime().getTime()); return DependResult.SUCCESS; } - return getDependResultByState(taskInstance.getState()); + return getDependResultOfTask(processInstance, taskInstance); } } @@ -337,18 +337,27 @@ public class DependentExecute { } /** - * get dependent result by task/process instance state + * get dependent result by task/process instance * - * @param state state + * @param processInstance process instance + * @param taskInstance task instance * @return DependResult */ - private DependResult getDependResultByState(TaskExecutionStatus state) { + private DependResult getDependResultOfTask(ProcessInstance processInstance, TaskInstance taskInstance) { + TaskExecutionStatus state = taskInstance.getState(); if (!state.isFinished()) { return DependResult.WAITING; } else if (state.isSuccess()) { return DependResult.SUCCESS; } else { + if (processInstance.getState().isRunning() + && taskInstance.getRetryTimes() < taskInstance.getMaxRetryTimes()) { + log.info("taskDefinitionCode: {}, taskDefinitionName: {}, retryTimes: {}, maxRetryTimes: {}", + taskInstance.getTaskCode(), taskInstance.getName(), taskInstance.getRetryTimes(), + taskInstance.getMaxRetryTimes()); + return DependResult.WAITING; + } log.warn( "The dependent task were not executed successfully, so return depend failed. Task code: {}, task name: {}.", taskInstance.getTaskCode(), taskInstance.getName());