{"record":{"id":"c4516c508da8483c","repo":"apache/incubator-seata","slug":"invalid-address-address","errorCode":null,"errorMessage":"\"invalid address:\" + address","messagePattern":"\"invalid address:\" \\+ address","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"common/src/main/java/org/apache/seata/common/util/NetUtil.java","lineNumber":363,"sourceCode":"            return false;\n        }\n        for (String regex : ignoredInterfaces) {\n            if (interfaceName.matches(regex)) {\n                LOGGER.trace(\"Ignoring interface: {}\", interfaceName);\n                return true;\n            }\n        }\n        return false;\n    }\n\n    /**\n     * Valid address.\n     *\n     * @param address the address\n     */\n    public static void validAddress(InetSocketAddress address) {\n        if (address.getHostName() == null || 0 == address.getPort()) {\n            throw new IllegalArgumentException(\"invalid address:\" + address);\n        }\n    }\n\n    /**\n     * is valid address\n     *\n     * @param address\n     * @return true if the given address is valid\n     */\n    private static boolean isValidAddress(InetAddress address) {\n        if (address == null || address.isLoopbackAddress()) {\n            return false;\n        }\n        String hostAddress = address.getHostAddress();\n        if (address instanceof Inet6Address) {\n            if (!PREFER_IPV6_ADDRESSES) {\n                return false;\n            }","sourceCodeStart":345,"sourceCodeEnd":381,"githubUrl":"https://github.com/apache/incubator-seata/blob/e01f97c6db397165050caa6764020410c2c8199a/common/src/main/java/org/apache/seata/common/util/NetUtil.java#L345-L381","documentation":"NetUtil.validAddress asserts that an InetSocketAddress is usable for RPC: it must carry a non-null host name and a non-zero port. If either check fails it throws IllegalArgumentException(\"invalid address:\" + address). It is typically invoked when registering or connecting to a Seata server address.","triggerScenarios":"Calling validAddress on an address created without resolution — e.g. new InetSocketAddress(\"unresolved-host\", 0), an InetSocketAddress built from a hostname that failed DNS resolution (getHostName() null), or a port of 0 inherited from NetUtil.toInetSocketAddress when the input had no colon (which sets port=0).","commonSituations":"Passing a hostname-only string through toInetSocketAddress (port defaults to 0), running in an environment where DNS cannot resolve the server host, or a proxy/load-balancer address object constructed with port 0.","solutions":["Ensure the address string includes an explicit port: host:8091","Verify the hostname resolves (check DNS/hosts entries, container network) before constructing the address","Pass an already-resolved InetSocketAddress created via new InetSocketAddress(InetAddress, port)"],"exampleFix":"// before\nInetSocketAddress a = NetUtil.toInetSocketAddress(\"seata-server\"); // port defaults to 0\nNetUtil.validAddress(a); // throws\n\n// after\nInetSocketAddress a = NetUtil.toInetSocketAddress(\"seata-server:8091\");\nNetUtil.validAddress(a);","handlingStrategy":"validation","validationCode":"InetSocketAddress a = NetUtil.toInetSocketAddress(host + \":\" + port);\nif (a.isUnresolved() || a.getPort() == 0) throw new IllegalArgumentException(\"unusable address: \" + a);\nNetUtil.validAddress(a);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always build addresses with an explicit port","Verify DNS resolution before constructing addresses in dynamic environments","Use InetSocketAddress.getByAddress when you already hold an InetAddress"],"tags":["network","address-validation","dns","rpc"],"backgroundTag":null,"analyzedSha":"e01f97c6db397165050caa6764020410c2c8199a","analyzedAt":"2026-08-14T10:23:53.097Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}