DATAREDIS-1145 - Support Sentinel password for Jedis.

We now support password-protected Sentinel configurations when using Jedis.

Original Pull Request: #558
This commit is contained in:
Mark Paluch
2020-09-01 15:33:22 +02:00
committed by Christoph Strobl
parent d97c5df130
commit 717a196da0
6 changed files with 86 additions and 9 deletions

View File

@@ -371,10 +371,12 @@ public class JedisConnectionFactory implements InitializingBean, DisposableBean,
protected Pool<Jedis> createRedisSentinelPool(RedisSentinelConfiguration config) {
GenericObjectPoolConfig<?> poolConfig = getPoolConfig() != null ? getPoolConfig() : new JedisPoolConfig();
String sentinelUser = null;
String sentinelPassword = config.getSentinelPassword().toOptional().map(String::new).orElse(null);
return new JedisSentinelPool(config.getMaster().getName(), convertToJedisSentinelSet(config.getSentinels()),
poolConfig, getConnectTimeout(), getReadTimeout(), getUsername(), getPassword(), getDatabase(),
getClientName());
getClientName(), getConnectTimeout(), getReadTimeout(), sentinelUser, sentinelPassword, getClientName());
}
/**
@@ -868,10 +870,12 @@ public class JedisConnectionFactory implements InitializingBean, DisposableBean,
private Jedis getActiveSentinel() {
Assert.isTrue(RedisConfiguration.isSentinelConfiguration(configuration), "SentinelConfig must not be null!");
SentinelConfiguration sentinelConfiguration = (SentinelConfiguration) configuration;
for (RedisNode node : ((SentinelConfiguration) configuration).getSentinels()) {
for (RedisNode node : sentinelConfiguration.getSentinels()) {
Jedis jedis = new Jedis(node.getHost(), node.getPort(), getConnectTimeout(), getReadTimeout());
sentinelConfiguration.getSentinelPassword().toOptional().map(String::new).ifPresent(jedis::auth);
try {
if (jedis.ping().equalsIgnoreCase("pong")) {