in httpdns_api_demo/src/main/java/alibaba/httpdns_api_demo/HttpDNS.java [238:264]
public String getIpByHost(String hostName) {
if (degradationFilter != null) {
if (degradationFilter.shouldDegradeHttpDNS(hostName)) {
return null;
}
}
HostObject host = hostManager.get(hostName);
if (host == null || (host.isExpired() && !isExpiredIpAvailable())) {
HttpDNSLog.logD("[getIpByHost] - fetch result from network, host: " + hostName);
Future<String> future = pool.submit(new QueryHostTask(hostName));
try {
return future.get();
} catch (Exception e) {
if (HttpDNSLog.isLogEnabled()) {
e.printStackTrace();
}
}
return null;
} else if (host.isExpired()) {
// 同步返回,异步更新
HttpDNSLog.logD("[getIpByHost] - fetch result from cache, host: " + hostName);
pool.submit(new QueryHostTask(hostName));
return host.getIp();
}
HttpDNSLog.logD("[getIpByHost] - fetch result from cache, host: " + hostName);
return host.getIp();
}