From 13d5a5ae9bf26201fb753739513fd7ee6c34a337 Mon Sep 17 00:00:00 2001 From: Yelli <51317527+Yeleights@users.noreply.github.com> Date: Mon, 6 Jan 2020 11:23:34 +0800 Subject: [PATCH] fix bug sonar: add null check in daghelper (#1719) * modify FileUtils.readFile2Str * #1300 Add right alignment function in sql email content * cancel formatted for alert_mail_template.ftl * #747 sql task password Log desensitization * cancel mail_temple * edit ExcelUtils * modify test method name * #747 sql task password Log desensitization * #1544 workflow import * Constants add DATASOURCE_PASSWORD_REGEX * #747 sql task password Log desensitization * deal with import project have sub process * modify export process addTaskNodeParam method name * add testAddTaskNodeSpecialParam UT * add ProcessDefinitionServiceTest-ut to pom * add testImportSubProcess in ProcessDefinitionServiceTest * add testImportSubProcess in ProcessDefinitionServiceTest * add testImportProcessDefinition * fix sonar bug: not enough arguments * fix sonar bug: change condition & not enough arguments * fix bug sonar: add null check in daghelper && add hashcode method in ProcessData * fix bug sonar: add null check in daghelper * CollectionUtils.isEmpty() --- .../dolphinscheduler/dao/utils/DagHelper.java | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/DagHelper.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/DagHelper.java index 4096442f2e..26d0f1e8e2 100644 --- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/DagHelper.java +++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/DagHelper.java @@ -78,17 +78,17 @@ public class DagHelper { List startNodeList = startNodeNameList; if(taskDependType != TaskDependType.TASK_POST - && startNodeList.size() == 0){ + && CollectionUtils.isEmpty(startNodeList)){ logger.error("start node list is empty! cannot continue run the process "); return destFlowNodeList; } List destTaskNodeList = new ArrayList<>(); List tmpTaskNodeList = new ArrayList<>(); if (taskDependType == TaskDependType.TASK_POST - && recoveryNodeNameList.size() > 0) { + && CollectionUtils.isNotEmpty(recoveryNodeNameList)) { startNodeList = recoveryNodeNameList; } - if (startNodeList == null || startNodeList.size() == 0) { + if (CollectionUtils.isEmpty(startNodeList)) { // no special designation start nodes tmpTaskNodeList = taskNodeList; } else { @@ -126,10 +126,8 @@ public class DagHelper { List resultList = new ArrayList<>(); for (TaskNode taskNode : taskNodeList) { List depList = taskNode.getDepList(); - if (depList != null) { - if (depList.contains(startNode.getName())) { - resultList.addAll(getFlowNodeListPost(taskNode, taskNodeList)); - } + if (null != depList && null != startNode && depList.contains(startNode.getName())) { + resultList.addAll(getFlowNodeListPost(taskNode, taskNodeList)); } } @@ -149,9 +147,12 @@ public class DagHelper { List resultList = new ArrayList<>(); - List depList = startNode.getDepList(); - resultList.add(startNode); - if (depList == null || depList.size() == 0) { + List depList = new ArrayList<>(); + if (null != startNode) { + depList = startNode.getDepList(); + resultList.add(startNode); + } + if (CollectionUtils.isEmpty(depList)) { return resultList; } for (String depNodeName : depList) { @@ -180,7 +181,10 @@ public class DagHelper { TaskDependType depNodeType) throws Exception { ProcessData processData = JSONUtils.parseObject(processDefinitionJson, ProcessData.class); - List taskNodeList = processData.getTasks(); + List taskNodeList = new ArrayList<>(); + if (null != processData) { + taskNodeList = processData.getTasks(); + } List destTaskNodeList = generateFlowNodeListByStartNode(taskNodeList, startNodeNameList, recoveryNodeNameList, depNodeType); if (destTaskNodeList.isEmpty()) { return null; @@ -201,7 +205,10 @@ public class DagHelper { Map forbidTaskNodeMap = new ConcurrentHashMap<>(); ProcessData processData = JSONUtils.parseObject(processDefinitionJson, ProcessData.class); - List taskNodeList = processData.getTasks(); + List taskNodeList = new ArrayList<>(); + if (null != processData) { + taskNodeList = processData.getTasks(); + } for(TaskNode node : taskNodeList){ if(node.isForbidden()){ forbidTaskNodeMap.putIfAbsent(node.getName(), node);