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

jinyleechina pushed a commit to branch 2.0.4-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/2.0.4-prepare by this push:
     new cf19ff0  [Bug][API] fix ProcessDefinition update error #8334 (#8338) 
(#8354)
cf19ff0 is described below

commit cf19ff000b43b2e35892fbe0fac3c95cad652384
Author: EdwardYang <[email protected]>
AuthorDate: Fri Feb 11 20:22:33 2022 +0800

    [Bug][API] fix ProcessDefinition update error #8334 (#8338) (#8354)
    
    * [bug] fix task definition delete
    
    * [bug] fix ProcessDefinition update error #8334
    
    * [bug] fix ProcessDefinition update error #8334
    
    Co-authored-by: edward-yang <[email protected]>
    
    Co-authored-by: edward-yang <[email protected]>
---
 .../api/service/impl/ProcessDefinitionServiceImpl.java       | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

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 a88e5eb..58c8ab4 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
@@ -581,13 +581,15 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
         if (processDefinition.equals(processDefinitionDeepCopy) && 
saveTaskResult == Constants.EXIT_CODE_SUCCESS) {
             List<ProcessTaskRelationLog> processTaskRelationLogList = 
processTaskRelationLogMapper.queryByProcessCodeAndVersion(processDefinition.getCode(),
 processDefinition.getVersion());
             if (taskRelationList.size() == processTaskRelationLogList.size()) {
-                Map<Long, ProcessTaskRelationLog> taskRelationLogMap =
-                    
taskRelationList.stream().collect(Collectors.toMap(ProcessTaskRelationLog::getPostTaskCode,
 processTaskRelationLog -> processTaskRelationLog));
-                for (ProcessTaskRelationLog processTaskRelationLog : 
taskRelationList) {
-                    if 
(!processTaskRelationLog.equals(taskRelationLogMap.get(processTaskRelationLog.getPostTaskCode())))
 {
+                Set<ProcessTaskRelationLog> taskRelationSet = 
taskRelationList.stream().collect(Collectors.toSet());
+                Set<ProcessTaskRelationLog> processTaskRelationLogSet = 
processTaskRelationLogList.stream().collect(Collectors.toSet());
+                if (taskRelationSet.size() == 
processTaskRelationLogSet.size()) {
+                    taskRelationSet.removeAll(processTaskRelationLogSet);
+                    if (!taskRelationSet.isEmpty()) {
                         isChange = true;
-                        break;
                     }
+                } else {
+                    isChange = true;
                 }
             } else {
                 isChange = true;

Reply via email to