From 5ede171140fe081b7a93852ed85d584518cc7994 Mon Sep 17 00:00:00 2001 From: BaoLiang <29528966+lenboo@users.noreply.github.com> Date: Tue, 28 Dec 2021 21:37:04 +0800 Subject: [PATCH] [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 +++++ .../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 10325c99f..9c91043a5 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 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 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 68fc815fa..ee4190b53 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 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 projects = new ArrayList<>(); + projects.add(project1); + Mockito.when(projectMapper.queryProjectCreatedAndAuthorizedByUserId(loginUser.getId())).thenReturn(projects); Map 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 809bcb177..efeb4784d 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 -- GitLab