From 8ee1049660438871c8cc1323f12863aa2c0f1bbb Mon Sep 17 00:00:00 2001 From: lile Date: Thu, 23 Jan 2025 13:37:29 +0800 Subject: [PATCH] Fix #16978 AbstractDelayEvent compare method is incorrect --- .../task/statemachine/TaskFailureStateAction.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/statemachine/TaskFailureStateAction.java b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/statemachine/TaskFailureStateAction.java index 005a0003caab..196e28dfac89 100644 --- a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/statemachine/TaskFailureStateAction.java +++ b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/statemachine/TaskFailureStateAction.java @@ -130,6 +130,16 @@ public void killEventAction(final IWorkflowExecutionRunnable workflowExecutionRu final ITaskExecutionRunnable taskExecutionRunnable, final TaskKillLifecycleEvent taskKillEvent) { throwExceptionIfStateIsNotMatch(taskExecutionRunnable); + final IWorkflowExecutionGraph workflowExecutionGraph = taskExecutionRunnable.getWorkflowExecutionGraph(); + // for now, killEventAction can be fired on failure with retry + // there is no task executor now, shouldn't call workflowExecutionGraph.isTaskExecutionRunnableActive() + // it's better to call super.killedEventAction() direct + if (taskExecutionRunnable.isTaskInstanceCanRetry() + // && workflowExecutionGraph.isTaskExecutionRunnableActive(taskExecutionRunnable) + ) { + super.killedEventAction(workflowExecutionRunnable, taskExecutionRunnable, TaskKilledLifecycleEvent.of(taskExecutionRunnable)); + return; + } logWarningIfCannotDoAction(taskExecutionRunnable, taskKillEvent); }