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.

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)

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.