{"record":{"id":"e039639447edd4c9","repo":"nats-io/nats-server","slug":"lookup-for-host-q-v","errorCode":null,"errorMessage":"lookup for host %q: %v","messagePattern":"lookup for host %q: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/server.go","lineNumber":4668,"sourceCode":"\t\ts.Errorf(\"%s Accept error: %v\", acceptName, err)\n\t}\n\treturn tmpDelay\n}\n\nvar errNoIPAvail = errors.New(\"no IP available\")\n\nfunc (s *Server) getRandomIP(resolver netResolver, url string, excludedAddresses map[string]struct{}) (string, error) {\n\thost, port, err := net.SplitHostPort(url)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// If already an IP, skip.\n\tif net.ParseIP(host) != nil {\n\t\treturn url, nil\n\t}\n\tips, err := resolver.LookupHost(context.Background(), host)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"lookup for host %q: %v\", host, err)\n\t}\n\tif len(excludedAddresses) > 0 {\n\t\tfor i := 0; i < len(ips); i++ {\n\t\t\tip := ips[i]\n\t\t\taddr := net.JoinHostPort(ip, port)\n\t\t\tif _, excluded := excludedAddresses[addr]; excluded {\n\t\t\t\tif len(ips) == 1 {\n\t\t\t\t\tips = nil\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tips[i] = ips[len(ips)-1]\n\t\t\t\tips = ips[:len(ips)-1]\n\t\t\t\ti--\n\t\t\t}\n\t\t}\n\t\tif len(ips) == 0 {\n\t\t\treturn \"\", errNoIPAvail\n\t\t}","sourceCodeStart":4650,"sourceCodeEnd":4686,"githubUrl":"https://github.com/nats-io/nats-server/blob/3a66a489d262bf89b71a71c955c94920394532f3/server/server.go#L4650-L4686","documentation":"getRandomIP wraps a resolver.LookupHost failure while resolving a hostname used in a URL (route, gateway or leafnode remote): the DNS lookup for that host failed and the underlying resolver error is appended. The URL itself was already split into host:port; the fault is name resolution, not URL syntax.","triggerScenarios":"Thrown at server/server.go:4668 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the hostname resolves (dig/nslookup) from the server host","Fix DNS configuration (/etc/resolv.conf, DNS server) or add an /etc/hosts entry","Use an IP address in the config to bypass DNS","Retry after transient DNS outages; the server retries solicitation"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3a66a489d262bf89b71a71c955c94920394532f3","analyzedAt":"2026-09-02T04:41:54.247Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}