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

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


The following commit(s) were added to refs/heads/2.0.2-prepare by this push:
     new 5ede171  [Fix-7654]Dependent node onChangeProjectCode error (#7672) 
(#7691)
5ede171 is described below

commit 5ede171140fe081b7a93852ed85d584518cc7994
Author: BaoLiang <[email protected]>
AuthorDate: Tue Dec 28 21:37:04 2021 +0800

    [Fix-7654]Dependent node onChangeProjectCode error (#7672) (#7691)
    
    * fix #7654 Dependent node onChangeProjectCode error
    
    * fix #7654 Dependent node onChangeProjectCode error
    
    * fix #7654 Dependent node onChangeProjectCode error
    
    * update ut
---
 .../api/service/impl/ProcessDefinitionServiceImpl.java            | 8 +++++++-
 .../api/service/ProcessDefinitionServiceTest.java                 | 5 +++++
 .../main/java/org/apache/dolphinscheduler/common/Constants.java   | 5 +++++
 3 files changed, 17 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 10325c9..9c91043 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
@@ -76,6 +76,8 @@ import 
org.apache.dolphinscheduler.service.process.ProcessService;
 
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.hadoop.mapred.TaskLog.LogName;
+import org.apache.yetus.audience.InterfaceAudience.Public;
 
 import java.io.BufferedOutputStream;
 import java.io.IOException;
@@ -1097,9 +1099,13 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
             putMsg(result, Status.PROCESS_DEFINE_NOT_EXIST, codes);
             return result;
         }
+        HashMap<Long, Project> userProjects =  new 
HashMap(Constants.DEFAULT_HASH_MAP_SIZE);
+        
projectMapper.queryProjectCreatedAndAuthorizedByUserId(loginUser.getId())
+                .forEach(userProject -> 
userProjects.put(userProject.getCode(), userProject));
+
         // check processDefinition exist in project
         List<ProcessDefinition> processDefinitionListInProject = 
processDefinitionList.stream().
-                filter(o -> projectCode == 
o.getProjectCode()).collect(Collectors.toList());
+                filter(o -> 
userProjects.containsKey(o.getProjectCode())).collect(Collectors.toList());
         if (CollectionUtils.isEmpty(processDefinitionListInProject)) {
             putMsg(result, Status.PROCESS_DEFINE_NOT_EXIST, codes);
             return result;
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
index 68fc815..ee4190b 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
@@ -543,8 +543,13 @@ public class ProcessDefinitionServiceTest {
         ProcessDefinition processDefinition = getProcessDefinition();
         List<ProcessDefinition> processDefinitionList = new ArrayList<>();
         processDefinitionList.add(processDefinition);
+
         
Mockito.when(processDefineMapper.queryByCodes(defineCodeSet)).thenReturn(processDefinitionList);
         Mockito.when(processService.genDagData(Mockito.any())).thenReturn(new 
DagData(processDefinition, null, null));
+        Project project1 = getProject(projectCode);
+        List<Project> projects = new ArrayList<>();
+        projects.add(project1);
+        
Mockito.when(projectMapper.queryProjectCreatedAndAuthorizedByUserId(loginUser.getId())).thenReturn(projects);
 
         Map<String, Object> successRes = 
processDefinitionService.getNodeListMapByDefinitionCodes(loginUser, 
projectCode, defineCodes);
         Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS));
diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
index 809bcb1..efeb478 100644
--- 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
@@ -341,6 +341,11 @@ public final class Constants {
      */
     public static final int DEFAULT_ADMIN_PERMISSION = 7;
 
+    /**
+     * default hash map size
+     */
+    public static final int DEFAULT_HASH_MAP_SIZE = 16;
+
 
     /**
      * all permissions

Reply via email to