{"record":{"id":"06914b85fac3bd9b","repo":"apache/seatunnel","slug":"routing-failed","errorCode":"ROUTING_FAILED","errorMessage":"argument 'routing' is illegal, value is '%routing%'.","messagePattern":"argument 'routing' is illegal, value is '%routing%'\\.","errorType":"error_code","errorClass":"DorisConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/source/serialization/Routing.java","lineNumber":45,"sourceCode":"/** present a Doris BE address. */\npublic class Routing {\n    private static Logger logger = LoggerFactory.getLogger(Routing.class);\n\n    private String host;\n    private int port;\n\n    public Routing(String routing) throws IllegalArgumentException {\n        parseRouting(routing);\n    }\n\n    private void parseRouting(String routing) throws IllegalArgumentException {\n        logger.debug(\"Parse Doris BE address: '{}'.\", routing);\n        String[] hostPort = routing.split(\":\");\n        if (hostPort.length != 2) {\n            logger.error(\"Format of Doris BE address '{}' is illegal.\", routing);\n            String errMsg =\n                    String.format(ErrorMessages.ILLEGAL_ARGUMENT_MESSAGE, \"routing\", routing);\n            throw new DorisConnectorException(DorisConnectorErrorCode.ROUTING_FAILED, errMsg);\n        }\n        this.host = hostPort[0];\n        try {\n            this.port = Integer.parseInt(hostPort[1]);\n        } catch (NumberFormatException e) {\n            logger.error(\n                    String.format(\n                            ErrorMessages.PARSE_NUMBER_FAILED_MESSAGE,\n                            \"Doris BE's port\",\n                            hostPort[1]));\n            String errMsg =\n                    String.format(ErrorMessages.PARSE_NUMBER_FAILED_MESSAGE, \"routing\", routing);\n            throw new DorisConnectorException(DorisConnectorErrorCode.ROUTING_FAILED, errMsg, e);\n        }\n    }\n\n    public String getHost() {\n        return host;","sourceCodeStart":27,"sourceCodeEnd":63,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/source/serialization/Routing.java#L27-L63","documentation":"Thrown by Routing.parseRouting when a Doris BE address string does not split into exactly one host and one port component (e.g. missing colon, extra colons, or empty host/port). The value passed as the 'routing' argument is the offending input.","triggerScenarios":"A routing entry from DorisClusterInfo/BE http address list lacks a port ('192.168.1.10'), has extra colons (IPv6 literal), or is empty/malformed; constructor Routing(...) calls parseRouting.","commonSituations":"FE returned BE node addresses in unexpected format; manually configured node addresses missing ':port'; IPv6 addresses without bracketing; whitespace or empty entries in the address list.","solutions":["Ensure the routing value is 'host:port', e.g. '192.168.1.10:8040'","Check the Doris FE 'show backends' HTTP address source producing the value","Bracket IPv6 hosts or convert them to a host:port representation the parser accepts","Trim/validate node address config before passing to the source"],"exampleFix":"// before\nnew Routing(\"fe-host\")            // throws\n// after\nnew Routing(\"fe-host:8040\")","handlingStrategy":"validation","validationCode":"// validate BE address before use\nif (!address.matches(\"^[^:]+:\\\\d+$\")) throw new IllegalArgumentException(\"expect host:port, got \" + address);","typeGuard":"boolean isHostPort(String s){ String[] p = s.split(\":\"); return p.length == 2 && !p[0].isEmpty(); }","tryCatchPattern":"try { new Routing(addr); } catch (DorisConnectorException e) { LOG.error(\"bad routing '{}'\", addr, e); }","preventionTips":["Always provide host:port for BE nodes","Handle IPv6 by bracketing or using resolvable hostnames","Verify addresses against 'show backends' HttpPort"],"tags":["doris","address","parsing","config"],"backgroundTag":"invalid-argument-format","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}