diff --git a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteRunnable.java b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteRunnable.java index 8930cba8af..344f113e27 100644 --- a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteRunnable.java +++ b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteRunnable.java @@ -1513,8 +1513,11 @@ public class WorkflowExecuteRunnable implements Callable { */ private void setIndirectDepList(String taskCode, List indirectDepCodeList) { TaskNode taskNode = dag.getNode(taskCode); - List depCodeList = taskNode.getDepList(); - for (String depsNode : depCodeList) { + // If workflow start with startNode or recoveryNode, taskNode may be null + if (taskNode == null) { + return; + } + for (String depsNode : taskNode.getDepList()) { if (forbiddenTaskMap.containsKey(Long.parseLong(depsNode))) { setIndirectDepList(depsNode, indirectDepCodeList); } else {