finishResolve() — netty Function Reference
Architecture documentation for the finishResolve() function in DnsResolveContext.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD f701afc3_7b98_f295_5bd8_4cbb368c0263["finishResolve()"] 3bc002ec_f54e_a55f_0b37_77eac88c60db["DnsResolveContext"] f701afc3_7b98_f295_5bd8_4cbb368c0263 -->|defined in| 3bc002ec_f54e_a55f_0b37_77eac88c60db b3885856_e061_0f3a_54d9_f9abe9613324["tryToFinishResolve()"] b3885856_e061_0f3a_54d9_f9abe9613324 -->|calls| f701afc3_7b98_f295_5bd8_4cbb368c0263 836e4609_6a00_0ab5_76ae_511f287c23c9["isEmpty()"] f701afc3_7b98_f295_5bd8_4cbb368c0263 -->|calls| 836e4609_6a00_0ab5_76ae_511f287c23c9 bf482da1_b132_070b_41fc_4cdb2284527d["iterator()"] f701afc3_7b98_f295_5bd8_4cbb368c0263 -->|calls| bf482da1_b132_070b_41fc_4cdb2284527d 897b955b_8e11_6099_2d0f_344fd4d5386d["filterResults()"] f701afc3_7b98_f295_5bd8_4cbb368c0263 -->|calls| 897b955b_8e11_6099_2d0f_344fd4d5386d e1a10468_2ab8_17c7_5dfe_66d356b0d510["cache()"] f701afc3_7b98_f295_5bd8_4cbb368c0263 -->|calls| e1a10468_2ab8_17c7_5dfe_66d356b0d510 style f701afc3_7b98_f295_5bd8_4cbb368c0263 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java lines 1081–1140
private void finishResolve(Promise<List<T>> promise, Throwable cause) {
// If completeEarly was true we still want to continue processing the queries to ensure we still put everything
// in the cache eventually.
if (!completeEarly && !queriesInProgress.isEmpty()) {
// If there are queries in progress, we should cancel it because we already finished the resolution.
for (Iterator<Future<AddressedEnvelope<DnsResponse, InetSocketAddress>>> i = queriesInProgress.iterator();
i.hasNext();) {
Future<AddressedEnvelope<DnsResponse, InetSocketAddress>> f = i.next();
i.remove();
f.cancel(false);
}
}
if (finalResult != null) {
if (!promise.isDone()) {
// Found at least one resolved record.
final List<T> result = filterResults(finalResult);
// Lets replace the previous stored result.
finalResult = Collections.emptyList();
if (!DnsNameResolver.trySuccess(promise, result)) {
for (T item : result) {
ReferenceCountUtil.safeRelease(item);
}
}
} else {
// This should always be the case as we replaced the list once notify the promise with an empty one
// and never add to it again.
assert finalResult.isEmpty();
}
return;
}
// No resolved address found.
final int maxAllowedQueries = parent.maxQueriesPerResolve();
final int tries = maxAllowedQueries - allowedQueries;
final StringBuilder buf = new StringBuilder(64);
buf.append("Failed to resolve '").append(hostname).append("' ").append(Arrays.toString(expectedTypes));
if (tries > 1) {
if (tries < maxAllowedQueries) {
buf.append(" after ")
.append(tries)
.append(" queries ");
} else {
buf.append(". Exceeded max queries per resolve ")
.append(maxAllowedQueries)
.append(' ');
}
}
final UnknownHostException unknownHostException = new UnknownHostException(buf.toString());
if (cause == null) {
// Only cache if the failure was not because of an IO error / timeout that was caused by the query
// itself.
cache(hostname, additionals, unknownHostException);
} else {
unknownHostException.initCause(cause);
}
promise.tryFailure(unknownHostException);
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does finishResolve() do?
finishResolve() is a function in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java.
Where is finishResolve() defined?
finishResolve() is defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java at line 1081.
What does finishResolve() call?
finishResolve() calls 4 function(s): cache, filterResults, isEmpty, iterator.
What calls finishResolve()?
finishResolve() is called by 1 function(s): tryToFinishResolve.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free