+ * Since Lettuce 6.7, {@literal netty-dns-resolver} became a required dependency so this class now unconditionally uses + * {@link DnsAddressResolverGroup} * * @author Yohei Ueki * @author Mark Paluch + * @author Euiyoung Nam * @since 6.1 */ class AddressResolverGroupProvider { - private static final InternalLogger logger = InternalLoggerFactory.getInstance(AddressResolverGroupProvider.class); - - private static final AddressResolverGroup> ADDRESS_RESOLVER_GROUP; - - static { - boolean dnsResolverAvailable = LettuceClassUtils.isPresent("io.netty.resolver.dns.DnsAddressResolverGroup"); - - AddressResolverGroup> group; - if (dnsResolverAvailable) { - logger.debug("Starting with netty's non-blocking DNS resolver library"); - group = DefaultDnsAddressResolverGroupWrapper.INSTANCE; - } else { - logger.debug("Starting without optional netty's non-blocking DNS resolver library"); - group = DefaultAddressResolverGroup.INSTANCE; - } - ADDRESS_RESOLVER_GROUP = group; - } + private static final AddressResolverGroup> ADDRESS_RESOLVER_GROUP = DefaultDnsAddressResolverGroupWrapper.INSTANCE; /** * Returns the {@link AddressResolverGroup} for DNS resolution. diff --git a/src/main/java/io/lettuce/core/resource/ClientResources.java b/src/main/java/io/lettuce/core/resource/ClientResources.java index 4d82d4ac08..e00ddab33a 100644 --- a/src/main/java/io/lettuce/core/resource/ClientResources.java +++ b/src/main/java/io/lettuce/core/resource/ClientResources.java @@ -56,6 +56,7 @@ * @author Mark Paluch * @author Mikhael Sokolov * @author Yohei Ueki + * @author Euiyoung Nam * @since 3.4 * @see DefaultClientResources */ @@ -361,7 +362,9 @@ default Builder commandLatencyCollector(CommandLatencyCollector commandLatencyCo * * @return the DNS resolver. * @since 4.3 + * @deprecated since 6.6 replaced by{@link AddressResolverGroup} instead. */ + @Deprecated DnsResolver dnsResolver(); /** diff --git a/src/main/java/io/lettuce/core/resource/DefaultClientResources.java b/src/main/java/io/lettuce/core/resource/DefaultClientResources.java index a165978df6..276df31d46 100644 --- a/src/main/java/io/lettuce/core/resource/DefaultClientResources.java +++ b/src/main/java/io/lettuce/core/resource/DefaultClientResources.java @@ -79,6 +79,7 @@ * * @author Mark Paluch * @author Yohei Ueki + * @author Euiyoung Nam * @since 3.4 */ public class DefaultClientResources implements ClientResources { @@ -786,6 +787,10 @@ public int computationThreadPoolSize() { return LettuceLists.newList(eventExecutorGroup.iterator()).size(); } + /** + * @deprecated since 6.7 replaced by{@link AddressResolverGroup} instead. + **/ + @Deprecated @Override public DnsResolver dnsResolver() { return dnsResolver; diff --git a/src/main/java/io/lettuce/core/resource/DnsResolver.java b/src/main/java/io/lettuce/core/resource/DnsResolver.java index 23863402d5..083e07a8ef 100644 --- a/src/main/java/io/lettuce/core/resource/DnsResolver.java +++ b/src/main/java/io/lettuce/core/resource/DnsResolver.java @@ -2,11 +2,13 @@ import java.net.InetAddress; import java.net.UnknownHostException; +import io.netty.resolver.AddressResolverGroup; /** * Users may implement this interface to override the normal DNS lookup offered by the OS. * * @author Mark Paluch + * @author Euiyoung Nam * @since 4.2 */ public interface DnsResolver { @@ -14,6 +16,7 @@ public interface DnsResolver { /** * Java VM default resolver. * + * @deprecated since 6.7, see {@link AddressResolverGroup} * @since 5.1 */ static DnsResolver jvmDefault() { diff --git a/src/main/java/io/lettuce/core/resource/DnsResolvers.java b/src/main/java/io/lettuce/core/resource/DnsResolvers.java index 54e2936349..ef1348b4a3 100644 --- a/src/main/java/io/lettuce/core/resource/DnsResolvers.java +++ b/src/main/java/io/lettuce/core/resource/DnsResolvers.java @@ -1,5 +1,7 @@ package io.lettuce.core.resource; +import io.netty.resolver.AddressResolverGroup; + import java.net.InetAddress; import java.net.UnknownHostException; @@ -13,6 +15,8 @@ public enum DnsResolvers implements DnsResolver { /** * Java VM default resolver. + * + * @deprecated since 6.7. Configure {@link AddressResolverGroup} instead. */ JVM_DEFAULT { diff --git a/src/test/java/io/lettuce/core/resource/DefaultClientResourcesUnitTests.java b/src/test/java/io/lettuce/core/resource/DefaultClientResourcesUnitTests.java index 46a89396a0..9c73ff5135 100644 --- a/src/test/java/io/lettuce/core/resource/DefaultClientResourcesUnitTests.java +++ b/src/test/java/io/lettuce/core/resource/DefaultClientResourcesUnitTests.java @@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; +import io.netty.resolver.dns.DnsAddressResolverGroup; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -112,6 +113,15 @@ void testDnsResolver() { assertThat(sut.dnsResolver()).isEqualTo(dirContextDnsResolver); } + @Test + void testShouldUseDnsAddressResolverGroup() { + DefaultClientResources sut = DefaultClientResources.create(); + AddressResolverGroup> addressResolverGroup = sut.addressResolverGroup(); + + assertThat(addressResolverGroup).as("Default AddressResolverGroup should be DnsAddressResolverGroup") + .isInstanceOf(DnsAddressResolverGroup.class); + } + @Test void testProvidedResources() {