Skip to content

Commit beadf6a

Browse files
authored
Rename readonly config param to specify Redis Cluster (#3932)
* Rename readonly config param to specify Redis Cluster * clarify javadoc
1 parent 3b6b2b0 commit beadf6a

File tree

5 files changed

+26
-19
lines changed

5 files changed

+26
-19
lines changed

Diff for: src/main/java/redis/clients/jedis/Connection.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -467,8 +467,8 @@ private void initializeFromClientConfig(final JedisClientConfig config) {
467467
}
468468
}
469469

470-
// set readonly flag to ALL connections (including master nodes) when enable read from replica
471-
if (config.isReadOnlyForReplica()) {
470+
// set READONLY flag to ALL connections (including master nodes) when enable read from replica
471+
if (config.isReadOnlyForRedisClusterReplicas()) {
472472
fireAndForgetMsg.add(new CommandArguments(Command.READONLY));
473473
}
474474

Diff for: src/main/java/redis/clients/jedis/DefaultJedisClientConfig.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ public final class DefaultJedisClientConfig implements JedisClientConfig {
2626

2727
private final ClientSetInfoConfig clientSetInfoConfig;
2828

29-
private final boolean readOnlyForReplica;
29+
private final boolean readOnlyForRedisClusterReplicas;
3030

3131
private DefaultJedisClientConfig(RedisProtocol protocol, int connectionTimeoutMillis, int soTimeoutMillis,
3232
int blockingSocketTimeoutMillis, Supplier<RedisCredentials> credentialsProvider, int database,
3333
String clientName, boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
3434
HostnameVerifier hostnameVerifier, HostAndPortMapper hostAndPortMapper,
35-
ClientSetInfoConfig clientSetInfoConfig, boolean readOnlyForReplica) {
35+
ClientSetInfoConfig clientSetInfoConfig, boolean readOnlyForRedisClusterReplicas) {
3636
this.redisProtocol = protocol;
3737
this.connectionTimeoutMillis = connectionTimeoutMillis;
3838
this.socketTimeoutMillis = soTimeoutMillis;
@@ -46,7 +46,7 @@ private DefaultJedisClientConfig(RedisProtocol protocol, int connectionTimeoutMi
4646
this.hostnameVerifier = hostnameVerifier;
4747
this.hostAndPortMapper = hostAndPortMapper;
4848
this.clientSetInfoConfig = clientSetInfoConfig;
49-
this.readOnlyForReplica = readOnlyForReplica;
49+
this.readOnlyForRedisClusterReplicas = readOnlyForRedisClusterReplicas;
5050
}
5151

5252
@Override
@@ -126,8 +126,8 @@ public ClientSetInfoConfig getClientSetInfoConfig() {
126126
}
127127

128128
@Override
129-
public boolean isReadOnlyForReplica() {
130-
return readOnlyForReplica;
129+
public boolean isReadOnlyForRedisClusterReplicas() {
130+
return readOnlyForRedisClusterReplicas;
131131
}
132132

133133
public static Builder builder() {
@@ -157,7 +157,7 @@ public static class Builder {
157157

158158
private ClientSetInfoConfig clientSetInfoConfig = ClientSetInfoConfig.DEFAULT;
159159

160-
private boolean readOnlyForReplicas = false;
160+
private boolean readOnlyForRedisClusterReplicas = false;
161161

162162
private Builder() {
163163
}
@@ -171,7 +171,7 @@ public DefaultJedisClientConfig build() {
171171
return new DefaultJedisClientConfig(redisProtocol, connectionTimeoutMillis, socketTimeoutMillis,
172172
blockingSocketTimeoutMillis, credentialsProvider, database, clientName, ssl,
173173
sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMapper, clientSetInfoConfig,
174-
readOnlyForReplicas);
174+
readOnlyForRedisClusterReplicas);
175175
}
176176

177177
/**
@@ -267,8 +267,8 @@ public Builder clientSetInfoConfig(ClientSetInfoConfig setInfoConfig) {
267267
return this;
268268
}
269269

270-
public Builder readOnlyForReplicas() {
271-
this.readOnlyForReplicas = true;
270+
public Builder readOnlyForRedisClusterReplicas() {
271+
this.readOnlyForRedisClusterReplicas = true;
272272
return this;
273273
}
274274
}
@@ -290,6 +290,6 @@ public static DefaultJedisClientConfig copyConfig(JedisClientConfig copy) {
290290
copy.getBlockingSocketTimeoutMillis(), copy.getCredentialsProvider(),
291291
copy.getDatabase(), copy.getClientName(), copy.isSsl(), copy.getSslSocketFactory(),
292292
copy.getSslParameters(), copy.getHostnameVerifier(), copy.getHostAndPortMapper(),
293-
copy.getClientSetInfoConfig(), copy.isReadOnlyForReplica());
293+
copy.getClientSetInfoConfig(), copy.isReadOnlyForRedisClusterReplicas());
294294
}
295295
}

Diff for: src/main/java/redis/clients/jedis/JedisClientConfig.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ default String getClientName() {
5858
}
5959

6060
/**
61-
* @return <code>true</code> - to create a TLS connection. <code>false</code> - otherwise.
61+
* @return {@code true} - to create TLS connection(s). {@code false} - otherwise.
6262
*/
6363
default boolean isSsl() {
6464
return false;
@@ -80,7 +80,14 @@ default HostAndPortMapper getHostAndPortMapper() {
8080
return null;
8181
}
8282

83-
default boolean isReadOnlyForReplica() {
83+
/**
84+
* Execute READONLY command to connections.
85+
* <p>
86+
* READONLY command is specific to Redis Cluster replica nodes. So this config param is only
87+
* intended for Redis Cluster connections.
88+
* @return {@code true} - to execute READONLY command to connection(s). {@code false} - otherwise.
89+
*/
90+
default boolean isReadOnlyForRedisClusterReplicas() {
8491
return false;
8592
}
8693

Diff for: src/main/java/redis/clients/jedis/JedisClusterInfoCache.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public JedisClusterInfoCache(final JedisClientConfig clientConfig,
8686
topologyRefreshExecutor.scheduleWithFixedDelay(new TopologyRefreshTask(), topologyRefreshPeriod.toMillis(),
8787
topologyRefreshPeriod.toMillis(), TimeUnit.MILLISECONDS);
8888
}
89-
if (clientConfig.isReadOnlyForReplica()) {
89+
if (clientConfig.isReadOnlyForRedisClusterReplicas()) {
9090
replicaSlots = new ArrayList[Protocol.CLUSTER_HASHSLOTS];
9191
} else {
9292
replicaSlots = null;
@@ -150,7 +150,7 @@ public void discoverClusterNodesAndSlots(Connection jedis) {
150150
setupNodeIfNotExist(targetNode);
151151
if (i == MASTER_NODE_INDEX) {
152152
assignSlotsToNode(slotNums, targetNode);
153-
} else if (clientConfig.isReadOnlyForReplica()) {
153+
} else if (clientConfig.isReadOnlyForRedisClusterReplicas()) {
154154
assignSlotsToReplicaNode(slotNums, targetNode);
155155
}
156156
}
@@ -244,7 +244,7 @@ private void discoverClusterSlots(Connection jedis) {
244244
setupNodeIfNotExist(targetNode);
245245
if (i == MASTER_NODE_INDEX) {
246246
assignSlotsToNode(slotNums, targetNode);
247-
} else if (clientConfig.isReadOnlyForReplica()) {
247+
} else if (clientConfig.isReadOnlyForRedisClusterReplicas()) {
248248
assignSlotsToReplicaNode(slotNums, targetNode);
249249
}
250250
}

Diff for: src/test/java/redis/clients/jedis/JedisClusterTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,8 @@ public void testReadFromReplicas() throws Exception {
211211
}
212212
}
213213

214-
DefaultJedisClientConfig READ_REPLICAS_CLIENT_CONFIG
215-
= DefaultJedisClientConfig.builder().password("cluster").readOnlyForReplicas().build();
214+
DefaultJedisClientConfig READ_REPLICAS_CLIENT_CONFIG = DefaultJedisClientConfig.builder()
215+
.password("cluster").readOnlyForRedisClusterReplicas().build();
216216
ClusterCommandObjects commandObjects = new ClusterCommandObjects();
217217
try (JedisCluster jedisCluster = new JedisCluster(nodeInfo1, READ_REPLICAS_CLIENT_CONFIG,
218218
DEFAULT_REDIRECTIONS, DEFAULT_POOL_CONFIG)) {

0 commit comments

Comments
 (0)