From 0b376f7f901efb8724dd2993d82dd2e745503350 Mon Sep 17 00:00:00 2001 From: wind Date: Sun, 5 Dec 2021 15:27:41 +0800 Subject: [PATCH] [2.0.1-cherry-pick] fix bug : Tez state, complement data kill, dependent node (#7188) * [Fix-7037][dolphincheduler-server] process instance can not be killed when complement data (#7140) * fix bug 7037 * update processComplementData Co-authored-by: SbloodyS * [Fix-5551][common] Fix ExecutionStatus for hive-on-Tez application (#6289) * add ENDED state * Update HadoopUtils.java * [Fix-7093][dolphincheduler-server] fix dependent node stuck in running (#7116) * fix bug 7093 * remove redundant else Co-authored-by: SbloodyS Co-authored-by: SbloodyS <460888207@qq.com> Co-authored-by: SbloodyS Co-authored-by: Manhua --- .../java/org/apache/dolphinscheduler/common/Constants.java | 4 ++++ .../org/apache/dolphinscheduler/common/utils/HadoopUtils.java | 1 + .../server/master/runner/StateWheelExecuteThread.java | 3 +-- .../server/master/runner/WorkflowExecuteThread.java | 4 ++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java index 7f97c9c023..e564b1d6a3 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java @@ -658,6 +658,10 @@ public final class Constants { * SUCCEEDED */ public static final String SUCCEEDED = "SUCCEEDED"; + /** + * ENDED + */ + public static final String ENDED = "ENDED"; /** * NEW */ diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HadoopUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HadoopUtils.java index 8f2e2340a2..3b6ac17019 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HadoopUtils.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HadoopUtils.java @@ -453,6 +453,7 @@ public class HadoopUtils implements Closeable { case Constants.ACCEPTED: return ExecutionStatus.SUBMITTED_SUCCESS; case Constants.SUCCEEDED: + case Constants.ENDED: return ExecutionStatus.SUCCESS; case Constants.NEW: case Constants.NEW_SAVING: diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/StateWheelExecuteThread.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/StateWheelExecuteThread.java index f2b10f7898..50406cc27d 100644 --- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/StateWheelExecuteThread.java +++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/StateWheelExecuteThread.java @@ -91,9 +91,8 @@ public class StateWheelExecuteThread extends Thread { for (TaskInstance taskInstance : this.taskInstanceCheckList.values()) { if (TimeoutFlag.OPEN == taskInstance.getTaskDefine().getTimeoutFlag()) { long timeRemain = DateUtils.getRemainTime(taskInstance.getStartTime(), taskInstance.getTaskDefine().getTimeout() * Constants.SEC_2_MINUTES_TIME_UNIT); - if (0 <= timeRemain && processTimeout(taskInstance)) { + if (0 >= timeRemain && processTimeout(taskInstance)) { taskInstanceCheckList.remove(taskInstance.getId()); - return; } } if (taskInstance.taskCanRetry() && taskInstance.retryTaskIntervalOverTime()) { diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java index 8c19a6a686..1e45ec4824 100644 --- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java +++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java @@ -404,6 +404,10 @@ public class WorkflowExecuteThread implements Runnable { return false; } + if (processInstance.getState() == ExecutionStatus.READY_STOP) { + return false; + } + Date scheduleDate = processInstance.getScheduleTime(); if (scheduleDate == null) { scheduleDate = complementListDate.get(0);