{"record":{"id":"1daa75137827e953","repo":"aeron-io/aeron","slug":"could-not-re-resolve-control-control","errorCode":null,"errorMessage":"could not re-resolve: control={control}","messagePattern":"could not re-resolve: control=(.+?)","errorType":"exception","errorClass":"AeronEvent","httpStatus":null,"severity":"error","filePath":"aeron-driver/src/main/java/io/aeron/driver/DriverConductor.java","lineNumber":3840,"sourceCode":"            final UdpChannel udpChannel,\n            final ReceiveChannelEndpoint channelEndpoint,\n            final InetSocketAddress address)\n        {\n            resolvedAddressResult = nativeResourceAgentProxy.reResolveAddress(control, MDC_CONTROL_PARAM_NAME);\n            this.control = control;\n            this.udpChannel = udpChannel;\n            this.channelEndpoint = channelEndpoint;\n            this.address = address;\n        }\n\n        boolean execute()\n        {\n            final InetSocketAddress newAddress = resolvedAddressResult.get();\n            if (null != newAddress)\n            {\n                if (newAddress.isUnresolved())\n                {\n                    throw new AeronEvent(\"could not re-resolve: \" + MDC_CONTROL_PARAM_NAME + \"=\" + control);\n                }\n\n                if (ChannelEndpointStatus.ACTIVE == channelEndpoint.status())\n                {\n                    if (!Objects.equals(address, newAddress))\n                    {\n                        receiverProxy.onResolutionChange(channelEndpoint, udpChannel, newAddress);\n                    }\n                }\n                return true;\n            }\n            return false;\n        }\n    }\n\n    private final class ReResolveEndpointAddress extends Command\n    {\n        private final String endpoint;","sourceCodeStart":3822,"sourceCodeEnd":3858,"githubUrl":"https://github.com/aeron-io/aeron/blob/6d60124e15e35c11b49ba2e3c2c2858a09a18803/aeron-driver/src/main/java/io/aeron/driver/DriverConductor.java#L3822-L3858","documentation":"Thrown during dynamic re-resolution of an existing channel's control address (MDC control param). The driver scheduled a DNS re-resolution, got a result back, but the address is still unresolved — the hostname cannot be resolved to an IP at re-resolution time.","triggerScenarios":"A channel endpoint whose control-mode=manual/dynamic URI contains a hostname in the control= parameter; the driver's address resolver re-resolve task runs and the underlying resolver (DNS, NameResolver) returns an unresolved InetSocketAddress.","commonSituations":"DNS outage or resolver misconfiguration while a long-lived publication/subscription is active; hostname removed from /etc/hosts or DNS zone; using a name the JVM resolver cannot resolve in the current network (e.g. container networking changes).","solutions":["Fix DNS so the control hostname resolves (dig/nslookup the name from the driver host).","Replace the hostname in the control= parameter with a literal IP to avoid re-resolution.","Configure a custom NameResolver (io.aeron.driver.NameResolver) with a resilient/ cached resolver.","Catch AeronEvent and fall back to the previous address or restart the endpoint once DNS recovers."],"exampleFix":"// before\nAeron.connect(new Aeron.Context()).addPublication(\"aeron:udp?control=mdc-host-1:40456\", streamId);\n// after\nAeron.connect(new Aeron.Context()).addPublication(\"aeron:udp?control=192.168.1.10:40456\", streamId); // literal IP avoids re-resolution","handlingStrategy":"retry","validationCode":"InetSocketAddress addr = new InetSocketAddress(controlHost, port);\nif (addr.isUnresolved()) { /* fix DNS or use IP before creating channel */ }","typeGuard":null,"tryCatchPattern":"try {\n    configureControlAddress(control);\n} catch (AeronEvent e) {\n    if (e.getMessage().startsWith(\"could not re-resolve: control=\")) {\n        backoffAndRetryDnsResolution();\n    } else { throw e; }\n}","preventionTips":["Prefer IP literals for control addresses in production","Monitor DNS health on driver hosts","Install a caching/custom NameResolver for resilience"],"tags":["aeron","dns","network","resolution"],"backgroundTag":"request-timeout","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"}