[Fix-9065] [master] when task submit failed, remove from queue and add state event to thread (#9186)

* [Fix-9065] [master] when task submit failed, remove from queue and add state event to thread

This closes #9065

* Update dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java

yes, your idea is better

Co-authored-by: caishunfeng <caishunfeng2021@gmail.com>

* [Bug-9065] [master] update logger info

Co-authored-by: guoshupei <guoshupei@lixiang.com>
Co-authored-by: caishunfeng <caishunfeng2021@gmail.com>
dependabot/maven/org.springframework-spring-beans-5.3.18
guoshupei 2022-04-01 22:23:35 +08:00 committed by GitHub
parent 6b2a4e31ea
commit 3e5781b6e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 1 deletions

View File

@ -1637,7 +1637,9 @@ public class WorkflowExecuteThread {
stateEvent.setExecutionStatus(processInstance.getState()); stateEvent.setExecutionStatus(processInstance.getState());
stateEvent.setProcessInstanceId(this.processInstance.getId()); stateEvent.setProcessInstanceId(this.processInstance.getId());
stateEvent.setType(StateEventType.PROCESS_STATE_CHANGE); stateEvent.setType(StateEventType.PROCESS_STATE_CHANGE);
this.processStateChangeHandler(stateEvent); // this.processStateChangeHandler(stateEvent);
// replace with `stateEvents`, make sure `WorkflowExecuteThread` can be deleted to avoid memory leaks
this.stateEvents.add(stateEvent);
} }
} }
@ -1800,6 +1802,11 @@ public class WorkflowExecuteThread {
TaskInstance taskInstance = submitTaskExec(task); TaskInstance taskInstance = submitTaskExec(task);
if (taskInstance == null) { if (taskInstance == null) {
this.taskFailedSubmit = true; this.taskFailedSubmit = true;
// Remove and add to complete map and error map
removeTaskFromStandbyList(task);
completeTaskMap.put(task.getTaskCode(), task.getId());
errorTaskMap.put(task.getTaskCode(), task.getId());
logger.error("process {}, task {}, code:{} submit task failed.", task.getProcessInstanceId(), task.getName(), task.getTaskCode());
} else { } else {
removeTaskFromStandbyList(task); removeTaskFromStandbyList(task);
} }