You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ke...@apache.org on 2022/01/20 05:21:18 UTC
[dolphinscheduler] branch 2.0.3-prepare updated: add delete workflow instance when delete process definition (#8131)
This is an automated email from the ASF dual-hosted git repository.
kerwin pushed a commit to branch 2.0.3-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/2.0.3-prepare by this push:
new 4748df9 add delete workflow instance when delete process definition (#8131)
4748df9 is described below
commit 4748df9990f97d14c7ce5e85b3e4013992155671
Author: wind <ca...@users.noreply.github.com>
AuthorDate: Thu Jan 20 13:21:01 2022 +0800
add delete workflow instance when delete process definition (#8131)
Co-authored-by: caishunfeng <53...@qq.com>
---
.../service/impl/ProcessDefinitionServiceImpl.java | 33 ++++++++++++++++++++++
.../service/process/ProcessService.java | 3 +-
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
index cfbeb25..a88e5eb 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
@@ -709,11 +709,44 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
if (deleteRelation == 0) {
logger.warn("The process definition has not relation, it will be delete successfully");
}
+
+ try {
+ syncDeleteWorkflowInstanceByCode(processDefinition.getCode());
+ } catch (Exception e) {
+ logger.error("delete workflow instance error", e);
+ }
+
putMsg(result, Status.SUCCESS);
return result;
}
/**
+ * delete workflow instance by processDefinitionCode
+ * 1.delete processInstances
+ * 2.delete subWorkProcesses
+ * 3.delete processMap
+ * 4.delete taskInstances
+ *
+ * todo delete syncly may take a long time when many processInstance
+ * @param processDefinitionCode
+ */
+ private void syncDeleteWorkflowInstanceByCode(long processDefinitionCode) {
+ int pageSize = 100;
+ while (true) {
+ List<ProcessInstance> deleteProcessInstances = processInstanceService.queryByProcessDefineCode(processDefinitionCode, pageSize);
+ if (CollectionUtils.isEmpty(deleteProcessInstances)) {
+ break;
+ }
+ for (ProcessInstance deleteProcessInstance : deleteProcessInstances) {
+ processService.deleteWorkProcessInstanceById(deleteProcessInstance.getId());
+ processService.deleteAllSubWorkProcessByParentId(deleteProcessInstance.getId());
+ processService.deleteWorkProcessMapByParentId(deleteProcessInstance.getId());
+ processService.deleteWorkTaskInstanceByProcessInstanceId(deleteProcessInstance.getId());
+ }
+ }
+ }
+
+ /**
* release process definition: online / offline
*
* @param loginUser login user
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 c214723..c40a796 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
@@ -17,7 +17,6 @@
package org.apache.dolphinscheduler.service.process;
-import static java.util.stream.Collectors.toSet;
import static org.apache.dolphinscheduler.common.Constants.CMDPARAM_COMPLEMENT_DATA_END_DATE;
import static org.apache.dolphinscheduler.common.Constants.CMDPARAM_COMPLEMENT_DATA_START_DATE;
import static org.apache.dolphinscheduler.common.Constants.CMD_PARAM_EMPTY_SUB_PROCESS;
@@ -28,6 +27,8 @@ import static org.apache.dolphinscheduler.common.Constants.CMD_PARAM_SUB_PROCESS
import static org.apache.dolphinscheduler.common.Constants.CMD_PARAM_SUB_PROCESS_PARENT_INSTANCE_ID;
import static org.apache.dolphinscheduler.common.Constants.LOCAL_PARAMS;
+import static java.util.stream.Collectors.toSet;
+
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.enums.AuthorizationType;
import org.apache.dolphinscheduler.common.enums.CommandType;