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

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


The following commit(s) were added to refs/heads/dev by this push:
     new 8980b70  fix deleteProcessDefinitionVersion bug (#6287)
8980b70 is described below

commit 8980b7027a30f75445882280e5872b49985a5188
Author: JinYong Li <[email protected]>
AuthorDate: Tue Sep 21 22:35:50 2021 +0800

    fix deleteProcessDefinitionVersion bug (#6287)
    
    Co-authored-by: JinyLeeChina <[email protected]>
---
 .../api/service/impl/ProcessDefinitionServiceImpl.java      | 13 ++++++++++++-
 .../dao/mapper/ProcessTaskRelationLogMapper.java            | 10 ++++++++++
 .../dao/mapper/ProcessTaskRelationLogMapper.xml             |  5 +++++
 3 files changed, 27 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 a8c5d67..f9c0952 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
@@ -23,6 +23,7 @@ import org.apache.dolphinscheduler.api.dto.DagDataSchedule;
 import org.apache.dolphinscheduler.api.dto.treeview.Instance;
 import org.apache.dolphinscheduler.api.dto.treeview.TreeViewDto;
 import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.exceptions.ServiceException;
 import org.apache.dolphinscheduler.api.service.ProcessDefinitionService;
 import org.apache.dolphinscheduler.api.service.ProcessInstanceService;
 import org.apache.dolphinscheduler.api.service.ProjectService;
@@ -59,6 +60,7 @@ import org.apache.dolphinscheduler.dao.entity.Tenant;
 import org.apache.dolphinscheduler.dao.entity.User;
 import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionLogMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
+import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationLogMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
 import org.apache.dolphinscheduler.dao.mapper.ScheduleMapper;
@@ -144,6 +146,9 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
     private ProcessTaskRelationMapper processTaskRelationMapper;
 
     @Autowired
+    private ProcessTaskRelationLogMapper processTaskRelationLogMapper;
+
+    @Autowired
     TaskDefinitionLogMapper taskDefinitionLogMapper;
 
     @Autowired
@@ -1422,6 +1427,7 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
      * @return delele result code
      */
     @Override
+    @Transactional(rollbackFor = RuntimeException.class)
     public Map<String, Object> deleteProcessDefinitionVersion(User loginUser, 
long projectCode, long code, int version) {
         Project project = projectMapper.queryByCode(projectCode);
         //check user access for project
@@ -1434,7 +1440,12 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
         if (processDefinition == null) {
             putMsg(result, Status.PROCESS_DEFINE_NOT_EXIST, code);
         } else {
-            
processDefinitionLogMapper.deleteByProcessDefinitionCodeAndVersion(code, 
version);
+            int deleteLog = 
processDefinitionLogMapper.deleteByProcessDefinitionCodeAndVersion(code, 
version);
+            int deleteRelationLog = 
processTaskRelationLogMapper.deleteByCode(processDefinition.getCode(), 
processDefinition.getVersion());
+            if ((deleteLog & deleteRelationLog) == 0) {
+                putMsg(result, Status.DELETE_PROCESS_DEFINE_BY_CODE_ERROR);
+                throw new 
ServiceException(Status.DELETE_PROCESS_DEFINE_BY_CODE_ERROR);
+            }
             putMsg(result, Status.SUCCESS);
         }
         return result;
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.java
index e735a1c..472018b 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.java
@@ -47,4 +47,14 @@ public interface ProcessTaskRelationLogMapper extends 
BaseMapper<ProcessTaskRela
      * @return int
      */
     int batchInsert(@Param("taskRelationList") List<ProcessTaskRelationLog> 
taskRelationList);
+
+    /**
+     * delete process task relation log by processCode and version
+     *
+     * @param processCode process definition code
+     * @param processVersion process version
+     * @return int
+     */
+    int deleteByCode(@Param("processCode") long processCode,
+                     @Param("processVersion") int processVersion);
 }
diff --git 
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.xml
 
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.xml
index 3e11f97..2eafb31 100644
--- 
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.xml
+++ 
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.xml
@@ -41,4 +41,9 @@
             #{relation.createTime},#{relation.updateTime})
         </foreach>
     </insert>
+    <delete id="deleteByCode">
+        delete from t_ds_process_task_relation_log
+        WHERE process_definition_code = #{processCode}
+        and process_definition_version = #{processVersion}
+    </delete>
 </mapper>

Reply via email to