apache/dolphinscheduler · error

DELETE_PROJECT_ERROR_DEFINES_NOT_NULL

DELETE_PROJECT_ERROR_DEFINES_NOT_NULL

Error message

Please delete the workflow definitions in project first! project code:{}.

What it means

deleteProject returns DELETE_PROJECT_ERROR_DEFINES_NOT_NULL when the project still contains workflow definitions. DolphinScheduler refuses to delete a non-empty project to avoid orphaning workflow definitions; all workflows must be deleted first.

Source

Thrown at dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java:353

     * delete project by code
     *
     * @param loginUser   login user
     * @param projectCode project code
     * @return delete result code
     */
    @Override
    public Result deleteProject(User loginUser, Long projectCode) {
        Result result = new Result();
        Project project = projectDao.queryByCode(projectCode);

        checkHasProjectWritePermissionThrowException(loginUser, project);
        checkProjectAndAuthThrowException(loginUser, project, PROJECT_DELETE);

        List<WorkflowDefinition> workflowDefinitionList =
                workflowDefinitionDao.queryAllDefinitionList(project.getCode());

        if (!workflowDefinitionList.isEmpty()) {
            log.warn("Please delete the workflow definitions in project first! project code:{}.", projectCode);
            putMsg(result, Status.DELETE_PROJECT_ERROR_DEFINES_NOT_NULL);
            return result;
        }
        // delete the task group
        taskGroupService.deleteTaskGroupByProjectCode(project.getCode());

        boolean delete = projectDao.deleteById(project.getId());
        if (delete) {
            log.info("Project is deleted and id is :{}.", project.getId());
            result.setData(Boolean.TRUE);
            putMsg(result, Status.SUCCESS);
        } else {
            log.error("Project delete error, project code:{}, project name:{}.", projectCode, project.getName());
            putMsg(result, Status.DELETE_PROJECT_ERROR);
        }
        return result;
    }

View on GitHub (pinned to 02eac45a1b)

Solutions

  1. Delete all workflow definitions in the project first (DELETE /process-definition/{code} for each, batch delete via /process-definition/batch-delete).
  2. If workflows are reusable, move them to another project before deleting this project.
  3. Automate cleanup: list definitions via GET /process-definition/list then delete each before calling project delete.

Example fix

// before
projectService.deleteProject(user, projectCode); // DELETE_PROJECT_ERROR_DEFINES_NOT_NULL
// after
List<WorkflowDefinition> defs = workflowDefinitionDao.queryAllDefinitionList(projectCode);
defs.forEach(d -> processDefinitionService.deleteProcessDefinitionByCode(user, d.getCode()));
projectService.deleteProject(user, projectCode); // now succeeds
Defensive patterns

Strategy: validation

Validate before calling

List<WorkflowDefinition> defs = workflowDefinitionDao.queryAllDefinitionList(projectCode);
if (!defs.isEmpty()) throw new IllegalStateException("delete workflow definitions first");

Try / catch

catch (ServiceException e) { if (e.getCode() == Status.DELETE_PROJECT_ERROR_DEFINES_NOT_NULL) { /* delete workflows then retry */ } }

Prevention

When it happens

Trigger: DELETE /projects/{code} (or deleteProject) while queryAllDefinitionList(project.getCode()) returns at least one workflow definition for the project.

Common situations: Cleaning up old projects that were used in production; deleting a project copied from a template that shipped with workflows; teardown scripts that delete projects but not their workflow definitions first.

Understand the failure class

Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.

Related errors


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