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 6b98f36e8c..5439fb82b1 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 @@ -191,7 +191,10 @@ final class DnsQueryContext { @SuppressWarnings("unchecked") AddressedEnvelope castResponse = (AddressedEnvelope) envelope.retain(); - promise.setSuccess(castResponse); + if (!promise.trySuccess(castResponse)) { + // We failed to notify the promise as it was failed before, thus we need to release the envelope + envelope.release(); + } } }