apache/dolphinscheduler · error · ServiceException

10105

10105

Error message

create workflow definition error

What it means

Thrown by createDagDefine when processService.saveWorkflowDefine returns insertVersion == 0, i.e. the workflow definition (and its initial version log) could not be persisted. The creation aborts before task relations are saved.

Source

Thrown at dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java:294

                                                 List<WorkflowTaskRelationLog> taskRelationList,
                                                 WorkflowDefinition workflowDefinition,
                                                 List<TaskDefinitionLog> taskDefinitionLogs) {
        taskDatasourcePermissionChecker.checkPermission(loginUser, taskDefinitionLogs);
        taskSubWorkflowPermissionChecker.checkPermission(loginUser, taskDefinitionLogs);
        int saveTaskResult = processService.saveTaskDefine(loginUser, workflowDefinition.getProjectCode(),
                taskDefinitionLogs, Boolean.TRUE);
        if (saveTaskResult == Constants.EXIT_CODE_SUCCESS) {
            log.info("The task has not changed, so skip");
        }
        if (saveTaskResult == Constants.DEFINITION_FAILURE) {
            log.error("Save task definition error.");
            throw new ServiceException(Status.CREATE_TASK_DEFINITION_ERROR);
        }
        int insertVersion =
                processService.saveWorkflowDefine(loginUser, workflowDefinition, Boolean.TRUE, Boolean.TRUE);
        if (insertVersion == 0) {
            log.error("Save workflow definition error, workflowDefinitionCode:{}.", workflowDefinition.getCode());
            throw new ServiceException(Status.CREATE_WORKFLOW_DEFINITION_ERROR);
        }
        log.info("Save workflow definition complete, workflowDefinitionCode:{}, workflowDefinitionVersion:{}.",
                workflowDefinition.getCode(), insertVersion);
        workflowDefinition.setVersion(insertVersion);
        int insertResult = processService.saveTaskRelation(loginUser, workflowDefinition.getProjectCode(),
                workflowDefinition.getCode(),
                insertVersion, taskRelationList, taskDefinitionLogs, Boolean.TRUE);
        if (insertResult != Constants.EXIT_CODE_SUCCESS) {
            log.error(
                    "Save workflow task relations error, projectCode:{}, workflowDefinitionCode:{}, workflowDefinitionVersion:{}.",
                    workflowDefinition.getProjectCode(), workflowDefinition.getCode(), insertVersion);
            throw new ServiceException(Status.CREATE_WORKFLOW_TASK_RELATION_ERROR);
        }
        log.info(
                "Save workflow task relations complete, projectCode:{}, workflowDefinitionCode:{}, workflowDefinitionVersion:{}.",
                workflowDefinition.getProjectCode(), workflowDefinition.getCode(), insertVersion);

        saveWorkflowLineage(workflowDefinition.getProjectCode(), workflowDefinition.getCode(),

View on GitHub (pinned to 02eac45a1b)

Solutions

  1. Inspect API server logs for the exception inside saveWorkflowDefine; fix the underlying DB issue (connection, space, constraints).
  2. Retry workflow creation after the database is healthy; confirm no orphan rows block the insert.
  3. Verify request fields (name, locations, taskRelationJson) are valid so the definition row inserts cleanly.

Example fix

// before: DB down, create fails
POST /workflow-definition  -> 10105
// after: ensure DB reachable and retry
check dolphinscheduler database connectivity/health, then re-issue createWorkflowDefinition
Defensive patterns

Strategy: retry

Validate before calling

// pre-check DB reachability
boolean dbHealthy = checkDataSource();

Try / catch

try {
    workflowDefinitionService.createWorkflowDefinition(...);
} catch (ServiceException e) {
    if (e.getCode() == 10105) { /* fix DB issue then retry with backoff */ }
    else throw e;
}

Prevention

When it happens

Trigger: createWorkflowDefinition/doBatchOperateWorkflowDefinition calls saveWorkflowDefine after task definitions saved OK, but the DB insert of the workflow definition row or its definition log fails/returns 0.

Common situations: Database connectivity or storage capacity problems; unique constraint collisions on workflow code; timezone/clock or transaction rollback issues; corrupted input causing silent failure inside saveWorkflowDefine.

Related errors


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