From 7395b980d3d76646dada5b7e9220d946b154001e Mon Sep 17 00:00:00 2001 From: xiangzihao <460888207@qq.com> Date: Mon, 3 Jan 2022 15:52:50 +0800 Subject: [PATCH] [Fix-7767]Task instance is not deleted while deleting the process instance (#7768) * fix bug_7767 * fix bug_7767 * fix bug_7767 * fix bug_7767 * fix bug_7767 --- .../impl/ProcessInstanceServiceImpl.java | 1 + .../service/process/ProcessService.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java index 195adcd417..f4f1e2f7ad 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java @@ -632,6 +632,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce processService.deleteAllSubWorkProcessByParentId(processInstanceId); processService.deleteWorkProcessMapByParentId(processInstanceId); + processService.deleteWorkTaskInstanceByProcessInstanceId(processInstanceId); if (delete > 0) { putMsg(result, Status.SUCCESS); 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 a65f05b349..4441bfbe89 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 @@ -529,6 +529,25 @@ public class ProcessService { } } + /** + * recursive delete all task instance by process instance id + * @param processInstanceId + */ + public void deleteWorkTaskInstanceByProcessInstanceId(int processInstanceId) { + List taskInstanceList = findValidTaskListByProcessId(processInstanceId); + if (CollectionUtils.isEmpty(taskInstanceList)) { + return; + } + + List taskInstanceIdList = new ArrayList<>(); + + for (TaskInstance taskInstance : taskInstanceList) { + taskInstanceIdList.add(taskInstance.getId()); + } + + taskInstanceMapper.deleteBatchIds(taskInstanceIdList); + } + /** * recursive query sub process definition id by parent id. *