diff --git a/resolver-dns/src/main/java/io/netty/resolver/dns/DnsQueryContext.java b/resolver-dns/src/main/java/io/netty/resolver/dns/DnsQueryContext.java index 12196f184c..3aee7686d3 100644 --- a/resolver-dns/src/main/java/io/netty/resolver/dns/DnsQueryContext.java +++ b/resolver-dns/src/main/java/io/netty/resolver/dns/DnsQueryContext.java @@ -115,10 +115,13 @@ final class DnsQueryContext { } else { parent.channelFuture.addListener(new GenericFutureListener>() { @Override - public void operationComplete(Future future) throws Exception { + public void operationComplete(Future future) { if (future.isSuccess()) { writeQuery(query, writePromise); } else { + // Remove the id from the manager as we fail the query. + parent.queryContextManager.remove(nameServerAddr(), id); + Throwable cause = future.cause(); promise.tryFailure(cause); writePromise.setFailure(cause);