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

jinyleechina 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 605767e  [Fix-7654]Dependent node onChangeProjectCode error (#7672)
605767e is described below

commit 605767e47b29f7dc6f2c1c69e13848a8268fcd1c
Author: BaoLiang <[email protected]>
AuthorDate: Tue Dec 28 18:09:42 2021 +0800

    [Fix-7654]Dependent node onChangeProjectCode error (#7672)
    
    * 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 cd53a8c..5023c7e 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
@@ -77,6 +77,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;
@@ -1102,9 +1104,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 e3f77b0..607341d 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
@@ -546,8 +546,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 6632e48..aba6011 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
@@ -261,6 +261,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