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 */