{"record":{"id":"3c00f6abe1c7c174","repo":"apache/dolphinscheduler","slug":"trigger-workflow-failed-s","errorCode":null,"errorMessage":"Trigger workflow failed: %s","messagePattern":"Trigger workflow failed: (.+?)","errorType":"exception","errorClass":"ServiceException","httpStatus":null,"severity":"error","filePath":"dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/executor/workflow/TriggerWorkflowExecutorDelegate.java","lineNumber":53,"sourceCode":"@Slf4j\n@Component\npublic class TriggerWorkflowExecutorDelegate implements IExecutorDelegate<TriggerWorkflowDTO, Integer> {\n\n    @Autowired\n    private RegistryClient registryClient;\n\n    @Override\n    public Integer execute(final TriggerWorkflowDTO triggerWorkflowDTO) {\n        final Server masterServer = registryClient.getRandomServer(RegistryNodeType.MASTER).orElse(null);\n        if (masterServer == null) {\n            throw new ServiceException(\"no master server available\");\n        }\n        final WorkflowManualTriggerResponse workflowManualTriggerResponse = Clients\n                .withService(IWorkflowControlClient.class)\n                .withHost(masterServer.getHost() + \":\" + masterServer.getPort())\n                .manualTriggerWorkflow(transform2WorkflowTriggerRequest(triggerWorkflowDTO));\n        if (!workflowManualTriggerResponse.isSuccess()) {\n            throw new ServiceException(\"Trigger workflow failed: \" + workflowManualTriggerResponse.getMessage());\n        }\n        return workflowManualTriggerResponse.getWorkflowInstanceId();\n\n    }\n\n    private WorkflowManualTriggerRequest transform2WorkflowTriggerRequest(TriggerWorkflowDTO triggerWorkflowDTO) {\n        return WorkflowManualTriggerRequest.builder()\n                .userId(triggerWorkflowDTO.getLoginUser().getId())\n                .workflowDefinitionCode(triggerWorkflowDTO.getWorkflowDefinition().getCode())\n                .workflowDefinitionVersion(triggerWorkflowDTO.getWorkflowDefinition().getVersion())\n                .startNodes(triggerWorkflowDTO.getStartNodes())\n                .failureStrategy(triggerWorkflowDTO.getFailureStrategy())\n                .taskDependType(triggerWorkflowDTO.getTaskDependType())\n                .warningType(triggerWorkflowDTO.getWarningType())\n                .warningGroupId(triggerWorkflowDTO.getWarningGroupId())\n                .workflowInstancePriority(triggerWorkflowDTO.getWorkflowInstancePriority())\n                .workerGroup(triggerWorkflowDTO.getWorkerGroup())\n                .tenantCode(triggerWorkflowDTO.getTenantCode())","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/apache/dolphinscheduler/blob/02eac45a1b6676e639fcbfb4be2243de5771b05d/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/executor/workflow/TriggerWorkflowExecutorDelegate.java#L35-L71","documentation":"Thrown by TriggerWorkflowExecutorDelegate.execute when the master's manualTriggerWorkflow response reports success=false. The trigger request reached a master but the master refused to start the workflow run; the master's message is appended to explain why.","triggerScenarios":"manualTriggerWorkflow returning success=false — e.g. the workflow definition is offline/undeleted, the project/definition doesn't exist on the master, invalid trigger params (command params, start nodes, schedules), or command generation failure on the master.","commonSituations":"Triggering a workflow whose definition was taken offline; passing bad start-node names or parameter JSON; tenant/user lacking rights on the target project; master-side DB errors when creating the command.","solutions":["Read the appended workflowManualTriggerResponse.getMessage() for the master's reason","Ensure the workflow definition exists and is in ONLINE release state","Validate trigger params (start nodes, command params JSON) before calling the API","Confirm the user/tenant has permission on the workflow's project","Check master logs at trigger time for the detailed failure"],"exampleFix":"// before\nmanualTriggerWorkflow(transform2WorkflowTriggerRequest(triggerWorkflowDTO));\n// after\n// pre-validate definition state\nWorkflowDefinition def = workflowDefinitionDao.findByName(projectCode, triggerWorkflowDTO.getName());\nif (def == null || def.getReleaseState() != ReleaseState.ONLINE) {\n    throw new ServiceException(\"Workflow must be online to trigger\");\n}","handlingStrategy":"validation","validationCode":"WorkflowDefinition def = workflowDefinitionDao.findByName(projectCode, dto.getName());\nif (def == null || def.getReleaseState() != ReleaseState.ONLINE) {\n    throw new IllegalStateException(\"Workflow must exist and be online to trigger\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    Integer instanceId = delegate.execute(dto);\n} catch (ServiceException e) {\n    log.error(\"Trigger failed: {}\", e.getMessage(), e);\n    // show master-side message to the user\n}","preventionTips":["Release the workflow definition online before triggering","Validate trigger params and start-node names up front","Confirm user/tenant permissions on the project","Log the master's response message for diagnosis"],"tags":["workflow","master-server","trigger"],"backgroundTag":"api-error-response","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"}