diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.java index ddd826acd..d65f8ca09 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.java @@ -75,6 +75,7 @@ import org.springframework.util.CollectionUtils; * @author Christoph Strobl * @author Mark Paluch * @author Fu Jian + * @author Ajith Kumar * @see JedisClientConfiguration * @see Jedis */ @@ -855,10 +856,14 @@ public class JedisConnectionFactory implements InitializingBean, DisposableBean, Jedis jedis = new Jedis(node.getHost(), node.getPort(), getConnectTimeout(), getReadTimeout()); - if (jedis.ping().equalsIgnoreCase("pong")) { + try { + if (jedis.ping().equalsIgnoreCase("pong")) { - potentiallySetClientName(jedis); - return jedis; + potentiallySetClientName(jedis); + return jedis; + } + } catch (Exception ex) { + log.warn(String.format("Ping failed for sentinel host:%s", node.getHost()), ex); } } diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactorySentinelIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactorySentinelIntegrationTests.java index 48c020fdc..612d0af2e 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactorySentinelIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactorySentinelIntegrationTests.java @@ -31,6 +31,7 @@ import org.springframework.data.redis.test.util.RedisSentinelRule; * @author Christoph Strobl * @author Fu Jian * @author Mark Paluch + * @author Ajith Kumar */ public class JedisConnectionFactorySentinelIntegrationTests { @@ -82,4 +83,14 @@ public class JedisConnectionFactorySentinelIntegrationTests { assertThat(factory.getConnection().getClientName()).isEqualTo("clientName"); } + + @Test + public void shouldNotFailOnFirstSentinelDown() { + + final RedisSentinelConfiguration multiSentinelConfig = new RedisSentinelConfiguration() + .master("mymaster").sentinel("any.unavailable.host",26379).sentinel("127.0.0.1", 26379); + + factory = new JedisConnectionFactory(multiSentinelConfig); + assertThat(factory.getSentinelConnection().isOpen()).isTrue(); + } }