DATAREDIS-1045 - Apply password to all Sentinel endpoints.
We now apply the password to all Sentinel endpoints described through RedisURI. We also apply all remaining settings to all Sentinel endpoints to ensure configuration propagation. Original Pull Request: #490
This commit is contained in:
committed by
Christoph Strobl
parent
e41029809a
commit
3a2cf0d3bc
@@ -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<RedisURI> action) {
|
||||
|
||||
action.accept(source);
|
||||
source.getSentinels().forEach(action);
|
||||
}
|
||||
|
||||
private RedisURI createRedisURIAndApplySettings(String host, int port) {
|
||||
|
||||
RedisURI.Builder builder = RedisURI.Builder.redis(host, port);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user