From 0b53b8b53a1eee586ebbee0cc9cadedb1eb098c8 Mon Sep 17 00:00:00 2001 From: Ruben Cervilla Date: Wed, 6 Jun 2018 11:06:18 +0200 Subject: [PATCH] DATAREDIS-842 - Consider database index when connecting to Redis using Redis Sentinel. Original pull request: #345. --- .../lettuce/LettuceConnectionFactory.java | 1 + .../LettuceConnectionFactoryUnitTests.java | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java index 0bf529202..b35efd926 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java @@ -861,6 +861,7 @@ public class LettuceConnectionFactory getRedisPassword().toOptional().ifPresent(redisUri::setPassword); redisUri.setTimeout(clientConfiguration.getCommandTimeout()); + redisUri.setDatabase(getDatabase()); return redisUri; } diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java index fcd257c26..ae2b2e685 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java @@ -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))); + } }