Skip to content
Open
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
2 changes: 1 addition & 1 deletion src/main/java/io/lettuce/core/RedisClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,7 @@ protected <K, V> StatefulRedisConnectionImpl<K, V> newStatefulRedisConnection(Re
*
* @param redisURI must not be {@code null}.
* @return the resolved {@link SocketAddress}.
* @see ClientResources#dnsResolver()
* @see ClientResources#addressResolverGroup()
* @see RedisURI#getSentinels()
* @see RedisURI#getSentinelMasterId()
*/
Expand Down

This file was deleted.

23 changes: 1 addition & 22 deletions src/main/java/io/lettuce/core/resource/ClientResources.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
* @author Mikhael Sokolov
* @author Yohei Ueki
* @author Euiyoung Nam
* @author Hari Mani
* @since 3.4
* @see DefaultClientResources
*/
Expand Down Expand Up @@ -163,18 +164,6 @@ default Builder commandLatencyCollector(CommandLatencyCollector commandLatencyCo
*/
Builder computationThreadPoolSize(int computationThreadPoolSize);

/**
* Sets the {@link DnsResolver} that is used to resolve hostnames to {@link java.net.InetAddress}. Defaults to
* {@link DnsResolvers#UNRESOLVED} to use netty's {@link AddressResolverGroup}.
*
* @param dnsResolver the DNS resolver, must not be {@code null}.
* @return {@code this} {@link Builder}.
* @since 4.3
* @deprecated since 6.1. Configure {@link AddressResolverGroup} instead.
*/
@Deprecated
Builder dnsResolver(DnsResolver dnsResolver);

/**
* Sets the {@link EventBus} that can be used across different instances of the RedisClient.
*
Expand Down Expand Up @@ -357,16 +346,6 @@ default Builder commandLatencyCollector(CommandLatencyCollector commandLatencyCo
*/
int computationThreadPoolSize();

/**
* Return the {@link DnsResolver}.
*
* @return the DNS resolver.
* @since 4.3
* @deprecated since 6.6 replaced by{@link AddressResolverGroup} instead.
*/
@Deprecated
DnsResolver dnsResolver();

/**
* Return the event bus used to publish events.
*
Expand Down
61 changes: 15 additions & 46 deletions src/main/java/io/lettuce/core/resource/DefaultClientResources.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,12 @@
import io.lettuce.core.metrics.MetricCollector;
import io.lettuce.core.resource.Delay.StatefulDelay;
import io.lettuce.core.tracing.Tracing;
import io.netty.channel.socket.SocketChannel;
import io.netty.resolver.AddressResolverGroup;
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.HashedWheelTimer;
import io.netty.util.Timer;
import io.netty.util.concurrent.DefaultEventExecutorGroup;
Expand Down Expand Up @@ -80,6 +85,7 @@
* @author Mark Paluch
* @author Yohei Ueki
* @author Euiyoung Nam
* @author Hari Mani
* @since 3.4
*/
public class DefaultClientResources implements ClientResources {
Expand Down Expand Up @@ -113,8 +119,10 @@ public class DefaultClientResources implements ClientResources {
/**
* Default {@link AddressResolverGroup}.
*/
public static final AddressResolverGroup<?> DEFAULT_ADDRESS_RESOLVER_GROUP = AddressResolverGroupProvider
.addressResolverGroup();
public static final AddressResolverGroup<?> DEFAULT_ADDRESS_RESOLVER_GROUP = new DnsAddressResolverGroup(
new DnsNameResolverBuilder().datagramChannelType(Transports.datagramChannelClass())
.socketChannelType(Transports.socketChannelClass().asSubclass(SocketChannel.class))
.cnameCache(new DefaultDnsCnameCache()).resolveCache(new DefaultDnsCache()));

static {

Expand All @@ -136,8 +144,6 @@ public class DefaultClientResources implements ClientResources {

private final EventPublisherOptions commandLatencyPublisherOptions;

private final DnsResolver dnsResolver;

private final EventBus eventBus;

private final boolean sharedEventLoopGroupProvider;
Expand Down Expand Up @@ -250,14 +256,8 @@ protected DefaultClientResources(Builder builder) {
metricEventPublisher = null;
}

if (builder.dnsResolver == null) {
dnsResolver = DnsResolvers.UNRESOLVED;
} else {
dnsResolver = builder.dnsResolver;
}

if (builder.socketAddressResolver == null) {
socketAddressResolver = SocketAddressResolver.create(dnsResolver);
socketAddressResolver = SocketAddressResolver.create(DnsResolvers.UNRESOLVED);
} else {
socketAddressResolver = builder.socketAddressResolver;
}
Expand Down Expand Up @@ -304,8 +304,6 @@ public static class Builder implements ClientResources.Builder {

private int computationThreadPoolSize = DEFAULT_COMPUTATION_THREADS;

private DnsResolver dnsResolver = DnsResolvers.UNRESOLVED;

private EventBus eventBus;

private EventExecutorGroup eventExecutorGroup;
Expand Down Expand Up @@ -441,25 +439,6 @@ public Builder computationThreadPoolSize(int computationThreadPoolSize) {
return this;
}

/**
* Sets the {@link DnsResolver} that is used to resolve hostnames to {@link java.net.InetAddress}. Defaults to
* {@link DnsResolvers#UNRESOLVED}
*
* @param dnsResolver the DNS resolver, must not be {@code null}.
* @return {@code this} {@link Builder}.
* @since 4.3
* @deprecated since 6.1. Configure {@link AddressResolverGroup} instead.
*/
@Deprecated
@Override
public Builder dnsResolver(DnsResolver dnsResolver) {

LettuceAssert.notNull(dnsResolver, "DnsResolver must not be null");

this.dnsResolver = dnsResolver;
return this;
}

/**
* Sets the {@link EventBus} that can be used across different instances of the RedisClient.
*
Expand Down Expand Up @@ -606,10 +585,10 @@ public ClientResources.Builder socketAddressResolver(SocketAddressResolver socke
* @param threadFactoryProvider a provider to obtain a {@link java.util.concurrent.ThreadFactory} for a
* {@code poolName}, must not be {@code null}.
* @return {@code this} {@link ClientResources.Builder}.
* @since 6.1.1
* @see #eventExecutorGroup(EventExecutorGroup)
* @see #eventLoopGroupProvider(EventLoopGroupProvider)
* @see #timer(Timer)
* @since 6.1.1
*/
@Override
public ClientResources.Builder threadFactoryProvider(ThreadFactoryProvider threadFactoryProvider) {
Expand Down Expand Up @@ -679,13 +658,12 @@ public DefaultClientResources build() {
* <p>
* Note: The resulting {@link DefaultClientResources} retains shared state for {@link Timer},
* {@link CommandLatencyRecorder}, {@link EventExecutorGroup}, and {@link EventLoopGroupProvider} if these are left
* unchanged. Thus you need only to shut down the last created {@link ClientResources} instances. Shutdown affects any
* unchanged. Thus, you need only to shut down the last created {@link ClientResources} instances. Shutdown affects any
* previously created {@link ClientResources}.
* </p>
*
* @return a {@link DefaultClientResources.Builder} to create new {@link DefaultClientResources} whose settings are
* replicated from the current {@link DefaultClientResources}.
*
* @since 5.1
*/
@Override
Expand All @@ -694,8 +672,8 @@ public DefaultClientResources.Builder mutate() {
Builder builder = new Builder();

builder.afterBuild(() -> this.shutdownCheck = false).commandLatencyRecorder(commandLatencyRecorder())
.commandLatencyPublisherOptions(commandLatencyPublisherOptions()).dnsResolver(dnsResolver())
.eventBus(eventBus()).eventExecutorGroup(eventExecutorGroup()).reconnectDelay(reconnectDelay)
.commandLatencyPublisherOptions(commandLatencyPublisherOptions()).eventBus(eventBus())
.eventExecutorGroup(eventExecutorGroup()).reconnectDelay(reconnectDelay)
.socketAddressResolver(socketAddressResolver()).nettyCustomizer(nettyCustomizer())
.threadFactoryProvider(threadFactoryProvider).timer(timer()).tracing(tracing())
.addressResolverGroup(addressResolverGroup());
Expand Down Expand Up @@ -787,15 +765,6 @@ 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;
}

@Override
public EventBus eventBus() {
return eventBus;
Expand Down
11 changes: 0 additions & 11 deletions src/main/java/io/lettuce/core/resource/DnsResolver.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

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.
Expand All @@ -13,16 +12,6 @@
*/
public interface DnsResolver {

/**
* Java VM default resolver.
*
* @deprecated since 6.7, see {@link AddressResolverGroup}
* @since 5.1
*/
static DnsResolver jvmDefault() {
return DnsResolvers.JVM_DEFAULT;
}

/**
* Non-resolving {@link DnsResolver}. Returns an empty {@link InetAddress} to indicate an unresolved address.
*
Expand Down
16 changes: 0 additions & 16 deletions src/main/java/io/lettuce/core/resource/DnsResolvers.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package io.lettuce.core.resource;

import io.netty.resolver.AddressResolverGroup;

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

Expand All @@ -13,20 +11,6 @@
*/
public enum DnsResolvers implements DnsResolver {

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

@Override
public InetAddress[] resolve(String host) throws UnknownHostException {
return InetAddress.getAllByName(host);
}

},

/**
* Non-resolving {@link DnsResolver}. Returns an empty {@link InetAddress} to indicate an unresolved address.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,30 +47,31 @@
*
* @author Mark Paluch
* @author Christian Lang
* @author Hari Mani
*/
@Tag(UNIT_TEST)
@ExtendWith(MockitoExtension.class)
class RoundRobinSocketAddressSupplierUnitTests {

private static RedisURI hap1 = new RedisURI("127.0.0.1", 1, Duration.ofSeconds(1));
private static final RedisURI hap1 = new RedisURI("127.0.0.1", 1, Duration.ofSeconds(1));

private static RedisURI hap2 = new RedisURI("127.0.0.1", 2, Duration.ofSeconds(1));
private static final RedisURI hap2 = new RedisURI("127.0.0.1", 2, Duration.ofSeconds(1));

private static RedisURI hap3 = new RedisURI("127.0.0.1", 3, Duration.ofSeconds(1));
private static final RedisURI hap3 = new RedisURI("127.0.0.1", 3, Duration.ofSeconds(1));

private static RedisURI hap4 = new RedisURI("127.0.0.1", 4, Duration.ofSeconds(1));
private static final RedisURI hap4 = new RedisURI("127.0.0.1", 4, Duration.ofSeconds(1));

private static RedisURI hap5 = new RedisURI("127.0.0.0", 5, Duration.ofSeconds(1));
private static final RedisURI hap5 = new RedisURI("127.0.0.0", 5, Duration.ofSeconds(1));

private static InetSocketAddress addr1 = new InetSocketAddress(hap1.getHost(), hap1.getPort());
private static final InetSocketAddress addr1 = InetSocketAddress.createUnresolved(hap1.getHost(), hap1.getPort());

private static InetSocketAddress addr2 = new InetSocketAddress(hap2.getHost(), hap2.getPort());
private static final InetSocketAddress addr2 = InetSocketAddress.createUnresolved(hap2.getHost(), hap2.getPort());

private static InetSocketAddress addr3 = new InetSocketAddress(hap3.getHost(), hap3.getPort());
private static final InetSocketAddress addr3 = InetSocketAddress.createUnresolved(hap3.getHost(), hap3.getPort());

private static InetSocketAddress addr4 = new InetSocketAddress(hap4.getHost(), hap4.getPort());
private static final InetSocketAddress addr4 = InetSocketAddress.createUnresolved(hap4.getHost(), hap4.getPort());

private static InetSocketAddress addr5 = new InetSocketAddress(hap5.getHost(), hap5.getPort());
private static final InetSocketAddress addr5 = InetSocketAddress.createUnresolved(hap5.getHost(), hap5.getPort());

private static Partitions partitions;

Expand All @@ -80,7 +81,7 @@ class RoundRobinSocketAddressSupplierUnitTests {
@BeforeEach
void before() {

when(clientResourcesMock.socketAddressResolver()).thenReturn(SocketAddressResolver.create(DnsResolvers.JVM_DEFAULT));
when(clientResourcesMock.socketAddressResolver()).thenReturn(SocketAddressResolver.create(DnsResolvers.UNRESOLVED));

partitions = new Partitions();
partitions.addPartition(new RedisClusterNode(hap1, "1", true, "", 0, 0, 0, new ArrayList<>(), new HashSet<>()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import javax.inject.Inject;

import io.lettuce.core.*;
import io.lettuce.core.resource.DnsResolvers;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
Expand Down Expand Up @@ -50,7 +51,7 @@ class MasterReplicaSentinelSslIntegrationTests extends TestSupport {
MasterReplicaSentinelSslIntegrationTests(ClientResources clientResources) {

this.clientResources = clientResources.mutate()
.socketAddressResolver(MappingSocketAddressResolver.create(DnsResolver.jvmDefault(), hostAndPort -> {
.socketAddressResolver(MappingSocketAddressResolver.create(DnsResolvers.UNRESOLVED, hostAndPort -> {
int port = hostAndPort.getPort();
if (portMap.containsKey(port)) {
return HostAndPort.of(hostAndPort.getHostText(), portMap.get(port));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,16 +103,6 @@ void testBuilder() throws Exception {
assertThat(sut.shutdown(0, 0, TimeUnit.MILLISECONDS).get()).isTrue();
}

@Test
void testDnsResolver() {

DirContextDnsResolver dirContextDnsResolver = new DirContextDnsResolver("8.8.8.8");

DefaultClientResources sut = DefaultClientResources.builder().dnsResolver(dirContextDnsResolver).build();

assertThat(sut.dnsResolver()).isEqualTo(dirContextDnsResolver);
}

@Test
void testShouldUseDnsAddressResolverGroup() {
DefaultClientResources sut = DefaultClientResources.create();
Expand Down
Loading