{"record":{"id":"d48b95dc405f3adf","repo":"aeron-io/aeron","slug":"re-resolve-endpoint-channel-error","errorCode":null,"errorMessage":"re-resolve endpoint channel error - ","messagePattern":"re-resolve endpoint channel error - ","errorType":"exception","errorClass":"AeronException","httpStatus":null,"severity":"error","filePath":"aeron-driver/src/main/java/io/aeron/driver/media/UdpChannelTransport.java","lineNumber":505,"sourceCode":"                connectAddress = newAddress;\n\n                if (null != statusIndicator)\n                {\n                    statusIndicator.setRelease(ChannelEndpointStatus.ACTIVE);\n                }\n            }\n        }\n        catch (final Exception ex)\n        {\n            if (null != statusIndicator)\n            {\n                statusIndicator.setRelease(ChannelEndpointStatus.ERRORED);\n            }\n\n            final String message = \"re-resolve endpoint channel error - \" + ex.getMessage() +\n                \" (at \" + ex.getStackTrace()[0].toString() + \"): \" + udpChannel.originalUriString();\n\n            throw new AeronException(message, ex);\n        }\n    }\n\n    /**\n     * Get the configured OS send socket buffer length (SO_SNDBUF) for the endpoint's socket.\n     *\n     * @return OS socket send buffer length or 0 if using OS default.\n     */\n    public int socketSndbufLength()\n    {\n        return socketSndbufLength;\n    }\n\n    /**\n     * Get the configured OS receive socket buffer length (SO_RCVBUF) for the endpoint's socket.\n     *\n     * @return OS socket receive buffer length or 0 if using OS default.\n     */","sourceCodeStart":487,"sourceCodeEnd":523,"githubUrl":"https://github.com/aeron-io/aeron/blob/6d60124e15e35c11b49ba2e3c2c2858a09a18803/aeron-driver/src/main/java/io/aeron/driver/media/UdpChannelTransport.java#L487-L523","documentation":"updateEndpoint failed while re-resolving the endpoint address of an existing UdpChannelTransport (dynamic name resolution). The causing exception's message, top stack frame, and original URI are wrapped in an AeronException; the channel's status indicator is set to ERRORED.","triggerScenarios":"Periodic or on-demand endpoint re-resolution (dynamic resolution mode) when the NameResolver throws or returns a failure — e.g. DNS lookup exception, resolver service unreachable, or malformed replacement address.","commonSituations":"DNS server outage during long-lived connections using dynamic endpoint resolution, custom NameResolver service crash, network partition, or an updated DNS record with an invalid value.","solutions":["Inspect the wrapped exception to see whether DNS lookup or the resolver service failed.","Ensure the NameResolver service is reachable and returning valid host:port values.","Add fallback/resolution retry logic in the custom NameResolver implementation.","Verify DNS health from the driver host (dig/nslookup) and fix resolv.conf or DNS server issues."],"exampleFix":"// before\nclass MyResolver implements NameResolver {\n  public InetSocketAddress resolve(...) { return lookup(name); } // throws on transient DNS failure\n}\n// after\npublic InetSocketAddress resolve(...) {\n  try { return lookup(name); }\n  catch (Exception e) { return lastKnownGood(name); } // cache fallback\n}","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    transport.updateEndpoint(newAddress, statusIndicator);\n} catch (AeronException e) {\n    if (e.getMessage().startsWith(\"re-resolve endpoint channel error\")) {\n        scheduleRetryWithBackoff(); // resolver may recover\n    }\n}","preventionTips":["Cache last-known-good resolutions in custom NameResolvers","Monitor name-resolution service availability","Use conservative re-resolution intervals","Alert on ChannelEndpointStatus.ERRORED transitions"],"tags":["network","dns","name-resolution","udp","reconnection"],"backgroundTag":"dns-resolution-failed","analyzedSha":"6d60124e15e35c11b49ba2e3c2c2858a09a18803","analyzedAt":"2026-09-12T11:17:07.683Z","contentChangedAt":"2026-09-12T11:17:07.683Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}