diff --git a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java index 1f27857513d3..fc906491d151 100644 --- a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java +++ b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java @@ -793,6 +793,14 @@ private Boolean checkCmdParam(Command command, Map cmdParam) { break; case RECOVER_TOLERANCE_FAULT_PROCESS: // recover tolerance fault process + // If the workflow instance is in ready state, we will change to running, this can avoid the workflow + // instance + // status is not correct with taskInsatnce status + if (processInstance.getState() == WorkflowExecutionStatus.READY_PAUSE + || processInstance.getState() == WorkflowExecutionStatus.READY_STOP) { + // todo: If we handle the ready state in WorkflowExecuteRunnable then we can remove below code + processInstance.setState(WorkflowExecutionStatus.RUNNING_EXECUTION); + } processInstance.setRecovery(Flag.YES); processInstance.setRunTimes(runTime + 1); runStatus = processInstance.getState();