Browse Source

cherry-pick Fix task instance will generate multiple times when retry interval is 0/s

3.1.4-release
Wenjun Ruan 2 years ago committed by zhuangchong
parent
commit
3fedc8c8b8
  1. 13
      dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/event/TaskStateEventHandler.java

13
dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/event/TaskStateEventHandler.java

@ -59,11 +59,20 @@ public class TaskStateEventHandler implements StateEventHandler {
task.getState(), taskStateEvent.getStatus()); task.getState(), taskStateEvent.getStatus());
Map<Long, Integer> completeTaskMap = workflowExecuteRunnable.getCompleteTaskMap(); Map<Long, Integer> completeTaskMap = workflowExecuteRunnable.getCompleteTaskMap();
if (task.getState().isFinished()
&& (taskStateEvent.getStatus() != null && taskStateEvent.getStatus().isRunning())) {
String errorMessage = String.format(
"The current task instance state is %s, but the task state event status is %s, so the task state event will be ignored",
task.getState(),
taskStateEvent.getStatus());
logger.warn(errorMessage);
throw new StateEventHandleError(errorMessage);
}
if (task.getState().isFinished()) { if (task.getState().isFinished()) {
if (completeTaskMap.containsKey(task.getTaskCode()) if (completeTaskMap.containsKey(task.getTaskCode())
&& completeTaskMap.get(task.getTaskCode()) == task.getId()) { && completeTaskMap.get(task.getTaskCode()).equals(task.getId())) {
logger.warn("The task instance is already complete, stateEvent: {}", stateEvent); logger.warn("The task instance is already complete, stateEvent: {}", stateEvent);
return true; return true;
} }
workflowExecuteRunnable.taskFinished(task); workflowExecuteRunnable.taskFinished(task);

Loading…
Cancel
Save