apache/seatunnel · error · DorisConnectorException

BACKEND_CLIENT_FAILED

BACKEND_CLIENT_FAILED

Error message

routing.toString() (DorisConnectorException BACKEND_CLIENT_FAILED, cause ex)

What it means

BackendClient.open exhausts all BE endpoints trying to open the Thrift transport to a Doris backend; after the final attempt it logs the routing and last TTransportException, then throws DorisConnectorException(BACKEND_CLIENT_FAILED) — no BE node was reachable.

Solutions

  1. Verify Doris BE hosts/ports in the config are correct and reachable
  2. Check BE process health and firewall/network connectivity from the SeaTunnel worker
  3. Confirm FE-provided BE routing is not stale after cluster topology changes
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/backend/BackendClient.java:105 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/backend/BackendClient.java:105

                log.trace(
                        "Connect status before open transport to {} is '{}'.",
                        routing,
                        isConnected);
                if (!transport.isOpen()) {
                    transport.open();
                    isConnected = true;
                    log.info("Success connect to {}.", routing);
                    break;
                }
            } catch (TTransportException e) {
                log.warn(ErrorMessages.CONNECT_FAILED_MESSAGE, routing, e);
                ex = e;
            }
        }
        if (!isConnected) {
            log.error(ErrorMessages.CONNECT_FAILED_MESSAGE, routing);
            //            throw new ConnectedFailedException(routing.toString(), ex);
            throw new DorisConnectorException(
                    DorisConnectorErrorCode.BACKEND_CLIENT_FAILED, routing.toString(), ex);
        }
    }

    private void close() {
        log.trace("Connect status before close with '{}' is '{}'.", routing, isConnected);
        isConnected = false;
        if ((transport != null) && transport.isOpen()) {
            transport.close();
            log.info("Closed a connection to {}.", routing);
        }
        if (null != client) {
            client = null;
        }
    }

    /**
     * Open a scanner for reading Doris data.

View on GitHub (pinned to cf67b549a7)