You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by le...@apache.org on 2022/07/01 01:53:18 UTC

[dolphinscheduler] branch 2.0.6-prepare updated: [Bug] [Fix-10672] Dependent task retry bug (#10707)

This is an automated email from the ASF dual-hosted git repository.

leonbao pushed a commit to branch 2.0.6-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/2.0.6-prepare by this push:
     new 3c20fe7a8a [Bug] [Fix-10672] Dependent task retry bug (#10707)
3c20fe7a8a is described below

commit 3c20fe7a8aa091ffa3d5d8dedbdcfa0dd43a56aa
Author: JinYong Li <42...@users.noreply.github.com>
AuthorDate: Fri Jul 1 09:53:10 2022 +0800

    [Bug] [Fix-10672] Dependent task retry bug (#10707)
    
    * fix 10517
    
    * fix dep warn bug
    
    Co-authored-by: JinyLeeChina <ji...@foxmail.com>
---
 .../server/master/runner/WorkflowExecuteThread.java                | 6 +++++-
 .../org/apache/dolphinscheduler/server/utils/DependentExecute.java | 7 ++++++-
 .../apache/dolphinscheduler/service/process/ProcessService.java    | 7 +++++++
 3 files changed, 18 insertions(+), 2 deletions(-)

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 76e44e43e0..39e903bdc2 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
@@ -348,13 +348,17 @@ public class WorkflowExecuteThread implements Runnable {
             return true;
         }
         TaskTimeoutStrategy taskTimeoutStrategy = taskInstance.getTaskDefine().getTimeoutNotifyStrategy();
-        if (TaskTimeoutStrategy.FAILED == taskTimeoutStrategy && !taskInstance.getState().typeIsFinished()) {
+        if ((TaskTimeoutStrategy.FAILED == taskTimeoutStrategy || TaskTimeoutStrategy.WARNFAILED == taskTimeoutStrategy) && !taskInstance.getState().typeIsFinished()) {
             ITaskProcessor taskProcessor = activeTaskProcessorMaps.get(stateEvent.getTaskInstanceId());
             taskProcessor.action(TaskAction.TIMEOUT);
             if (taskInstance.isDependTask()) {
                 TaskInstance task = processService.findTaskInstanceById(taskInstance.getId());
                 taskFinished(task);
             }
+            if (TaskTimeoutStrategy.WARNFAILED == taskTimeoutStrategy) {
+                ProjectUser projectUser = processService.queryProjectWithUserByProcessInstanceId(processInstance.getId());
+                processAlertManager.sendTaskTimeoutAlert(processInstance, taskInstance, projectUser);
+            }
         } else {
             ProjectUser projectUser = processService.queryProjectWithUserByProcessInstanceId(processInstance.getId());
             processAlertManager.sendTaskTimeoutAlert(processInstance, taskInstance, projectUser);
diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/DependentExecute.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/DependentExecute.java
index 2ae48f873d..77af8699f5 100644
--- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/DependentExecute.java
+++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/DependentExecute.java
@@ -196,7 +196,12 @@ public class DependentExecute {
         TaskInstance taskInstance = processService.findLastTaskInstanceInterval(taskCode, dateInterval);
         DependResult result;
         if (taskInstance == null) {
-            logger.warn("Cannot find the task in the process instance when the ProcessInstance is finish, taskCode: {}", taskCode);
+            TaskDefinition taskDefinition = processService.findTaskDefinitionByCode(taskCode);
+            if (taskDefinition == null) {
+                logger.error("Cannot find the task definition, something error, taskCode: {}", taskCode);
+            } else {
+                logger.warn("Cannot find the task in the process instance when the ProcessInstance is finish, taskCode: {}, taskName: {}", taskCode, taskDefinition.getName());
+            }
             result = DependResult.FAILED;
         } else {
             logger.info("The running task, taskId:{}, taskCode:{}, taskName:{}", taskInstance.getId(), taskInstance.getTaskCode(), taskInstance.getName());
diff --git a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
index 43a12560ae..ae71812b57 100644
--- a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
+++ b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
@@ -2489,6 +2489,13 @@ public class ProcessService {
         return taskDefinitionLogMapper.queryByDefinitionCodeAndVersion(taskCode, taskDefinitionVersion);
     }
 
+    /**
+     * find task definition by code
+     */
+    public TaskDefinition findTaskDefinitionByCode(long taskCode) {
+        return taskDefinitionMapper.queryByCode(taskCode);
+    }
+
     /**
      * find process task relation list by process
      */