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 2e4f80c72..4f61967e0 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 @@ -38,6 +38,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; import java.util.stream.Collectors; import org.apache.commons.logging.Log; @@ -1077,18 +1078,28 @@ public class LettuceConnectionFactory RedisURI redisUri = LettuceConverters.sentinelConfigurationToRedisURI( (org.springframework.data.redis.connection.RedisSentinelConfiguration) configuration); - getRedisPassword().toOptional().ifPresent(redisUri::setPassword); - clientConfiguration.getClientName().ifPresent(redisUri::setClientName); + applyToAll(redisUri, it -> { + + getRedisPassword().toOptional().ifPresent(redisUri::setPassword); + clientConfiguration.getClientName().ifPresent(it::setClientName); + + it.setSsl(clientConfiguration.isUseSsl()); + it.setVerifyPeer(clientConfiguration.isVerifyPeer()); + it.setStartTls(clientConfiguration.isStartTls()); + it.setTimeout(clientConfiguration.getCommandTimeout()); + }); - redisUri.setSsl(clientConfiguration.isUseSsl()); - redisUri.setVerifyPeer(clientConfiguration.isVerifyPeer()); - redisUri.setStartTls(clientConfiguration.isStartTls()); - redisUri.setTimeout(clientConfiguration.getCommandTimeout()); redisUri.setDatabase(getDatabase()); return redisUri; } + private static void applyToAll(RedisURI source, Consumer action) { + + action.accept(source); + source.getSentinels().forEach(action); + } + private RedisURI createRedisURIAndApplySettings(String host, int port) { RedisURI.Builder builder = RedisURI.Builder.redis(host, port); 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 12e9670de..15fe5a61e 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 @@ -179,7 +179,7 @@ public class LettuceConnectionFactoryUnitTests { } } - @Test // DATAREDIS-524 + @Test // DATAREDIS-524, DATAREDIS-1045 public void passwordShouldBeSetCorrectlyOnSentinelClient() { LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory( @@ -195,6 +195,11 @@ public class LettuceConnectionFactoryUnitTests { RedisURI redisUri = (RedisURI) getField(client, "redisURI"); assertThat(redisUri.getPassword()).isEqualTo(connectionFactory.getPassword().toCharArray()); + + for (RedisURI sentinel : redisUri.getSentinels()) { + assertThat(sentinel.getPassword()) + .isEqualTo(connectionFactory.getPassword().toCharArray()); + } } @Test // DATAREDIS-462