aeron-io/aeron · error · AeronEvent
could not re-resolve: endpoint=
Error message
could not re-resolve: endpoint={endpoint} What it means
Same re-resolution failure as 624 but for the endpoint= parameter of a channel URI. The driver's periodic re-resolution of the endpoint hostname produced an unresolved InetSocketAddress, so it throws AeronEvent instead of silently updating the endpoint address.
Solutions
- Restore DNS resolution for the endpoint hostname and confirm with nslookup.
- Use an IP literal in endpoint= for critical channels.
- Register a custom NameResolver that caches last-known-good addresses.
- Handle the AeronEvent by keeping the prior address and retrying resolution later.
Example fix
// before
ctx.addSubscription("aeron:udp?endpoint=media-host.internal:40456", streamId);
// after
ctx.addSubscription("aeron:udp?endpoint=media-host.internal:40456", streamId);
// plus configure NameResolver with cache:
MediaDriver.launch(new MediaDriver.Context().nameResolver(new CachedRecordingNameResolver())); Defensive patterns
Strategy: retry
Validate before calling
InetSocketAddress ep = new InetSocketAddress(endpointHost, endpointPort);
if (ep.isUnresolved()) { throw new IllegalArgumentException("endpoint unresolvable at config time: " + endpointHost); } Try / catch
try {
driver.awaitReResolution();
} catch (AeronEvent e) {
if (e.getMessage().startsWith("could not re-resolve: endpoint=")) {
retainLastKnownGoodAddress();
scheduleRetry();
} else { throw e; }
} Prevention
- Resolve endpoint hostnames at startup and fail fast if unresolved
- Use static IPs for critical media endpoints
- Alert on DNS failures for hosts referenced in channel URIs
When it happens
Trigger: Active channel with endpoint=<hostname>:port whose DNS entry fails to resolve when the driver's re-resolution timer fires; resolver returns null-or-unresolved results.
Common situations: Long-running connections to hosts whose DNS records were removed/changed; split-horizon DNS in Kubernetes where the driver host cannot resolve peer names; VPN or network namespace changes breaking name resolution.
Understand the failure class
Background: Request timed out: what client-side request timeouts mean across libraries (Request timed out, TIMED_OUT, APITimeoutError) — this error's family across 39 libraries.
Related errors
- could not re-resolve: control=
- could not resolve endpoint address:
- could not resolve control address:
- failed to fetch remote recording descriptor
- failed to resolve subscription endpoint: channel=" +…
AI-assisted analysis of aeron-io/aeron@6d60124e15 (2026-09-12).
Data as JSON: /api/errors/35c916ade83d9569.
Report an issue: GitHub.
Appendix: source
Thrown at aeron-driver/src/main/java/io/aeron/driver/DriverConductor.java:3879
private final CommandResult<InetSocketAddress> resolvedAddressResult;
ReResolveEndpointAddress(
final String endpoint, final SendChannelEndpoint channelEndpoint, final InetSocketAddress address)
{
this.endpoint = endpoint;
this.channelEndpoint = channelEndpoint;
this.address = address;
resolvedAddressResult = nativeResourceAgentProxy.reResolveAddress(endpoint, ENDPOINT_PARAM_NAME);
}
boolean execute()
{
final InetSocketAddress newAddress = resolvedAddressResult.get();
if (null != newAddress)
{
if (newAddress.isUnresolved())
{
throw new AeronEvent("could not re-resolve: " + ENDPOINT_PARAM_NAME + "=" + endpoint);
}
if (ChannelEndpointStatus.ACTIVE == channelEndpoint.status())
{
if (!Objects.equals(address, newAddress))
{
senderProxy.onResolutionChange(channelEndpoint, endpoint, newAddress);
}
}
return true;
}
return false;
}
}
}
View on GitHub (pinned to 6d60124e15)