Skip to content

Commit 0fa8151

Browse files
committed
Add an option to ignore cluster init error (#3455)
1 parent ec91bfa commit 0fa8151

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

src/main/java/redis/clients/jedis/providers/ClusterConnectionProvider.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
public class ClusterConnectionProvider implements ConnectionProvider {
2121

22+
private static final String INIT_NO_ERROR_PROPERTY = "jedis.cluster.initNoError";
23+
2224
protected final JedisClusterInfoCache cache;
2325

2426
public ClusterConnectionProvider(Set<HostAndPort> clusterNodes, JedisClientConfig clientConfig) {
@@ -53,6 +55,9 @@ private void initializeSlotsCache(Set<HostAndPort> startNodes, JedisClientConfig
5355
}
5456
}
5557

58+
if (System.getProperty(INIT_NO_ERROR_PROPERTY) != null) {
59+
return;
60+
}
5661
JedisClusterOperationException uninitializedException
5762
= new JedisClusterOperationException("Could not initialize cluster slots cache.");
5863
uninitializedException.addSuppressed(firstException);
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package redis.clients.jedis.misc;
2+
3+
import java.util.Collections;
4+
import org.junit.After;
5+
import org.junit.Assert;
6+
import org.junit.Test;
7+
import redis.clients.jedis.DefaultJedisClientConfig;
8+
import redis.clients.jedis.HostAndPorts;
9+
import redis.clients.jedis.JedisCluster;
10+
import redis.clients.jedis.exceptions.JedisClusterOperationException;
11+
12+
public class ClusterInitErrorTest {
13+
14+
private static final String INIT_NO_ERROR_PROPERTY = "jedis.cluster.initNoError";
15+
16+
@After
17+
public void cleanUp() {
18+
System.getProperties().remove(INIT_NO_ERROR_PROPERTY);
19+
}
20+
21+
@Test(expected = JedisClusterOperationException.class)
22+
public void initError() {
23+
Assert.assertNull(System.getProperty(INIT_NO_ERROR_PROPERTY));
24+
try (JedisCluster cluster = new JedisCluster(
25+
Collections.singleton(HostAndPorts.getRedisServers().get(0)),
26+
DefaultJedisClientConfig.builder().password("foobared").build())) {
27+
throw new IllegalStateException("should not reach here");
28+
}
29+
}
30+
31+
@Test
32+
public void initNoError() {
33+
System.setProperty(INIT_NO_ERROR_PROPERTY, "");
34+
try (JedisCluster cluster = new JedisCluster(
35+
Collections.singleton(HostAndPorts.getRedisServers().get(0)),
36+
DefaultJedisClientConfig.builder().password("foobared").build())) {
37+
Assert.assertThrows(JedisClusterOperationException.class, () -> cluster.get("foo"));
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)