{"record":{"id":"f695ea952e34b80e","repo":"apache/cassandra","slug":"unable-to-look-up-endpoint","errorCode":null,"errorMessage":"Unable to look up endpoint ","messagePattern":"Unable to look up endpoint ","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/service/StorageService.java","lineNumber":1721,"sourceCode":"            catch (IllegalArgumentException | UnsupportedOperationException e)\n            {\n                String msg = \"Unable to parse node id string \" + nodeStr;\n                logger.warn(\"{}\", msg, e);\n                throw new IllegalArgumentException(msg, e);\n            }\n        }\n        else\n        {\n            InetAddressAndPort endpoint;\n            try\n            {\n                endpoint = InetAddressAndPort.getByName(endpointStr);\n            }\n            catch (UnknownHostException e)\n            {\n                String msg = \"Unable to look up endpoint \" + endpointStr;\n                logger.warn(\"{}\", msg, e);\n                throw new IllegalArgumentException(msg, e);\n            }\n\n            nodeId = metadata.directory.peerId(endpoint);\n            if (nodeId == null)\n            {\n                String msg = \"Unknown endpoint: \" + endpoint;\n                logger.warn(msg);\n                throw new IllegalArgumentException(msg);\n            }\n        }\n        return nodeId;\n    }\n\n    @Override\n    public void migrateConsensusProtocol(@Nonnull List<String> keyspaceNames,\n                                         @Nullable List<String> maybeTableNames,\n                                         @Nullable String maybeRangesStr)\n    {","sourceCodeStart":1703,"sourceCodeEnd":1739,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/service/StorageService.java#L1703-L1739","documentation":"Thrown by parseNodeIdOrEndpoint in StorageService when the supplied endpoint string cannot be resolved to an IP address via InetAddressAndPort.getByName (UnknownHostException). The message wraps the original host resolution failure and is rethrown as IllegalArgumentException after logging at WARN.","triggerScenarios":"Calling `nodetool abortbootstrap <endpoint>` with a hostname that DNS cannot resolve, a typo'd address, or an unresolvable name in an isolated network.","commonSituations":"DNS misconfiguration or missing /etc/hosts entry on the node running nodetool; using a hostname valid only inside the cluster network; IPv6 literal formatting issues; typo in the address.","solutions":["Use the node's IP address directly instead of a hostname","Fix DNS or add the host to /etc/hosts on the coordinator node","Verify the hostname spelling and that the address is reachable from the node executing the command","Include the port if the node uses a non-default storage port (format host:port as supported by InetAddressAndPort)"],"exampleFix":"// before\nnodetool abortbootstrap boot-node.internal  # unresolvable\n// after\nnodetool abortbootstrap 10.0.0.5","handlingStrategy":"validation","validationCode":"// Resolve the endpoint before calling\njava.net.InetAddress addr = java.net.InetAddress.getByName(endpointStr);\nString ip = addr.getHostAddress(); // use this for abortbootstrap","typeGuard":null,"tryCatchPattern":"try {\n    probe.abortBootstrap(endpointStr);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage() != null && e.getMessage().startsWith(\"Unable to look up endpoint\"))\n        log.warn(\"DNS cannot resolve {} - use the node IP or fix DNS/hosts\", endpointStr);\n    else throw e;\n}","preventionTips":["Prefer IP addresses over hostnames in nodetool operations","Ensure DNS or /etc/hosts entries exist on the node running nodetool","Verify address spelling and IPv6 literal formatting"],"tags":["nodetool","dns","hostname-resolution","network"],"backgroundTag":"resource-not-found","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}