Skip to content

Commit bc3b66f

Browse files
authored
Modify config pattern (#2402)
1. Added the word `millis` to the timeout parameters. I have seen people are confused about the unit of timeout parameters in almost everywhere (stackoverflow, github issues, mailing list). Adding the unit in config param name would be self explanatory. 2. After upgrading to JDK 1.8, it is now possible to use `default` which would allow users to code less. --- * Modify config pattern * further rename params, variables
1 parent 3cc2274 commit bc3b66f

12 files changed

+168
-70
lines changed

src/main/java/redis/clients/jedis/BinaryJedis.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -150,27 +150,27 @@ public BinaryJedis(final String host, final int port, final int timeout, final b
150150
public BinaryJedis(final String host, final int port, final int connectionTimeout,
151151
final int soTimeout) {
152152
this(host, port, DefaultJedisClientConfig.builder()
153-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).build());
153+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout).build());
154154
}
155155

156156
public BinaryJedis(final String host, final int port, final int connectionTimeout,
157157
final int soTimeout, final int infiniteSoTimeout) {
158158
this(host, port, DefaultJedisClientConfig.builder()
159-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout)
160-
.withInfiniteSoTimeout(infiniteSoTimeout).build());
159+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout)
160+
.withInfiniteSoTimeoutMillis(infiniteSoTimeout).build());
161161
}
162162

163163
public BinaryJedis(final String host, final int port, final int connectionTimeout,
164164
final int soTimeout, final boolean ssl) {
165165
this(host, port, DefaultJedisClientConfig.builder()
166-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).withSsl(ssl).build());
166+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout).withSsl(ssl).build());
167167
}
168168

169169
public BinaryJedis(final String host, final int port, final int connectionTimeout,
170170
final int soTimeout, final boolean ssl, final SSLSocketFactory sslSocketFactory,
171171
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
172172
this(host, port, DefaultJedisClientConfig.builder()
173-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).withSsl(ssl)
173+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout).withSsl(ssl)
174174
.withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
175175
.withHostnameVerifier(hostnameVerifier).build());
176176
}
@@ -180,15 +180,15 @@ public BinaryJedis(final String host, final int port, final int connectionTimeou
180180
final SSLSocketFactory sslSocketFactory, final SSLParameters sslParameters,
181181
final HostnameVerifier hostnameVerifier) {
182182
this(host, port, DefaultJedisClientConfig.builder()
183-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout)
184-
.withInfiniteSoTimeout(infiniteSoTimeout).withSsl(ssl)
183+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout)
184+
.withInfiniteSoTimeoutMillis(infiniteSoTimeout).withSsl(ssl)
185185
.withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
186186
.withHostnameVerifier(hostnameVerifier).build());
187187
}
188188

189189
public BinaryJedis(final JedisShardInfo shardInfo) {
190190
this(shardInfo.getHost(), shardInfo.getPort(), DefaultJedisClientConfig.builder()
191-
.withConnectionTimeout(shardInfo.getConnectionTimeout()).withSoTimeout(shardInfo.getSoTimeout())
191+
.withConnectionTimeoutMillis(shardInfo.getConnectionTimeout()).withSoTimeoutMillis(shardInfo.getSoTimeout())
192192
.withUser(shardInfo.getUser()).withPassword(shardInfo.getPassword()).withDatabse(shardInfo.getDb())
193193
.withSsl(shardInfo.getSsl()).withSslSocketFactory(shardInfo.getSslSocketFactory())
194194
.withSslParameters(shardInfo.getSslParameters()).withHostnameVerifier(shardInfo.getHostnameVerifier()).build());
@@ -217,14 +217,14 @@ public BinaryJedis(final URI uri, final int timeout, final SSLSocketFactory sslS
217217

218218
public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeout) {
219219
this(uri, DefaultJedisClientConfig.builder()
220-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).build());
220+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout).build());
221221
}
222222

223223
public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeout,
224224
final SSLSocketFactory sslSocketFactory,final SSLParameters sslParameters,
225225
final HostnameVerifier hostnameVerifier) {
226226
this(uri, DefaultJedisClientConfig.builder()
227-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout)
227+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout)
228228
.withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
229229
.withHostnameVerifier(hostnameVerifier).build());
230230
}
@@ -233,8 +233,8 @@ public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeo
233233
final int infiniteSoTimeout, final SSLSocketFactory sslSocketFactory,
234234
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
235235
this(uri, DefaultJedisClientConfig.builder()
236-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout)
237-
.withInfiniteSoTimeout(infiniteSoTimeout).withSslSocketFactory(sslSocketFactory)
236+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout)
237+
.withInfiniteSoTimeoutMillis(infiniteSoTimeout).withSslSocketFactory(sslSocketFactory)
238238
.withSslParameters(sslParameters).withHostnameVerifier(hostnameVerifier).build());
239239
}
240240

@@ -243,8 +243,8 @@ public BinaryJedis(final URI uri, JedisClientConfig config) {
243243
throw new InvalidURIException(String.format("Cannot open Redis connection due invalid URI \"%s\".", uri.toString()));
244244
}
245245
client = new Client(new HostAndPort(uri.getHost(), uri.getPort()),
246-
DefaultJedisClientConfig.builder().withConnectionTimeout(config.getConnectionTimeout())
247-
.withSoTimeout(config.getSoTimeout()).withInfiniteSoTimeout(config.getInfiniteSoTimeout())
246+
DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(config.getConnectionTimeoutMillis())
247+
.withSoTimeoutMillis(config.getSoTimeoutMillis()).withInfiniteSoTimeoutMillis(config.getInfiniteSoTimeoutMillis())
248248
.withUser(JedisURIHelper.getUser(uri)).withPassword(JedisURIHelper.getPassword(uri))
249249
.withDatabse(JedisURIHelper.getDBIndex(uri)).withClientName(config.getClientName())
250250
.withSsl(JedisURIHelper.isRedisSSLScheme(uri))

src/main/java/redis/clients/jedis/Connection.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class Connection implements Closeable {
2424
private static final byte[][] EMPTY_ARGS = new byte[0][];
2525

2626
private boolean socketParamModified = false; // for backward compatibility
27-
private JedisSocketFactory socketFactory; // TODO: sould be final
27+
private JedisSocketFactory socketFactory; // TODO: should be final
2828
private Socket socket;
2929
private RedisOutputStream outputStream;
3030
private RedisInputStream inputStream;
@@ -72,8 +72,8 @@ public Connection(final String host, final int port, final boolean ssl,
7272

7373
public Connection(final HostAndPort hostAndPort, final JedisClientConfig clientConfig) {
7474
this(new DefaultJedisSocketFactory(hostAndPort, clientConfig));
75-
this.soTimeout = clientConfig.getSoTimeout();
76-
this.infiniteSoTimeout = clientConfig.getInfiniteSoTimeout();
75+
this.soTimeout = clientConfig.getSoTimeoutMillis();
76+
this.infiniteSoTimeout = clientConfig.getInfiniteSoTimeoutMillis();
7777
}
7878

7979
public Connection(final JedisSocketFactory jedisSocketFactory) {

src/main/java/redis/clients/jedis/DefaultJedisClientConfig.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
public final class DefaultJedisClientConfig implements JedisClientConfig {
88

9-
private final int connectionTimeout;
10-
private final int soTimeout;
11-
private final int infiniteSoTimeout;
9+
private final int connectionTimeoutMillis;
10+
private final int soTimeoutMillis;
11+
private final int infiniteSoTimeoutMillis;
1212

1313
private final String user;
1414
private final String password;
@@ -22,13 +22,13 @@ public final class DefaultJedisClientConfig implements JedisClientConfig {
2222

2323
private final HostAndPortMapper hostAndPortMapper;
2424

25-
private DefaultJedisClientConfig(int connectionTimeout, int soTimeout, int infiniteSoTimeout,
26-
String user, String password, int database, String clientName,
25+
private DefaultJedisClientConfig(int connectionTimeoutMillis, int soTimeoutMillis,
26+
int infiniteSoTimeoutMillis, String user, String password, int database, String clientName,
2727
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
2828
HostnameVerifier hostnameVerifier, HostAndPortMapper hostAndPortMapper) {
29-
this.connectionTimeout = connectionTimeout;
30-
this.soTimeout = soTimeout;
31-
this.infiniteSoTimeout = infiniteSoTimeout;
29+
this.connectionTimeoutMillis = connectionTimeoutMillis;
30+
this.soTimeoutMillis = soTimeoutMillis;
31+
this.infiniteSoTimeoutMillis = infiniteSoTimeoutMillis;
3232
this.user = user;
3333
this.password = password;
3434
this.database = database;
@@ -41,18 +41,18 @@ private DefaultJedisClientConfig(int connectionTimeout, int soTimeout, int infin
4141
}
4242

4343
@Override
44-
public int getConnectionTimeout() {
45-
return connectionTimeout;
44+
public int getConnectionTimeoutMillis() {
45+
return connectionTimeoutMillis;
4646
}
4747

4848
@Override
49-
public int getSoTimeout() {
50-
return soTimeout;
49+
public int getSoTimeoutMillis() {
50+
return soTimeoutMillis;
5151
}
5252

5353
@Override
54-
public int getInfiniteSoTimeout() {
55-
return infiniteSoTimeout;
54+
public int getInfiniteSoTimeoutMillis() {
55+
return infiniteSoTimeoutMillis;
5656
}
5757

5858
@Override
@@ -106,9 +106,9 @@ public static Builder builder() {
106106

107107
public static class Builder {
108108

109-
private int connectionTimeout = Protocol.DEFAULT_TIMEOUT;
110-
private int soTimeout = Protocol.DEFAULT_TIMEOUT;
111-
private int infiniteSoTimeout = 0;
109+
private int connectionTimeoutMillis = Protocol.DEFAULT_TIMEOUT;
110+
private int soTimeoutMillis = Protocol.DEFAULT_TIMEOUT;
111+
private int infiniteSoTimeoutMillis = 0;
112112

113113
private String user = null;
114114
private String password = null;
@@ -126,23 +126,23 @@ private Builder() {
126126
}
127127

128128
public DefaultJedisClientConfig build() {
129-
return new DefaultJedisClientConfig(connectionTimeout, soTimeout, infiniteSoTimeout,
130-
user, password, databse, clientName,
129+
return new DefaultJedisClientConfig(connectionTimeoutMillis, soTimeoutMillis,
130+
infiniteSoTimeoutMillis, user, password, databse, clientName,
131131
ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMapper);
132132
}
133133

134-
public Builder withConnectionTimeout(int connectionTimeout) {
135-
this.connectionTimeout = connectionTimeout;
134+
public Builder withConnectionTimeoutMillis(int connectionTimeoutMillis) {
135+
this.connectionTimeoutMillis = connectionTimeoutMillis;
136136
return this;
137137
}
138138

139-
public Builder withSoTimeout(int soTimeout) {
140-
this.soTimeout = soTimeout;
139+
public Builder withSoTimeoutMillis(int soTimeoutMillis) {
140+
this.soTimeoutMillis = soTimeoutMillis;
141141
return this;
142142
}
143143

144-
public Builder withInfiniteSoTimeout(int infiniteSoTimeout) {
145-
this.infiniteSoTimeout = infiniteSoTimeout;
144+
public Builder withInfiniteSoTimeoutMillis(int infiniteSoTimeoutMillis) {
145+
this.infiniteSoTimeoutMillis = infiniteSoTimeoutMillis;
146146
return this;
147147
}
148148

@@ -193,8 +193,8 @@ public Builder withHostAndPortMapper(HostAndPortMapper hostAndPortMapper) {
193193
}
194194

195195
public static DefaultJedisClientConfig copyConfig(JedisClientConfig copy) {
196-
return new DefaultJedisClientConfig(copy.getConnectionTimeout(), copy.getSoTimeout(),
197-
copy.getInfiniteSoTimeout(), copy.getUser(), copy.getPassword(), copy.getDatabase(),
196+
return new DefaultJedisClientConfig(copy.getConnectionTimeoutMillis(), copy.getSoTimeoutMillis(),
197+
copy.getInfiniteSoTimeoutMillis(), copy.getUser(), copy.getPassword(), copy.getDatabase(),
198198
copy.getClientName(), copy.isSsl(), copy.getSslSocketFactory(), copy.getSslParameters(),
199199
copy.getHostnameVerifier(), copy.getHostAndPortMapper());
200200
}

src/main/java/redis/clients/jedis/DefaultJedisSocketFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ public DefaultJedisSocketFactory(String host, int port, int connectionTimeout, i
4747
public DefaultJedisSocketFactory(HostAndPort hostAndPort, JedisClientConfig config) {
4848
this.hostAndPort = hostAndPort;
4949
if (config != null) {
50-
this.connectionTimeout = config.getConnectionTimeout();
51-
this.soTimeout = config.getSoTimeout();
50+
this.connectionTimeout = config.getConnectionTimeoutMillis();
51+
this.soTimeout = config.getSoTimeoutMillis();
5252
this.ssl = config.isSsl();
5353
this.sslSocketFactory = config.getSslSocketFactory();
5454
this.sslParameters = config.getSslParameters();

src/main/java/redis/clients/jedis/JedisClientConfig.java

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,68 @@
66

77
public interface JedisClientConfig {
88

9-
int getConnectionTimeout();
9+
/**
10+
* @return Connection timeout in milliseconds
11+
*/
12+
default int getConnectionTimeoutMillis() {
13+
return Protocol.DEFAULT_TIMEOUT;
14+
}
1015

11-
int getSoTimeout();
16+
/**
17+
* @return Socket timeout in milliseconds
18+
*/
19+
default int getSoTimeoutMillis() {
20+
return Protocol.DEFAULT_TIMEOUT;
21+
}
1222

1323
/**
1424
* @return Socket timeout (in milliseconds) to use during blocking operation. Default is '0',
1525
* which means to block forever.
1626
*/
17-
int getInfiniteSoTimeout();
27+
default int getInfiniteSoTimeoutMillis() {
28+
return 0;
29+
}
1830

19-
String getUser();
31+
/**
32+
* @return Redis ACL user
33+
*/
34+
default String getUser() {
35+
return null;
36+
}
2037

21-
String getPassword();
38+
default String getPassword() {
39+
return null;
40+
}
2241

23-
int getDatabase();
42+
default int getDatabase() {
43+
return Protocol.DEFAULT_DATABASE;
44+
}
2445

25-
String getClientName();
46+
default String getClientName() {
47+
return null;
48+
}
2649

27-
boolean isSsl();
50+
/**
51+
* @return <code>true</code> - to create a TLS connection. <code>false</code> - otherwise.
52+
*/
53+
default boolean isSsl() {
54+
return false;
55+
}
2856

29-
SSLSocketFactory getSslSocketFactory();
57+
default SSLSocketFactory getSslSocketFactory() {
58+
return null;
59+
}
3060

31-
SSLParameters getSslParameters();
61+
default SSLParameters getSslParameters() {
62+
return null;
63+
}
3264

33-
HostnameVerifier getHostnameVerifier();
65+
default HostnameVerifier getHostnameVerifier() {
66+
return null;
67+
}
3468

35-
HostAndPortMapper getHostAndPortMapper();
69+
default HostAndPortMapper getHostAndPortMapper() {
70+
return null;
71+
}
3672

3773
}

src/main/java/redis/clients/jedis/JedisClusterConnectionHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ public JedisClusterConnectionHandler(Set<HostAndPort> nodes, final GenericObject
6565
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
6666
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap portMap) {
6767
this(nodes,
68-
DefaultJedisClientConfig.builder().withConnectionTimeout(connectionTimeout)
69-
.withSoTimeout(soTimeout).withInfiniteSoTimeout(infiniteSoTimeout)
68+
DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(connectionTimeout)
69+
.withSoTimeoutMillis(soTimeout).withInfiniteSoTimeoutMillis(infiniteSoTimeout)
7070
.withUser(user).withPassword(password).withClientName(clientName)
7171
.withSsl(ssl).withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
7272
.withHostnameVerifier(hostnameVerifier).build(),
7373
poolConfig,
74-
DefaultJedisClientConfig.builder().withConnectionTimeout(connectionTimeout)
75-
.withSoTimeout(soTimeout).withInfiniteSoTimeout(infiniteSoTimeout)
74+
DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(connectionTimeout)
75+
.withSoTimeoutMillis(soTimeout).withInfiniteSoTimeoutMillis(infiniteSoTimeout)
7676
.withUser(user).withPassword(password).withClientName(clientName)
7777
.withSsl(ssl).withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
7878
.withHostnameVerifier(hostnameVerifier).withHostAndPortMapper(portMap).build());

src/main/java/redis/clients/jedis/JedisClusterInfoCache.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ public JedisClusterInfoCache(final GenericObjectPoolConfig<Jedis> poolConfig,
111111
SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
112112
HostnameVerifier hostnameVerifier, HostAndPortMapper hostAndPortMap) {
113113
this(poolConfig,
114-
DefaultJedisClientConfig.builder().withConnectionTimeout(connectionTimeout)
115-
.withSoTimeout(soTimeout).withInfiniteSoTimeout(infiniteSoTimeout)
114+
DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(connectionTimeout)
115+
.withSoTimeoutMillis(soTimeout).withInfiniteSoTimeoutMillis(infiniteSoTimeout)
116116
.withUser(user).withPassword(password).withClientName(clientName)
117117
.withSsl(ssl).withSslSocketFactory(sslSocketFactory)
118118
.withSslParameters(sslParameters) .withHostnameVerifier(hostnameVerifier)

src/main/java/redis/clients/jedis/JedisFactory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ class JedisFactory implements PooledObjectFactory<Jedis> {
6767
final String clientName, final boolean ssl, final SSLSocketFactory sslSocketFactory,
6868
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
6969
this.hostAndPort.set(new HostAndPort(host, port));
70-
this.config = DefaultJedisClientConfig.builder().withConnectionTimeout(connectionTimeout)
71-
.withSoTimeout(soTimeout).withInfiniteSoTimeout(infiniteSoTimeout).withUser(user)
70+
this.config = DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(connectionTimeout)
71+
.withSoTimeoutMillis(soTimeout).withInfiniteSoTimeoutMillis(infiniteSoTimeout).withUser(user)
7272
.withPassword(password).withDatabse(database).withClientName(clientName)
7373
.withSsl(ssl).withSslSocketFactory(sslSocketFactory)
7474
.withSslParameters(sslParameters).withHostnameVerifier(hostnameVerifier).build();
@@ -93,8 +93,8 @@ class JedisFactory implements PooledObjectFactory<Jedis> {
9393
"Cannot open Redis connection due invalid URI. %s", uri.toString()));
9494
}
9595
this.hostAndPort.set(new HostAndPort(uri.getHost(), uri.getPort()));
96-
this.config = DefaultJedisClientConfig.builder().withConnectionTimeout(connectionTimeout)
97-
.withSoTimeout(soTimeout).withInfiniteSoTimeout(infiniteSoTimeout)
96+
this.config = DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(connectionTimeout)
97+
.withSoTimeoutMillis(soTimeout).withInfiniteSoTimeoutMillis(infiniteSoTimeout)
9898
.withUser(JedisURIHelper.getUser(uri)).withPassword(JedisURIHelper.getPassword(uri))
9999
.withDatabse(JedisURIHelper.getDBIndex(uri)).withClientName(clientName)
100100
.withSsl(JedisURIHelper.isRedisSSLScheme(uri)).withSslSocketFactory(sslSocketFactory)

src/test/java/redis/clients/jedis/tests/JedisClusterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ public void testJedisClusterTimeout() {
629629
public void testJedisClusterTimeoutWithConfig() {
630630
HostAndPort hp = nodeInfo1;
631631
try (JedisCluster jc = new JedisCluster(hp, DefaultJedisClientConfig.builder()
632-
.withConnectionTimeout(4000).withSoTimeout(4000).withPassword("cluster").build(),
632+
.withConnectionTimeoutMillis(4000).withSoTimeoutMillis(4000).withPassword("cluster").build(),
633633
DEFAULT_REDIRECTIONS, DEFAULT_POOL_CONFIG)) {
634634

635635
jc.getClusterNodes().values().forEach(pool -> {

0 commit comments

Comments
 (0)