From aa19a06abbc13b402217b75e8364bb5010671b88 Mon Sep 17 00:00:00 2001 From: Kirs Date: Thu, 10 Dec 2020 10:57:12 +0800 Subject: [PATCH] [FIX-PR-4097][server-master]task ack miss (#4189) When the message of successful execution arrives earlier than the message of ack, the message of ack will be discarded, resulting in some information missing --- .../server/master/processor/queue/TaskResponseService.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/processor/queue/TaskResponseService.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/processor/queue/TaskResponseService.java index 51ecf454e..1b5eddbd6 100644 --- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/processor/queue/TaskResponseService.java +++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/processor/queue/TaskResponseService.java @@ -138,8 +138,9 @@ public class TaskResponseService { case ACK: try { TaskInstance taskInstance = processService.findTaskInstanceById(taskResponseEvent.getTaskInstanceId()); - if (taskInstance != null && !taskInstance.getState().typeIsFinished()) { - processService.changeTaskState(taskInstance, taskResponseEvent.getState(), + if (taskInstance != null) { + ExecutionStatus status = taskInstance.getState().typeIsFinished() ? taskInstance.getState() : taskResponseEvent.getState(); + processService.changeTaskState(taskInstance, status, taskResponseEvent.getStartTime(), taskResponseEvent.getWorkerAddress(), taskResponseEvent.getExecutePath(), -- GitLab