apache/seatunnel · warning

Failed to get response from Doris FE {}, http code is {}

Error message

Failed to get response from Doris FE {}, http code is {}

What it means

RestService.send got an HTTP response but the body string came back empty after a request to a Doris FE node (e.g. the /api/{db}/{table}/_query_plan or schema endpoint). It logs this warning with the FE URI and HTTP status code, then continues to the next FE address in the list. Repeated on all FEs it can lead to a connect failure.

Source

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

            try {
                String response;
                if (request instanceof HttpGet) {
                    response =
                            getConnectionGet(
                                    request.getURI().toString(),
                                    dorisSourceConfig.getUsername(),
                                    dorisSourceConfig.getPassword(),
                                    logger);
                } else {
                    response =
                            getConnectionPost(
                                    request,
                                    dorisSourceConfig.getUsername(),
                                    dorisSourceConfig.getPassword(),
                                    logger);
                }
                if (StringUtils.isEmpty(response)) {
                    logger.warn(
                            "Failed to get response from Doris FE {}, http code is {}",
                            request.getURI(),
                            statusCode);
                    continue;
                }
                logger.trace(
                        "Success get response from Doris FE: {}, response is: {}.",
                        request.getURI(),
                        response);
                // Handle the problem of inconsistent data format returned by http v1 and v2
                Map map = OBJECT_MAPPER.readValue(response, Map.class);
                if (map.containsKey("code") && map.containsKey("msg")) {
                    Object data = map.get("data");
                    return OBJECT_MAPPER.writeValueAsString(data);
                } else {
                    return response;
                }
            } catch (IOException e) {

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Check the reported HTTP status code in the log to see whether the FE returned a non-2xx or an empty 200
  2. Verify doris fe_nodes config points at correct host:fe_http_port (default 8030) and the FE is reachable via curl
  3. Curl the same endpoint with the same credentials to compare behavior outside SeaTunnel
  4. Inspect FE logs (fe.log/fe.warn.log) for errors at the time of the request
  5. Remove intermediary proxies or configure them to preserve response bodies

Example fix

// before
"fe_nodes" = "fe-host:9030"   // wrong: MySQL query port, not HTTP
// after
"fe_nodes" = "fe-host:8030"   // FE HTTP port
Defensive patterns

Strategy: retry

Validate before calling

curl -u user:pass http://fe-host:8030/api/bootstrap  # verify FE returns a non-empty body

Try / catch

// job-level
try {
    sourceReader/enumerator init;
} catch (Exception e) {
    // inspect log for 'Failed to get response from Doris FE' and retry after FE check
}

Prevention

When it happens

Trigger: findPartitions -> send posts to an FE and receives an empty response body (emptyResponse) — often a 200 with empty payload, proxy stripping the body, or FE returning nothing under load.

Common situations: FE behind a misconfigured load balancer that drops response bodies; FE restarting/OOM during query; wrong fe_http_port hitting a service that returns empty replies; network middleware (API gateways) swallowing responses.

Related errors


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