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 4096442f2e1df952795e90733ab2f4321b483953..26d0f1e8e211322c1881fda6d043757a10f83885 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);