apache/seatunnel · error · IOException

Failed to get response from Doris

Error message

Failed to get response from Doris

What it means

RestService.parseResponse throws this IOException whenever an HTTP request to a Doris FE node returns a status code other than 200 OK. It is a wrapper indicating the REST call to Doris failed at the HTTP transport level, with the actual code logged as a warning alongside the URL. Callers getConnectionPost/getConnectionGet propagate it, typically ending in findPartitions failure.

Source

Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/rest/RestService.java:201

                Base64.getEncoder()
                        .encodeToString(
                                String.format("%s:%s", user, passwd)
                                        .getBytes(StandardCharsets.UTF_8));
        connection.setRequestProperty("Authorization", "Basic " + authEncoding);

        connection.connect();
        return parseResponse(connection, logger);
    }

    private static String parseResponse(HttpURLConnection connection, Logger logger)
            throws IOException {
        int responseCode = connection.getResponseCode();
        if (responseCode != HttpStatus.SC_OK) {
            logger.warn(
                    "Failed to get response from Doris {}, http code is {}",
                    connection.getURL(),
                    responseCode);
            throw new IOException("Failed to get response from Doris");
        }

        StringBuilder result = new StringBuilder();
        try (BufferedReader in =
                new BufferedReader(
                        new InputStreamReader(
                                connection.getInputStream(), StandardCharsets.UTF_8))) {
            String line;
            while ((line = in.readLine()) != null) {
                result.append(line);
            }
        }

        return result.toString();
    }

    @VisibleForTesting
    static String[] parseIdentifier(String tableIdentifier, Logger logger)

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Check the logged URL and HTTP code to identify which FE node and status failed
  2. Verify query_port (default 9030 for query, http port 8030 for REST) and fe nodes config in doris config
  3. Curl the same URL manually from the SeaTunnel worker host to reproduce: curl -u user:pass http://fe:8030/api/...
  4. Confirm FE is healthy (http://fe:8030/api/show_proc?path=/) and not behind a misconfigured proxy
  5. Retry the job; transient FE restarts cause 502/503

Example fix

// before
throw new IOException("Failed to get response from Doris");
// after
throw new IOException("Failed to get response from Doris " + connection.getURL() + ", http code " + responseCode);
Defensive patterns

Strategy: retry

Validate before calling

// Pre-check FE reachability
HttpURLConnection c = (HttpURLConnection) new URL("http://" + feHost + ":" + httpPort + "/api/show_proc?path=/").openConnection();
c.setConnectTimeout(3000);
if (c.getResponseCode() != 200) throw new IllegalStateException("FE not healthy: " + c.getResponseCode());

Try / catch

try {
    partitions = restService.findPartitions(...);
} catch (DorisConnectorException | IOException e) {
    // inspect root cause; retry against other FEs or fail fast
    throw new JobExecutionException("Doris REST call failed, check FE health/ports", e);
}

Prevention

When it happens

Trigger: A POST (query plan) or GET (schema/streamload metadata) request to a Doris FE node responds with non-200, e.g. 404 wrong endpoint path, 401/403 auth, 500 FE error, 502/503 proxy or FE down.

Common situations: Wrong query_port/query timeout config; FE reached via load balancer returning errors; Doris version changed REST API paths; FE overloaded or restarting; firewall returning HTML error pages with non-200 status.

Understand the failure class

Background: "API error: {status}" and "HTTP 401/403/404/429/5xx" errors: non-2xx HTTP responses explained — this error's family across 27 libraries.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/8fe07669ada0c887. Report an issue: GitHub.