apache/dolphinscheduler · error · TaskException
Submit dinkyTask failed:
Error message
Submit dinkyTask failed:
What it means
DinkyTask.submitApplicationV0() submits the job to Dinky via its API. Any exception during submission is caught, logged with SUBMIT_FAILED_MSG ('Submit dinkyTask failed:'), the exit status set to failure, and rethrown as TaskException. This is the V0 (legacy) submit path failing at the exception level — network, HTTP, or API client errors.
Source
Thrown at dolphinscheduler-task-plugin/dolphinscheduler-task-dinky/src/main/java/org/apache/dolphinscheduler/plugin/task/dinky/DinkyTask.java:141
result = onlineTaskV0(address, taskId);
} else {
// Submit dinky-0.6.5 task
result = submitTaskV0(address, taskId);
}
if (checkResultV0(result)) {
status = result.get(apiResultDatasKey).get(DinkyTaskConstants.API_RESULT_SUCCESS).asBoolean();
if (result.get(apiResultDatasKey).has(DinkyTaskConstants.API_RESULT_JOB_INSTANCE_ID)
&& !(result.get(apiResultDatasKey)
.get(DinkyTaskConstants.API_RESULT_JOB_INSTANCE_ID) instanceof NullNode)) {
jobInstanceId =
result.get(apiResultDatasKey).get(DinkyTaskConstants.API_RESULT_JOB_INSTANCE_ID).asText();
}
}
} catch (Exception ex) {
Thread.currentThread().interrupt();
log.error(DinkyTaskConstants.SUBMIT_FAILED_MSG, ex);
setExitStatusCode(EXIT_CODE_FAILURE);
throw new TaskException(DinkyTaskConstants.SUBMIT_FAILED_MSG, ex);
}
}
private void submitApplicationV1() {
try {
String address = this.dinkyParameters.getAddress();
String taskId = this.dinkyParameters.getTaskId();
boolean isOnline = this.dinkyParameters.isOnline();
JsonNode result;
String apiResultDataKey = DinkyTaskConstants.API_RESULT_DATA;
// Submit dinky-1.0.0 task
result = submitTaskV1(address, taskId, isOnline, generateVariables());
if (checkResultV1(result)) {
status = result.get(DinkyTaskConstants.API_RESULT_SUCCESS).asBoolean();
if (result.get(apiResultDataKey).has(DinkyTaskConstants.API_RESULT_JOB_INSTANCE_ID)
&& !(result.get(apiResultDataKey)
.get(DinkyTaskConstants.API_RESULT_JOB_INSTANCE_ID) instanceof NullNode)) {
jobInstanceId =View on GitHub (pinned to 02eac45a1b)
Solutions
- Verify the Dinky address in task params is reachable from the worker (curl the address from the worker host).
- Check the wrapped cause in worker logs to distinguish connection-refused vs timeout vs HTTP error.
- Confirm the Dinky API version matches the submit path (consider V1 API if your Dinky supports it).
- Fix network/firewall rules between worker and Dinky cluster, then rerun the task.
Example fix
// before: unreachable address
{"address":"http://dinky-internal:8888","taskId":3}
// after: correct reachable address
{"address":"http://dinky.example.com:8888","taskId":3} Defensive patterns
Strategy: try-catch
Validate before calling
// pre-check Dinky reachability from worker
curl -fsS --max-time 5 ${dinkyAddress}/available || echo 'Dinky unreachable' Try / catch
try {
task.submitApplication();
} catch (TaskException e) {
Throwable cause = e.getCause();
log.error("Dinky V0 submit failed, cause class: {}", cause == null ? "none" : cause.getClass());
} Prevention
- Health-check the Dinky address from worker hosts before scheduling.
- Use DNS names that resolve inside the worker network.
- Align Dinky API version with the submit path in use.
When it happens
Trigger: Exception thrown while calling the Dinky REST API during V0 submission — connection failure, timeout, HTTP client error, or interrupted thread (InterruptedException re-interrupts before throwing).
Common situations: Dinky server down or wrong address/port; network/firewall blocking worker→Dinky; Dinky API version mismatch making the endpoint 404; slow Dinky causing client timeouts.
Understand the failure class
Background: "API request failed": what wrapped HTTP errors from external APIs mean and how to find the real cause — this error's family across 29 libraries.
Related errors
- WorkflowInstance: %s pause failed
- WorkflowInstance: %s stop failed
- OIDC_TOKEN_EXCHANGE_FAILED
- 110014
- 1300006
AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06).
Data as JSON: /api/errors/af0e564dc7207cbd.
Report an issue: GitHub.