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