Skip to content

Commit 515c6cd

Browse files
authored
Merge branch 'master' into xread-block-2
2 parents 4ce9892 + 89eeffe commit 515c6cd

14 files changed

+299
-37
lines changed

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,14 @@ public BinaryJedis(final String host, final int port, final int connectionTimeou
9393
client.setSoTimeout(soTimeout);
9494
}
9595

96+
public BinaryJedis(final String host, final int port, final int connectionTimeout,
97+
final int soTimeout, final int infiniteSoTimeout) {
98+
client = new Client(host, port);
99+
client.setConnectionTimeout(connectionTimeout);
100+
client.setSoTimeout(soTimeout);
101+
client.setInfiniteSoTimeout(infiniteSoTimeout);
102+
}
103+
96104
public BinaryJedis(final String host, final int port, final int connectionTimeout,
97105
final int soTimeout, final boolean ssl) {
98106
client = new Client(host, port, ssl);
@@ -108,6 +116,16 @@ public BinaryJedis(final String host, final int port, final int connectionTimeou
108116
client.setSoTimeout(soTimeout);
109117
}
110118

119+
public BinaryJedis(final String host, final int port, final int connectionTimeout,
120+
final int soTimeout, final int infiniteSoTimeout, final boolean ssl,
121+
final SSLSocketFactory sslSocketFactory, final SSLParameters sslParameters,
122+
final HostnameVerifier hostnameVerifier) {
123+
client = new Client(host, port, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
124+
client.setConnectionTimeout(connectionTimeout);
125+
client.setSoTimeout(soTimeout);
126+
client.setInfiniteSoTimeout(infiniteSoTimeout);
127+
}
128+
111129
public BinaryJedis(final JedisShardInfo shardInfo) {
112130
client = new Client(shardInfo.getHost(), shardInfo.getPort(), shardInfo.getSsl(),
113131
shardInfo.getSslSocketFactory(), shardInfo.getSslParameters(),
@@ -151,6 +169,15 @@ public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeo
151169
client.setSoTimeout(soTimeout);
152170
}
153171

172+
public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeout,
173+
final int infiniteSoTimeout, final SSLSocketFactory sslSocketFactory,
174+
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
175+
initializeClientFromURI(uri, sslSocketFactory, sslParameters, hostnameVerifier);
176+
client.setConnectionTimeout(connectionTimeout);
177+
client.setSoTimeout(soTimeout);
178+
client.setInfiniteSoTimeout(infiniteSoTimeout);
179+
}
180+
154181
public BinaryJedis(final JedisSocketFactory jedisSocketFactory) {
155182
client = new Client(jedisSocketFactory);
156183
}

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@ public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeo
6363
this.maxAttempts = maxAttempts;
6464
}
6565

66+
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout,
67+
int infiniteSoTimeout, int maxAttempts, String user, String password, String clientName, GenericObjectPoolConfig poolConfig) {
68+
this.connectionHandler = new JedisSlotBasedConnectionHandler(jedisClusterNode, poolConfig,
69+
connectionTimeout, soTimeout, infiniteSoTimeout, user, password, clientName);
70+
this.maxAttempts = maxAttempts;
71+
}
72+
6673
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout, int maxAttempts, String password, String clientName, GenericObjectPoolConfig poolConfig,
6774
boolean ssl) {
6875
this(jedisClusterNode, connectionTimeout, soTimeout, maxAttempts, password, clientName, poolConfig, ssl, null, null, null, null);
@@ -88,6 +95,14 @@ public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeo
8895
this.maxAttempts = maxAttempts;
8996
}
9097

98+
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout,
99+
int infiniteSoTimeout, int maxAttempts, String user, String password, String clientName, GenericObjectPoolConfig poolConfig,
100+
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters, HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
101+
this.connectionHandler = new JedisSlotBasedConnectionHandler(jedisClusterNode, poolConfig,
102+
connectionTimeout, soTimeout, infiniteSoTimeout, user, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
103+
this.maxAttempts = maxAttempts;
104+
}
105+
91106
@Override
92107
public void close() {
93108
if (connectionHandler != null) {

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class Connection implements Closeable {
2727
private Socket socket;
2828
private RedisOutputStream outputStream;
2929
private RedisInputStream inputStream;
30+
private int infiniteSoTimeout = 0;
3031
private boolean broken = false;
3132

3233
public Connection() {
@@ -76,12 +77,16 @@ public void setSoTimeout(int soTimeout) {
7677
jedisSocketFactory.setSoTimeout(soTimeout);
7778
}
7879

80+
public void setInfiniteSoTimeout(int infiniteSoTimeout) {
81+
this.infiniteSoTimeout = infiniteSoTimeout;
82+
}
83+
7984
public void setTimeoutInfinite() {
8085
try {
8186
if (!isConnected()) {
8287
connect();
8388
}
84-
socket.setSoTimeout(0);
89+
socket.setSoTimeout(infiniteSoTimeout);
8590
} catch (SocketException ex) {
8691
broken = true;
8792
throw new JedisConnectionException(ex);

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ public Jedis(final String host, final int port, final int connectionTimeout, fin
6767
super(host, port, connectionTimeout, soTimeout);
6868
}
6969

70+
public Jedis(final String host, final int port, final int connectionTimeout, final int soTimeout,
71+
final int infiniteSoTimeout) {
72+
super(host, port, connectionTimeout, soTimeout, infiniteSoTimeout);
73+
}
74+
7075
public Jedis(final String host, final int port, final int connectionTimeout, final int soTimeout,
7176
final boolean ssl) {
7277
super(host, port, connectionTimeout, soTimeout, ssl);
@@ -79,6 +84,13 @@ public Jedis(final String host, final int port, final int connectionTimeout, fin
7984
hostnameVerifier);
8085
}
8186

87+
public Jedis(final String host, final int port, final int connectionTimeout, final int soTimeout,
88+
final int infiniteSoTimeout, final boolean ssl, final SSLSocketFactory sslSocketFactory,
89+
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
90+
super(host, port, connectionTimeout, soTimeout, infiniteSoTimeout, ssl, sslSocketFactory,
91+
sslParameters, hostnameVerifier);
92+
}
93+
8294
public Jedis(JedisShardInfo shardInfo) {
8395
super(shardInfo);
8496
}
@@ -111,6 +123,12 @@ public Jedis(final URI uri, final int connectionTimeout, final int soTimeout,
111123
super(uri, connectionTimeout, soTimeout, sslSocketFactory, sslParameters, hostnameVerifier);
112124
}
113125

126+
public Jedis(final URI uri, final int connectionTimeout, final int soTimeout,
127+
final int infiniteSoTimeout, final SSLSocketFactory sslSocketFactory,
128+
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
129+
super(uri, connectionTimeout, soTimeout, infiniteSoTimeout, sslSocketFactory, sslParameters, hostnameVerifier);
130+
}
131+
114132
public Jedis(final JedisSocketFactory jedisSocketFactory) {
115133
super(jedisSocketFactory);
116134
}

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,11 @@ public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, in
139139
super(jedisClusterNode, connectionTimeout, soTimeout, maxAttempts, user, password, clientName, poolConfig);
140140
}
141141

142+
public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout,
143+
int infiniteSoTimeout, int maxAttempts, String user, String password, String clientName, final GenericObjectPoolConfig poolConfig) {
144+
super(jedisClusterNode, connectionTimeout, soTimeout, infiniteSoTimeout, maxAttempts, user, password, clientName, poolConfig);
145+
}
146+
142147
public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout,
143148
int maxAttempts, String password, String clientName, final GenericObjectPoolConfig poolConfig,
144149
boolean ssl) {
@@ -159,6 +164,14 @@ public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, in
159164
ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
160165
}
161166

167+
public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout, int infiniteSoTimeout,
168+
int maxAttempts, String password, String clientName, final GenericObjectPoolConfig poolConfig,
169+
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
170+
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
171+
this(jedisClusterNode, connectionTimeout, soTimeout, infiniteSoTimeout, maxAttempts, null, password,
172+
clientName, poolConfig, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
173+
}
174+
162175
public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout,
163176
int maxAttempts, String user, String password, String clientName, final GenericObjectPoolConfig poolConfig,
164177
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
@@ -167,6 +180,14 @@ public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, in
167180
ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
168181
}
169182

183+
public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout, int infiniteSoTimeout,
184+
int maxAttempts, String user, String password, String clientName, final GenericObjectPoolConfig poolConfig,
185+
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
186+
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
187+
super(jedisClusterNode, connectionTimeout, soTimeout, infiniteSoTimeout, maxAttempts, user, password,
188+
clientName, poolConfig, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
189+
}
190+
170191
@Override
171192
public String set(final String key, final String value) {
172193
return new JedisClusterCommand<String>(connectionHandler, maxAttempts) {

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

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,14 @@ public JedisClusterConnectionHandler(Set<HostAndPort> nodes, GenericObjectPoolCo
2424
this(nodes, poolConfig, connectionTimeout, soTimeout, null, password, clientName);
2525
}
2626

27-
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, GenericObjectPoolConfig poolConfig,
27+
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, final GenericObjectPoolConfig poolConfig,
2828
int connectionTimeout, int soTimeout, String user, String password, String clientName) {
29-
this(nodes, poolConfig, connectionTimeout, soTimeout, user, password, clientName, false, null, null, null, null);
29+
this(nodes, poolConfig, connectionTimeout, soTimeout, 0, user, password, clientName);
30+
}
31+
32+
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, final GenericObjectPoolConfig poolConfig,
33+
int connectionTimeout, int soTimeout, int infiniteSoTimeout, String user, String password, String clientName) {
34+
this(nodes, poolConfig, connectionTimeout, soTimeout, infiniteSoTimeout, user, password, clientName, false, null, null, null, null);
3035
}
3136

3237
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, GenericObjectPoolConfig poolConfig,
@@ -40,9 +45,17 @@ public JedisClusterConnectionHandler(Set<HostAndPort> nodes, GenericObjectPoolCo
4045
int connectionTimeout, int soTimeout, String user, String password, String clientName,
4146
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
4247
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap portMap) {
43-
this.cache = new JedisClusterInfoCache(poolConfig, connectionTimeout, soTimeout, user, password, clientName,
44-
ssl, sslSocketFactory, sslParameters, hostnameVerifier, portMap);
45-
initializeSlotsCache(nodes, connectionTimeout, soTimeout, user, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
48+
this(nodes, poolConfig, connectionTimeout, soTimeout, 0, user, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, portMap);
49+
}
50+
51+
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, final GenericObjectPoolConfig poolConfig,
52+
int connectionTimeout, int soTimeout, int infiniteSoTimeout, String user, String password, String clientName,
53+
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
54+
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap portMap) {
55+
this.cache = new JedisClusterInfoCache(poolConfig, connectionTimeout, soTimeout, infiniteSoTimeout,
56+
user, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, portMap);
57+
initializeSlotsCache(nodes, connectionTimeout, soTimeout, infiniteSoTimeout,
58+
null, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
4659
}
4760

4861
abstract Jedis getConnection();
@@ -58,11 +71,13 @@ public Map<String, JedisPool> getNodes() {
5871
}
5972

6073
private void initializeSlotsCache(Set<HostAndPort> startNodes,
61-
int connectionTimeout, int soTimeout, String user, String password, String clientName,
74+
int connectionTimeout, int soTimeout, int infiniteSoTimeout, String user, String password, String clientName,
6275
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters, HostnameVerifier hostnameVerifier) {
6376
for (HostAndPort hostAndPort : startNodes) {
64-
try (Jedis jedis = new Jedis(hostAndPort.getHost(), hostAndPort.getPort(),
65-
connectionTimeout, soTimeout, ssl, sslSocketFactory, sslParameters, hostnameVerifier)) {
77+
78+
try (Jedis jedis = new Jedis(hostAndPort.getHost(), hostAndPort.getPort(), connectionTimeout,
79+
soTimeout, infiniteSoTimeout, ssl, sslSocketFactory, sslParameters, hostnameVerifier)) {
80+
6681
if (user != null) {
6782
jedis.auth(user, password);
6883
} else if (password != null) {

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

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class JedisClusterInfoCache {
2929

3030
private int connectionTimeout;
3131
private int soTimeout;
32+
private int infiniteSoTimeout;
3233
private String user;
3334
private String password;
3435
private String clientName;
@@ -50,25 +51,45 @@ public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
5051
this(poolConfig, connectionTimeout, soTimeout, null, password, clientName);
5152
}
5253

54+
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig, final int connectionTimeout,
55+
final int soTimeout, final int infiniteSoTimeout, final String password, final String clientName) {
56+
this(poolConfig, connectionTimeout, soTimeout, infiniteSoTimeout, null, password, clientName);
57+
}
58+
5359
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
5460
final int connectionTimeout, final int soTimeout, final String user, final String password, final String clientName) {
5561
this(poolConfig, connectionTimeout, soTimeout, user, password, clientName, false, null, null, null, null);
5662
}
5763

64+
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
65+
final int connectionTimeout, final int soTimeout, final int infiniteSoTimeout,
66+
final String user, final String password, final String clientName) {
67+
this(poolConfig, connectionTimeout, soTimeout, infiniteSoTimeout, user, password, clientName, false, null, null, null, null);
68+
}
69+
5870
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig, final int connectionTimeout,
5971
final int soTimeout, final String password, final String clientName,
6072
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
6173
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
62-
this(poolConfig, connectionTimeout, soTimeout, null, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
74+
this(poolConfig, connectionTimeout, soTimeout, null, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
6375
}
6476

6577
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig, final int connectionTimeout,
6678
final int soTimeout, final String user, final String password, final String clientName,
6779
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
6880
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
81+
this(poolConfig, connectionTimeout, soTimeout, 0, user, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
82+
}
83+
84+
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
85+
final int connectionTimeout, final int soTimeout, final int infiniteSoTimeout,
86+
final String user, final String password, final String clientName, boolean ssl,
87+
SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
88+
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
6989
this.poolConfig = poolConfig;
7090
this.connectionTimeout = connectionTimeout;
7191
this.soTimeout = soTimeout;
92+
this.infiniteSoTimeout = infiniteSoTimeout;
7293
this.user = user;
7394
this.password = password;
7495
this.clientName = clientName;
@@ -202,7 +223,7 @@ public JedisPool setupNodeIfNotExist(HostAndPort node) {
202223
if (existingPool != null) return existingPool;
203224

204225
JedisPool nodePool = new JedisPool(poolConfig, node.getHost(), node.getPort(),
205-
connectionTimeout, soTimeout, user, password, 0, clientName,
226+
connectionTimeout, soTimeout, infiniteSoTimeout, user, password, 0, clientName,
206227
ssl, sslSocketFactory, sslParameters, hostnameVerifier);
207228
nodes.put(nodeKey, nodePool);
208229
return nodePool;

0 commit comments

Comments
 (0)