{"record":{"id":"ee6047095268e28c","repo":"apache/seatunnel","slug":"nodes-d-port-d-is-out-of-range-d-d","errorCode":null,"errorMessage":"nodes[%d]: port %d 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":65,"sourceCode":"                        \"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":47,"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#L47-L73","documentation":"The port parsed from a `nodes` entry is a valid integer but outside the allowed range [MIN_PORT, MAX_PORT] (1-65535) enforced by RedisBaseOptions. RedisNodesValidator explicitly bounds-checks the parsed value after parsing. This rejects nonsensical ports like 0, negative numbers, or values above 65535.","triggerScenarios":"evaluate() gets a nodes entry such as '127.0.0.1:0', '127.0.0.1:99999', or '127.0.0.1:-1' where the port parses as an integer but violates RedisBaseOptions.MIN_PORT/MAX_PORT bounds.","commonSituations":"Confusing 16-bit port limits (typing 655360 or 100000), copy-paste of IPv6-like or other numeric junk after the host, or mistaking other port conventions (e.g. cluster bus port +10000 confusion).","solutions":["Change the port to a value between 1 and 65535 (Redis default is 6379).","Verify the actual Redis server port with `redis-cli -p <port> ping`.","Remove any extra digits accidentally appended to the port."],"exampleFix":"// before\nnodes = [\"127.0.0.1:99999\"]\n// after\nnodes = [\"127.0.0.1:6379\"]","handlingStrategy":"validation","validationCode":"int port = Integer.parseInt(node.substring(node.indexOf(':') + 1));\nif (port < 1 || port > 65535) throw new IllegalArgumentException(\"port out of range: \" + port);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Remember ports are 1-65535","Test the port with redis-cli before submitting the job","Avoid appending digits to port numbers"],"tags":["redis","config-validation","port-range"],"backgroundTag":"value-out-of-range","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"}