aeron-io/aeron · error · AeronException
re-resolve endpoint channel error -
Error message
re-resolve endpoint channel error -
What it means
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.
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.
Example fix
// before
class MyResolver implements NameResolver {
public InetSocketAddress resolve(...) { return lookup(name); } // throws on transient DNS failure
}
// after
public InetSocketAddress resolve(...) {
try { return lookup(name); }
catch (Exception e) { return lastKnownGood(name); } // cache fallback
} Defensive patterns
Strategy: retry
Try / catch
try {
transport.updateEndpoint(newAddress, statusIndicator);
} catch (AeronException e) {
if (e.getMessage().startsWith("re-resolve endpoint channel error")) {
scheduleRetryWithBackoff(); // resolver may recover
}
} Prevention
- Cache last-known-good resolutions in custom NameResolvers
- Monitor name-resolution service availability
- Use conservative re-resolution intervals
- Alert on ChannelEndpointStatus.ERRORED transitions
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- unresolved - endpoint=, name-resolver=
- unresolved - endpoint=, name-resolver=
- could not resolve endpoint address:
- could not resolve control address:
- unresolved - control=, name-resolver=
AI-assisted analysis of aeron-io/aeron@6d60124e15 (2026-09-12).
Data as JSON: /api/errors/d48b95dc405f3adf.
Report an issue: GitHub.
Appendix: source
Thrown at aeron-driver/src/main/java/io/aeron/driver/media/UdpChannelTransport.java:505
connectAddress = newAddress;
if (null != statusIndicator)
{
statusIndicator.setRelease(ChannelEndpointStatus.ACTIVE);
}
}
}
catch (final Exception ex)
{
if (null != statusIndicator)
{
statusIndicator.setRelease(ChannelEndpointStatus.ERRORED);
}
final String message = "re-resolve endpoint channel error - " + ex.getMessage() +
" (at " + ex.getStackTrace()[0].toString() + "): " + udpChannel.originalUriString();
throw new AeronException(message, ex);
}
}
/**
* Get the configured OS send socket buffer length (SO_SNDBUF) for the endpoint's socket.
*
* @return OS socket send buffer length or 0 if using OS default.
*/
public int socketSndbufLength()
{
return socketSndbufLength;
}
/**
* Get the configured OS receive socket buffer length (SO_RCVBUF) for the endpoint's socket.
*
* @return OS socket receive buffer length or 0 if using OS default.
*/View on GitHub (pinned to 6d60124e15)