From 7bb0bebffbe8ae1bfb5d067048494f37cf42b243 Mon Sep 17 00:00:00 2001 From: "dk.technoboy" Date: Fri, 20 Dec 2019 19:11:23 +0800 Subject: [PATCH] fix MasterBaseTaskExecThread submit method bug --- .../runner/MasterBaseTaskExecThread.java | 22 +++++++++---------- .../master/runner/MasterTaskExecThread.java | 3 +++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterBaseTaskExecThread.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterBaseTaskExecThread.java index 9bb5c555fd..62789a9c6d 100644 --- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterBaseTaskExecThread.java +++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterBaseTaskExecThread.java @@ -114,30 +114,29 @@ public class MasterBaseTaskExecThread implements Callable { Integer commitRetryInterval = masterConfig.getMasterTaskCommitInterval(); int retryTimes = 1; - boolean taskDBFlag = false; - boolean taskQueueFlag = false; + boolean submitDB = false; + boolean submitQueue = false; TaskInstance task = null; - while (true){ + while (retryTimes <= commitRetryTimes){ try { - if(!taskDBFlag){ + if(!submitDB){ // submit task to db task = processDao.submitTask(taskInstance, processInstance); if(task != null && task.getId() != 0){ - taskDBFlag = true; + submitDB = true; } } - if(taskDBFlag && !taskQueueFlag){ + if(submitDB && !submitQueue){ // submit task to queue - taskQueueFlag = processDao.submitTaskToQueue(task); + submitQueue = processDao.submitTaskToQueue(task); } - if(taskDBFlag && taskQueueFlag){ + if(submitDB && submitQueue){ return task; } - if(!taskDBFlag){ + if(!submitDB){ logger.error("task commit to db failed , task has already retry {} times, please check the database", retryTimes); - }else if(!taskQueueFlag){ + }else if(!submitDB){ logger.error("task commit to queue failed , task has already retry {} times, please check the database", retryTimes); - } Thread.sleep(commitRetryInterval); } catch (Exception e) { @@ -145,6 +144,7 @@ public class MasterBaseTaskExecThread implements Callable { } retryTimes += 1; } + return task; } /** diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterTaskExecThread.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterTaskExecThread.java index e91deca511..16bb16de38 100644 --- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterTaskExecThread.java +++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterTaskExecThread.java @@ -74,6 +74,9 @@ public class MasterTaskExecThread extends MasterBaseTaskExecThread { public Boolean submitWaitComplete() { Boolean result = false; this.taskInstance = submit(); + if(this.taskInstance == null){ + return result; + } if(!this.taskInstance.getState().typeIsFinished()) { result = waitTaskQuit(); }