{"record":{"id":"6b450c9c01df208e","repo":"apache/dolphinscheduler","slug":"10105","errorCode":"10105","errorMessage":"create workflow definition error","messagePattern":"create workflow definition error","errorType":"exception","errorClass":"ServiceException","httpStatus":null,"severity":"error","filePath":"dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java","lineNumber":294,"sourceCode":"                                                 List<WorkflowTaskRelationLog> taskRelationList,\n                                                 WorkflowDefinition workflowDefinition,\n                                                 List<TaskDefinitionLog> taskDefinitionLogs) {\n        taskDatasourcePermissionChecker.checkPermission(loginUser, taskDefinitionLogs);\n        taskSubWorkflowPermissionChecker.checkPermission(loginUser, taskDefinitionLogs);\n        int saveTaskResult = processService.saveTaskDefine(loginUser, workflowDefinition.getProjectCode(),\n                taskDefinitionLogs, Boolean.TRUE);\n        if (saveTaskResult == Constants.EXIT_CODE_SUCCESS) {\n            log.info(\"The task has not changed, so skip\");\n        }\n        if (saveTaskResult == Constants.DEFINITION_FAILURE) {\n            log.error(\"Save task definition error.\");\n            throw new ServiceException(Status.CREATE_TASK_DEFINITION_ERROR);\n        }\n        int insertVersion =\n                processService.saveWorkflowDefine(loginUser, workflowDefinition, Boolean.TRUE, Boolean.TRUE);\n        if (insertVersion == 0) {\n            log.error(\"Save workflow definition error, workflowDefinitionCode:{}.\", workflowDefinition.getCode());\n            throw new ServiceException(Status.CREATE_WORKFLOW_DEFINITION_ERROR);\n        }\n        log.info(\"Save workflow definition complete, workflowDefinitionCode:{}, workflowDefinitionVersion:{}.\",\n                workflowDefinition.getCode(), insertVersion);\n        workflowDefinition.setVersion(insertVersion);\n        int insertResult = processService.saveTaskRelation(loginUser, workflowDefinition.getProjectCode(),\n                workflowDefinition.getCode(),\n                insertVersion, taskRelationList, taskDefinitionLogs, Boolean.TRUE);\n        if (insertResult != Constants.EXIT_CODE_SUCCESS) {\n            log.error(\n                    \"Save workflow task relations error, projectCode:{}, workflowDefinitionCode:{}, workflowDefinitionVersion:{}.\",\n                    workflowDefinition.getProjectCode(), workflowDefinition.getCode(), insertVersion);\n            throw new ServiceException(Status.CREATE_WORKFLOW_TASK_RELATION_ERROR);\n        }\n        log.info(\n                \"Save workflow task relations complete, projectCode:{}, workflowDefinitionCode:{}, workflowDefinitionVersion:{}.\",\n                workflowDefinition.getProjectCode(), workflowDefinition.getCode(), insertVersion);\n\n        saveWorkflowLineage(workflowDefinition.getProjectCode(), workflowDefinition.getCode(),","sourceCodeStart":276,"sourceCodeEnd":312,"githubUrl":"https://github.com/apache/dolphinscheduler/blob/02eac45a1b6676e639fcbfb4be2243de5771b05d/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java#L276-L312","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Inspect API server logs for the exception inside saveWorkflowDefine; fix the underlying DB issue (connection, space, constraints).","Retry workflow creation after the database is healthy; confirm no orphan rows block the insert.","Verify request fields (name, locations, taskRelationJson) are valid so the definition row inserts cleanly."],"exampleFix":"// before: DB down, create fails\nPOST /workflow-definition  -> 10105\n// after: ensure DB reachable and retry\ncheck dolphinscheduler database connectivity/health, then re-issue createWorkflowDefinition","handlingStrategy":"retry","validationCode":"// pre-check DB reachability\nboolean dbHealthy = checkDataSource();","typeGuard":null,"tryCatchPattern":"try {\n    workflowDefinitionService.createWorkflowDefinition(...);\n} catch (ServiceException e) {\n    if (e.getCode() == 10105) { /* fix DB issue then retry with backoff */ }\n    else throw e;\n}","preventionTips":["Monitor database connectivity and disk space for the DolphinScheduler schema.","Retry transient DB failures with backoff in automation.","Verify request payloads are complete before create calls to avoid partial-failure states."],"tags":["workflow-definition","database-write","create","workflow-definition"],"backgroundTag":"database-write-failed","analyzedSha":"02eac45a1b6676e639fcbfb4be2243de5771b05d","analyzedAt":"2026-09-06T17:43:00.555Z","contentChangedAt":"2026-09-06T17:43:00.555Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}