|
|
@ -26,6 +26,8 @@ import io.netty.resolver.dns.*;
|
|
|
|
import io.netty.util.concurrent.EventExecutor;
|
|
|
|
import io.netty.util.concurrent.EventExecutor;
|
|
|
|
import io.netty.util.concurrent.Promise;
|
|
|
|
import io.netty.util.concurrent.Promise;
|
|
|
|
import org.redisson.misc.AsyncSemaphore;
|
|
|
|
import org.redisson.misc.AsyncSemaphore;
|
|
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
|
|
|
|
import java.net.InetAddress;
|
|
|
|
import java.net.InetAddress;
|
|
|
|
import java.net.InetSocketAddress;
|
|
|
|
import java.net.InetSocketAddress;
|
|
|
@ -40,6 +42,8 @@ import java.util.concurrent.Callable;
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public class SequentialDnsAddressResolverFactory implements AddressResolverGroupFactory {
|
|
|
|
public class SequentialDnsAddressResolverFactory implements AddressResolverGroupFactory {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static final Logger log = LoggerFactory.getLogger(SequentialDnsAddressResolverFactory.class);
|
|
|
|
|
|
|
|
|
|
|
|
static class LimitedInetSocketAddressResolver extends InetSocketAddressResolver {
|
|
|
|
static class LimitedInetSocketAddressResolver extends InetSocketAddressResolver {
|
|
|
|
|
|
|
|
|
|
|
|
final AsyncSemaphore semaphore;
|
|
|
|
final AsyncSemaphore semaphore;
|
|
|
@ -100,8 +104,14 @@ public class SequentialDnsAddressResolverFactory implements AddressResolverGroup
|
|
|
|
Class<? extends SocketChannel> socketChannelType,
|
|
|
|
Class<? extends SocketChannel> socketChannelType,
|
|
|
|
DnsServerAddressStreamProvider nameServerProvider) {
|
|
|
|
DnsServerAddressStreamProvider nameServerProvider) {
|
|
|
|
DnsNameResolverBuilder dnsResolverBuilder = new DnsNameResolverBuilder();
|
|
|
|
DnsNameResolverBuilder dnsResolverBuilder = new DnsNameResolverBuilder();
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
dnsResolverBuilder.getClass().getMethod("socketChannelType", Class.class, boolean.class);
|
|
|
|
|
|
|
|
dnsResolverBuilder.socketChannelType(socketChannelType, true);
|
|
|
|
|
|
|
|
} catch (NoSuchMethodException e) {
|
|
|
|
|
|
|
|
log.warn("DNS TCP fallback on UDP query timeout disabled. Upgrade Netty to 4.1.105 or higher.");
|
|
|
|
|
|
|
|
dnsResolverBuilder.socketChannelType(socketChannelType);
|
|
|
|
|
|
|
|
}
|
|
|
|
dnsResolverBuilder.channelType(channelType)
|
|
|
|
dnsResolverBuilder.channelType(channelType)
|
|
|
|
.socketChannelType(socketChannelType, true)
|
|
|
|
|
|
|
|
.nameServerProvider(nameServerProvider)
|
|
|
|
.nameServerProvider(nameServerProvider)
|
|
|
|
.resolveCache(new DefaultDnsCache())
|
|
|
|
.resolveCache(new DefaultDnsCache())
|
|
|
|
.cnameCache(new DefaultDnsCnameCache());
|
|
|
|
.cnameCache(new DefaultDnsCnameCache());
|
|
|
|