DATAREDIS-842 - Consider database index when connecting to Redis using Redis Sentinel.

Original pull request: #345.
This commit is contained in:
Ruben Cervilla
2018-06-06 11:06:18 +02:00
committed by Mark Paluch
parent 10cfc5bf48
commit 0b53b8b53a
2 changed files with 25 additions and 0 deletions

View File

@@ -861,6 +861,7 @@ public class LettuceConnectionFactory
getRedisPassword().toOptional().ifPresent(redisUri::setPassword);
redisUri.setTimeout(clientConfiguration.getCommandTimeout());
redisUri.setDatabase(getDatabase());
return redisUri;
}

View File

@@ -29,6 +29,9 @@ import io.lettuce.core.ClientOptions;
import io.lettuce.core.RedisClient;
import io.lettuce.core.RedisURI;
import io.lettuce.core.cluster.RedisClusterClient;
import io.lettuce.core.cluster.api.StatefulRedisClusterConnection;
import io.lettuce.core.codec.ByteArrayCodec;
import io.lettuce.core.codec.RedisCodec;
import io.lettuce.core.resource.ClientResources;
import java.security.NoSuchAlgorithmException;
@@ -38,6 +41,8 @@ import java.util.Collections;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentMatchers;
import org.springframework.beans.DirectFieldAccessor;
import org.springframework.data.redis.ConnectionFactoryTracker;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisClusterConnection;
@@ -518,4 +523,23 @@ public class LettuceConnectionFactoryUnitTests {
clusterConnection.close();
}
@Test // DATAREDIS-842
public void databaseShouldBeSetCorrectlyOnSentinelClient() {
RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration("mymaster", Collections.singleton("host:1234"));
redisSentinelConfiguration.setDatabase(1);
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(redisSentinelConfiguration);
connectionFactory.setClientResources(getSharedClientResources());
connectionFactory.setPassword("o_O");
connectionFactory.afterPropertiesSet();
ConnectionFactoryTracker.add(connectionFactory);
AbstractRedisClient client = (AbstractRedisClient) getField(connectionFactory, "client");
assertThat(client, instanceOf(RedisClient.class));
RedisURI redisUri = (RedisURI) getField(client, "redisURI");
assertThat(redisUri.getDatabase(), is(equalTo(1)));
}
}