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))); + } }