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:
Mark Paluch
2019-10-29 16:36:38 +01:00
committed by Christoph Strobl
parent 3dfe7af60e
commit 049f4d78ab
2 changed files with 23 additions and 7 deletions

View File

@@ -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);