apache/dolphinscheduler · error · ServiceException
50032
50032
Error message
create workflow task relation error
What it means
Thrown by createDagDefine when processService.saveTaskRelation returns a code other than Constants.EXIT_CODE_SUCCESS, meaning the workflow-task relation edges (DAG lineages between tasks) could not be saved after the definition was created.
Source
Thrown at dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java:306
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(),
insertVersion, taskDefinitionLogs);
return workflowDefinition;
}
@Override
public void saveWorkflowLineage(long projectCode,
long workflowDefinitionCode,
int workflowDefinitionVersion,
List<TaskDefinitionLog> taskDefinitionLogList) {
List<WorkflowTaskLineage> workflowTaskLineageList = generateWorkflowLineageList(taskDefinitionLogList,
workflowDefinitionCode, workflowDefinitionVersion);
View on GitHub (pinned to 02eac45a1b)
Solutions
- Ensure taskRelationJson entries only reference task names/codes present in taskDefinitionJson and that preTasks form a valid DAG.
- Regenerate taskRelationJson from the UI or a current-version export rather than hand-editing.
- Check API logs for the exception inside saveTaskRelation and fix the DB issue; retry creation.
Example fix
// before: relation references unknown task
"taskRelationJson": "[{\"preTaskName\":\"start\",\"postTaskName\":\"ghost_task\"}]"
// after: all endpoints exist in taskDefinitionJson
"taskRelationJson": "[{\"preTaskName\":\"start\",\"postTaskName\":\"a\"}]" // 'a' defined above Defensive patterns
Strategy: validation
Validate before calling
Set<String> names = taskDefinitions.stream().map(TaskDefinition::getName).collect(Collectors.toSet());
boolean valid = taskRelations.stream().allMatch(r ->
(r.getPreTaskName() == null || names.contains(r.getPreTaskName()))
&& names.contains(r.getPostTaskName())); Try / catch
try {
workflowDefinitionService.createWorkflowDefinition(...);
} catch (ServiceException e) {
if (e.getCode() == 50032) { /* fix taskRelationJson endpoints, retry */ }
else throw e;
} Prevention
- Generate taskRelationJson from tooling that guarantees all referenced tasks exist.
- Export/import DAGs only between compatible DolphinScheduler versions.
- Never hand-edit relation JSON without re-validating against taskDefinitionJson.
When it happens
Trigger: createWorkflowDefinition/doBatchOperateWorkflowDefinition with taskRelationJson referencing task codes/names inconsistent with the generated taskDefinitionLogs, or a DB failure inserting relation log rows.
Common situations: Hand-crafted taskRelationJson with wrong preTask/postTask names or missing tasks; relation list referencing tasks not in taskDefinitionJson; importing a DAG exported from a different version; DB transaction errors.
Related errors
AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06).
Data as JSON: /api/errors/075ee8226ecf4dad.
Report an issue: GitHub.