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

  1. Verify the Dinky address in task params is reachable from the worker (curl the address from the worker host).
  2. Check the wrapped cause in worker logs to distinguish connection-refused vs timeout vs HTTP error.
  3. Confirm the Dinky API version matches the submit path (consider V1 API if your Dinky supports it).
  4. 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

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


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