{"record":{"id":"25c266ace9a7a87a","repo":"apache/seatunnel","slug":"backend-client-failed","errorCode":"BACKEND_CLIENT_FAILED","errorMessage":"routing.toString() (DorisConnectorException BACKEND_CLIENT_FAILED, cause ex)","messagePattern":"routing\\.toString\\(\\) \\(DorisConnectorException BACKEND_CLIENT_FAILED, cause ex\\)","errorType":"error_code","errorClass":"DorisConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/backend/BackendClient.java","lineNumber":105,"sourceCode":"                log.trace(\n                        \"Connect status before open transport to {} is '{}'.\",\n                        routing,\n                        isConnected);\n                if (!transport.isOpen()) {\n                    transport.open();\n                    isConnected = true;\n                    log.info(\"Success connect to {}.\", routing);\n                    break;\n                }\n            } catch (TTransportException e) {\n                log.warn(ErrorMessages.CONNECT_FAILED_MESSAGE, routing, e);\n                ex = e;\n            }\n        }\n        if (!isConnected) {\n            log.error(ErrorMessages.CONNECT_FAILED_MESSAGE, routing);\n            //            throw new ConnectedFailedException(routing.toString(), ex);\n            throw new DorisConnectorException(\n                    DorisConnectorErrorCode.BACKEND_CLIENT_FAILED, routing.toString(), ex);\n        }\n    }\n\n    private void close() {\n        log.trace(\"Connect status before close with '{}' is '{}'.\", routing, isConnected);\n        isConnected = false;\n        if ((transport != null) && transport.isOpen()) {\n            transport.close();\n            log.info(\"Closed a connection to {}.\", routing);\n        }\n        if (null != client) {\n            client = null;\n        }\n    }\n\n    /**\n     * Open a scanner for reading Doris data.","sourceCodeStart":87,"sourceCodeEnd":123,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/backend/BackendClient.java#L87-L123","documentation":"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.","triggerScenarios":"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.","commonSituations":"See trigger scenarios.","solutions":["Verify Doris BE hosts/ports in the config are correct and reachable","Check BE process health and firewall/network connectivity from the SeaTunnel worker","Confirm FE-provided BE routing is not stale after cluster topology changes"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}