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

  1. Inspect the wrapped exception to see whether DNS lookup or the resolver service failed.
  2. Ensure the NameResolver service is reachable and returning valid host:port values.
  3. Add fallback/resolution retry logic in the custom NameResolver implementation.
  4. 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

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


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)