diff --git a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteRunnable.java b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteRunnable.java index fa658c04f1..eafba17f69 100644 --- a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteRunnable.java +++ b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteRunnable.java @@ -1285,9 +1285,10 @@ public class WorkflowExecuteRunnable implements IWorkflowExecuteRunnable { || state == TaskExecutionStatus.SUBMITTED_SUCCESS || state == TaskExecutionStatus.DELAY_EXECUTION) { // try to take over task instance - if (state != TaskExecutionStatus.SUBMITTED_SUCCESS - && state != TaskExecutionStatus.DELAY_EXECUTION - && tryToTakeOverTaskInstance(existTaskInstance)) { + if (state == TaskExecutionStatus.SUBMITTED_SUCCESS || state == TaskExecutionStatus.DELAY_EXECUTION + || state == TaskExecutionStatus.DISPATCH) { + // The taskInstance is not in running, directly takeover it + } else if (tryToTakeOverTaskInstance(existTaskInstance)) { log.info("Success take over task {}", existTaskInstance.getName()); continue; } else {