From e61beb441f4c4edef3dc9bb13bae8c3cc991d8d1 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 | 19 +++++++++++++++++++ 2 files changed, 20 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 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))); + } }