{"record":{"id":"0dfd3fd2c37d8117","repo":"apache/seatunnel","slug":"nodes-d-port-s-is-out-of-range-d-d","errorCode":null,"errorMessage":"nodes[%d]: port '%s' is out of range [%d, %d]","messagePattern":"nodes\\[(.+?)\\]: port '(.+?)' is out of range \\[(.+?), (.+?)\\]","errorType":"validation","errorClass":"OptionValidationException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-redis/src/main/java/org/apache/seatunnel/connectors/seatunnel/redis/config/RedisNodesValidator.java","lineNumber":60,"sourceCode":"            throws OptionValidationException {\n        for (int i = 0; i < value.size(); i++) {\n            String node = value.get(i);\n            if (node == null || !NODE_PATTERN.matcher(node).matches()) {\n                throw new OptionValidationException(\n                        \"nodes[%d]: must be in 'host:port' format, got: %s\", i, node);\n            }\n            int colon = node.indexOf(':');\n            String host = node.substring(0, colon);\n            if (host.trim().isEmpty()) {\n                throw new OptionValidationException(\n                        \"nodes[%d]: host must not be blank in 'host:port', got: %s\", i, node);\n            }\n            String portStr = node.substring(colon + 1);\n            int port;\n            try {\n                port = Integer.parseInt(portStr);\n            } catch (NumberFormatException e) {\n                throw new OptionValidationException(\n                        \"nodes[%d]: port '%s' is out of range [%d, %d]\",\n                        i, portStr, RedisBaseOptions.MIN_PORT, RedisBaseOptions.MAX_PORT);\n            }\n            if (port < RedisBaseOptions.MIN_PORT || port > RedisBaseOptions.MAX_PORT) {\n                throw new OptionValidationException(\n                        \"nodes[%d]: port %d is out of range [%d, %d]\",\n                        i, port, RedisBaseOptions.MIN_PORT, RedisBaseOptions.MAX_PORT);\n            }\n        }\n        return true;\n    }\n}\n","sourceCodeStart":42,"sourceCodeEnd":73,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-redis/src/main/java/org/apache/seatunnel/connectors/seatunnel/redis/config/RedisNodesValidator.java#L42-L73","documentation":"The Redis connector could not parse the port portion of a `nodes` entry in 'host:port' format as an integer. RedisNodesValidator catches the NumberFormatException from Integer.parseInt and rethrows it as an OptionValidationException reporting the allowed port range. This unifies parse failures and range failures into a clear config error.","triggerScenarios":"evaluate() receives a nodes entry like '127.0.0.1:abc', 'host:', or 'host:63790abc' where the substring after the first colon is not a valid decimal integer.","commonSituations":"Typos in the port, leftover characters after the port (e.g. '6379;'), accidentally using a hostname where the port belongs, or placeholder text like 'host:PORT' that was never substituted.","solutions":["Correct the port to a numeric value in the valid range (see the range reported in the message, e.g. 1-65535).","Ensure no stray characters follow the port number.","If the port is templated, confirm substitution produced a number.","Quote/escape the node string so shell or YAML parsing doesn't mangle it."],"exampleFix":"// before\nnodes = [\"127.0.0.1:PORT\"]\n// after\nnodes = [\"127.0.0.1:6379\"]","handlingStrategy":"validation","validationCode":"String portStr = node.substring(node.indexOf(':') + 1);\ntry { Integer.parseInt(portStr); } catch (NumberFormatException e) {\n    throw new IllegalArgumentException(\"non-numeric port: \" + portStr);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Double-check ports are pure digits","Resolve templated ports before submitting config","Use the default 6379 when unsure"],"tags":["redis","config-validation","port"],"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-23T08:17:48.524Z"}