apache/dolphinscheduler · error · java.lang.RuntimeException

The dependent task's project is not exist, dependentItem

Error message

The dependent task's project is not exist, dependentItem: ${dependentItem}

What it means

DependentTaskTracker.initializeDependentTaskList validates each dependent item's projectCode against the pre-fetched project map; when the project does not exist it logs and throws this RuntimeException, aborting the dependent task since its dependencies cannot be evaluated.

Solutions

  1. Recreate the missing project (or its metadata) or edit every dependent task to remove/update the stale project reference
  2. Query t_ds_project for the projectCode to confirm it is truly gone
  3. Re-save the dependent task via the UI so dependent items are revalidated

Example fix

// before: dependent item points to projectCode 12345 (deleted)
// after: edit the dependent task in the UI to reference an existing project
{"projectCode": 987654321, "definitionCode": 111, "depTaskCode": "ALL"}
Defensive patterns

Strategy: validation

Validate before calling

for (DependentItem item : items) {
    if (projectClient.queryProjectByCode(item.getProjectCode()) == null) {
        throw new IllegalStateException("dependent project missing: " + item.getProjectCode());
    }
}

Try / catch

try {
    tracker.initializeDependentTaskList();
} catch (RuntimeException e) {
    if (e.getMessage().contains("project is not exist")) {
        taskFailed("Dependent project deleted; fix dependent items");
    }
}

Prevention

When it happens

Trigger: A dependent task item references a projectCode that is absent from projectCodeMap — typically because the project was deleted while workflows still depend on it.

Common situations: Deleting a project that other workflows' dependent tasks reference, cross-project dependency after project deletion/renumbering, or metadata DB restored from a backup.

Understand the failure class

Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.

Related errors


AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06). Data as JSON: /api/errors/ae61dc2208c35cc8. Report an issue: GitHub.

Appendix: source

Thrown at dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/executor/plugin/dependent/DependentTaskTracker.java:162

        }

        projectCodeMap = projectDao.queryByCodes(new ArrayList<>(projectCodes)).stream()
                .collect(Collectors.toMap(Project::getCode, Function.identity()));
        processDefinitionMap =
                workflowDefinitionDao.queryByCodes(processDefinitionCodes).stream()
                        .collect(Collectors.toMap(WorkflowDefinition::getCode, Function.identity()));
        taskDefinitionMap = taskDefinitionDao.queryByCodes(taskDefinitionCodes).stream()
                .collect(Collectors.toMap(TaskDefinition::getCode, Function.identity()));
        final TaskInstance taskInstance =
                taskInstanceDao.queryById(taskExecutionContext.getTaskInstanceId());
        List<DependentExecute> dependentExecutes = dependTaskList
                .stream()
                .map(dependentTaskModel -> {
                    for (DependentItem dependentItem : dependentTaskModel.getDependItemList()) {
                        Project project = projectCodeMap.get(dependentItem.getProjectCode());
                        if (project == null) {
                            log.error("The dependent task's project is not exist, dependentItem: {}", dependentItem);
                            throw new RuntimeException(
                                    "The dependent task's project is not exist, dependentItem: " + dependentItem);
                        }
                        WorkflowDefinition workflowDefinition =
                                processDefinitionMap.get(dependentItem.getDefinitionCode());
                        if (workflowDefinition == null) {
                            log.error("The dependent task's workflow is not exist, dependentItem: {}", dependentItem);
                            throw new RuntimeException(
                                    "The dependent task's workflow is not exist, dependentItem: " + dependentItem);
                        }
                        if (dependentItem.getDepTaskCode() == Constants.DEPENDENT_ALL_TASK_CODE) {
                            log.info(
                                    "Add dependent all task, ProjectName: {}, WorkflowName: {}, WorkflowCode: {}, DependentCycle: {}, DependentCycleDate: {}, DependentRelation: {}",
                                    project.getName(), workflowDefinition.getName(), workflowDefinition.getCode(),
                                    dependentItem.getCycle(), dependentItem.getDateValue(),
                                    dependentTaskModel.getRelation());
                        } else if (dependentItem.getDepTaskCode() == Constants.DEPENDENT_WORKFLOW_CODE) {
                            log.info(
                                    "Add dependent workflow task, ProjectName: {}, WorkflowName: {}, WorkflowCode: {}, DependentCycle: {}, DependentCycleDate: {}, DependentRelation: {}",

View on GitHub (pinned to 02eac45a1b)