Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,6 @@
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-resolver-dns</artifactId>
<optional>true</optional>
</dependency>

<dependency>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,44 +1,29 @@
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;
import io.netty.resolver.dns.DefaultDnsCache;
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.
* <p>
* 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.
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/io/lettuce/core/resource/ClientResources.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
* @author Mark Paluch
* @author Mikhael Sokolov
* @author Yohei Ueki
* @author Euiyoung Nam
* @since 3.4
* @see DefaultClientResources
*/
Expand Down Expand Up @@ -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();

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
*
* @author Mark Paluch
* @author Yohei Ueki
* @author Euiyoung Nam
* @since 3.4
*/
public class DefaultClientResources implements ClientResources {
Expand Down Expand Up @@ -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;
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/io/lettuce/core/resource/DnsResolver.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,21 @@

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 {

/**
* Java VM default resolver.
*
* @deprecated since 6.7, see {@link AddressResolverGroup}
* @since 5.1
*/
static DnsResolver jvmDefault() {
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/io/lettuce/core/resource/DnsResolvers.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.lettuce.core.resource;

import io.netty.resolver.AddressResolverGroup;

import java.net.InetAddress;
import java.net.UnknownHostException;

Expand All @@ -13,6 +15,8 @@ public enum DnsResolvers implements DnsResolver {

/**
* Java VM default resolver.
*
* @deprecated since 6.7. Configure {@link AddressResolverGroup} instead.
*/
JVM_DEFAULT {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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() {

Expand Down