DATAREDIS-1127 - Handling ping failures for getSentinelConnection method.

Original Pull Request: #524
This commit is contained in:
Ajith Kumar
2020-04-20 20:30:53 +05:30
committed by Christoph Strobl
parent 7c0d4f142a
commit 9afccaffcd
2 changed files with 19 additions and 3 deletions

View File

@@ -76,6 +76,7 @@ import org.springframework.util.StringUtils;
* @author Christoph Strobl
* @author Mark Paluch
* @author Fu Jian
* @author Ajith Kumar
* @see JedisClientConfiguration
* @see Jedis
*/
@@ -844,10 +845,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);
}
}

View File

@@ -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(), equalTo("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(), is(true));
}
}