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 066260870..5395af11f 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 @@ -981,6 +981,7 @@ public class LettuceConnectionFactory getRedisPassword().toOptional().ifPresent(redisUri::setPassword); clientConfiguration.getClientName().ifPresent(redisUri::setClientName); 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 7f218d050..41eef0b33 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 @@ -609,4 +609,23 @@ public class LettuceConnectionFactoryUnitTests { verify(clientMock).connect(ArgumentMatchers.any(RedisCodec.class)); } + + @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))); + } }