diff --git a/pom.xml b/pom.xml index 182132f7a0..c1cd2d98c8 100644 --- a/pom.xml +++ b/pom.xml @@ -256,7 +256,6 @@ io.netty netty-resolver-dns - true diff --git a/src/main/java/io/lettuce/core/resource/AddressResolverGroupProvider.java b/src/main/java/io/lettuce/core/resource/AddressResolverGroupProvider.java index effa2e5051..2aba88d2b4 100644 --- a/src/main/java/io/lettuce/core/resource/AddressResolverGroupProvider.java +++ b/src/main/java/io/lettuce/core/resource/AddressResolverGroupProvider.java @@ -1,6 +1,5 @@ package io.lettuce.core.resource; -import io.lettuce.core.internal.LettuceClassUtils; import io.netty.channel.socket.SocketChannel; import io.netty.resolver.AddressResolverGroup; import io.netty.resolver.DefaultAddressResolverGroup; @@ -8,37 +7,23 @@ import io.netty.resolver.dns.DefaultDnsCnameCache; import io.netty.resolver.dns.DnsAddressResolverGroup; import io.netty.resolver.dns.DnsNameResolverBuilder; -import io.netty.util.internal.logging.InternalLogger; -import io.netty.util.internal.logging.InternalLoggerFactory; /** * Wraps and provides {@link AddressResolverGroup} classes. This is to protect the user from {@link ClassNotFoundException}'s * caused by the absence of the {@literal netty-dns-resolver} library during runtime. This class will be deleted when * {@literal netty-dns-resolver} becomes mandatory. Internal API. + *

+ * 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() {