Skip to content

Commit f24a817

Browse files
authored
Fix and extend ACL implementation (#2180)
* Fix/edit ACL implementation * Proper and further usage of ACL in JedisSentinelPool * ACL in many classes * minor edit and fix
1 parent 96eb67a commit f24a817

7 files changed

+120
-148
lines changed

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

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -33,43 +33,35 @@ public class BinaryJedisCluster implements BinaryJedisClusterCommands,
3333

3434
protected JedisClusterConnectionHandler connectionHandler;
3535

36-
public BinaryJedisCluster(Set<HostAndPort> nodes, int timeout) {
37-
this(nodes, timeout, DEFAULT_MAX_ATTEMPTS, new GenericObjectPoolConfig());
38-
}
39-
4036
public BinaryJedisCluster(Set<HostAndPort> nodes) {
4137
this(nodes, DEFAULT_TIMEOUT);
4238
}
4339

40+
public BinaryJedisCluster(Set<HostAndPort> nodes, int timeout) {
41+
this(nodes, timeout, DEFAULT_MAX_ATTEMPTS, new GenericObjectPoolConfig());
42+
}
43+
4444
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int timeout, int maxAttempts,
4545
final GenericObjectPoolConfig poolConfig) {
46-
this.connectionHandler = new JedisSlotBasedConnectionHandler(jedisClusterNode, poolConfig,
47-
timeout);
48-
this.maxAttempts = maxAttempts;
46+
this(jedisClusterNode, timeout, timeout, maxAttempts, poolConfig);
4947
}
5048

5149
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout,
5250
int soTimeout, int maxAttempts, final GenericObjectPoolConfig poolConfig) {
53-
this.connectionHandler = new JedisSlotBasedConnectionHandler(jedisClusterNode, poolConfig,
54-
connectionTimeout, soTimeout);
55-
this.maxAttempts = maxAttempts;
51+
this(jedisClusterNode, connectionTimeout, soTimeout, maxAttempts, null, poolConfig);
5652
}
5753

5854
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout, int maxAttempts, String password, GenericObjectPoolConfig poolConfig) {
59-
this.connectionHandler = new JedisSlotBasedConnectionHandler(jedisClusterNode, poolConfig,
60-
connectionTimeout, soTimeout, password);
61-
this.maxAttempts = maxAttempts;
55+
this(jedisClusterNode, connectionTimeout, soTimeout, maxAttempts, password, null, poolConfig);
6256
}
6357

6458
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout, int maxAttempts, String password, String clientName, GenericObjectPoolConfig poolConfig) {
65-
this.connectionHandler = new JedisSlotBasedConnectionHandler(jedisClusterNode, poolConfig,
66-
connectionTimeout, soTimeout, password, clientName);
67-
this.maxAttempts = maxAttempts;
59+
this(jedisClusterNode, connectionTimeout, soTimeout, maxAttempts, null, password, clientName, poolConfig);
6860
}
6961

7062
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout, int maxAttempts, String user, String password, String clientName, GenericObjectPoolConfig poolConfig) {
7163
this.connectionHandler = new JedisSlotBasedConnectionHandler(jedisClusterNode, poolConfig,
72-
connectionTimeout, soTimeout, user, password, clientName);
64+
connectionTimeout, soTimeout, user, password, clientName);
7365
this.maxAttempts = maxAttempts;
7466
}
7567

@@ -85,17 +77,16 @@ public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeo
8577

8678
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout, int maxAttempts, String password, String clientName, GenericObjectPoolConfig poolConfig,
8779
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters, HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
88-
this.connectionHandler = new JedisSlotBasedConnectionHandler(jedisClusterNode, poolConfig,
89-
connectionTimeout, soTimeout, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
90-
this.maxAttempts = maxAttempts;
80+
this(jedisClusterNode, connectionTimeout, soTimeout, maxAttempts, null, password, clientName,
81+
poolConfig, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
9182
}
9283

93-
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout, int maxAttempts,
94-
String user, String password, String clientName, GenericObjectPoolConfig poolConfig,
95-
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
96-
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
84+
public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout,
85+
int maxAttempts, String user, String password, String clientName, GenericObjectPoolConfig poolConfig,
86+
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
87+
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
9788
this.connectionHandler = new JedisSlotBasedConnectionHandler(jedisClusterNode, poolConfig,
98-
connectionTimeout, soTimeout, user, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
89+
connectionTimeout, soTimeout, user, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
9990
this.maxAttempts = maxAttempts;
10091
}
10192

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

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,38 +14,35 @@
1414
public abstract class JedisClusterConnectionHandler implements Closeable {
1515
protected final JedisClusterInfoCache cache;
1616

17-
public JedisClusterConnectionHandler(Set<HostAndPort> nodes,
18-
final GenericObjectPoolConfig poolConfig, int connectionTimeout, int soTimeout, String password) {
17+
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, GenericObjectPoolConfig poolConfig,
18+
int connectionTimeout, int soTimeout, String password) {
1919
this(nodes, poolConfig, connectionTimeout, soTimeout, password, null);
2020
}
2121

22-
public JedisClusterConnectionHandler(Set<HostAndPort> nodes,
23-
final GenericObjectPoolConfig poolConfig, int connectionTimeout, int soTimeout, String password, String clientName) {
24-
this(nodes, poolConfig, connectionTimeout, soTimeout, password, clientName, false, null, null, null, null);
22+
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, GenericObjectPoolConfig poolConfig,
23+
int connectionTimeout, int soTimeout, String password, String clientName) {
24+
this(nodes, poolConfig, connectionTimeout, soTimeout, null, password, clientName);
2525
}
2626

27-
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, final GenericObjectPoolConfig poolConfig,
27+
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, GenericObjectPoolConfig poolConfig,
2828
int connectionTimeout, int soTimeout, String user, String password, String clientName) {
2929
this(nodes, poolConfig, connectionTimeout, soTimeout, user, password, clientName, false, null, null, null, null);
3030
}
3131

32-
public JedisClusterConnectionHandler(Set<HostAndPort> nodes,
33-
final GenericObjectPoolConfig poolConfig, int connectionTimeout, int soTimeout, String password, String clientName,
32+
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, GenericObjectPoolConfig poolConfig,
33+
int connectionTimeout, int soTimeout, String password, String clientName,
3434
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
3535
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap portMap) {
36-
this.cache = new JedisClusterInfoCache(poolConfig, connectionTimeout, soTimeout, password, clientName,
37-
ssl, sslSocketFactory, sslParameters, hostnameVerifier, portMap);
38-
initializeSlotsCache(nodes, connectionTimeout, soTimeout, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
36+
this(nodes, poolConfig, connectionTimeout, soTimeout, null, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, portMap);
3937
}
4038

41-
public JedisClusterConnectionHandler(Set<HostAndPort> nodes,
42-
final GenericObjectPoolConfig poolConfig, int connectionTimeout, int soTimeout,
43-
String user, String password, String clientName, boolean ssl, SSLSocketFactory sslSocketFactory,
44-
SSLParameters sslParameters, HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap portMap) {
39+
public JedisClusterConnectionHandler(Set<HostAndPort> nodes, GenericObjectPoolConfig poolConfig,
40+
int connectionTimeout, int soTimeout, String user, String password, String clientName,
41+
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
42+
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap portMap) {
4543
this.cache = new JedisClusterInfoCache(poolConfig, connectionTimeout, soTimeout, user, password, clientName,
46-
ssl, sslSocketFactory, sslParameters, hostnameVerifier, portMap);
44+
ssl, sslSocketFactory, sslParameters, hostnameVerifier, portMap);
4745
initializeSlotsCache(nodes, connectionTimeout, soTimeout, user, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
48-
4946
}
5047

5148
abstract Jedis getConnection();
@@ -60,14 +57,6 @@ public Map<String, JedisPool> getNodes() {
6057
return cache.getNodes();
6158
}
6259

63-
private void initializeSlotsCache(Set<HostAndPort> startNodes,
64-
int connectionTimeout, int soTimeout, String password, String clientName,
65-
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters, HostnameVerifier hostnameVerifier) {
66-
67-
initializeSlotsCache(startNodes, connectionTimeout, soTimeout, null, password, clientName,
68-
ssl, sslSocketFactory, sslParameters, hostnameVerifier );
69-
}
70-
7160
private void initializeSlotsCache(Set<HostAndPort> startNodes,
7261
int connectionTimeout, int soTimeout, String user, String password, String clientName,
7362
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters, HostnameVerifier hostnameVerifier) {

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,25 +47,25 @@ public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig, int timeo
4747

4848
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
4949
final int connectionTimeout, final int soTimeout, final String password, final String clientName) {
50-
this(poolConfig, connectionTimeout, soTimeout, password, clientName, false, null, null, null, null);
50+
this(poolConfig, connectionTimeout, soTimeout, null, password, clientName);
5151
}
5252

5353
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
54-
final int connectionTimeout, final int soTimeout, final String user, final String password, final String clientName) {
54+
final int connectionTimeout, final int soTimeout, final String user, final String password, final String clientName) {
5555
this(poolConfig, connectionTimeout, soTimeout, user, password, clientName, false, null, null, null, null);
5656
}
5757

58-
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
59-
final int connectionTimeout, final int soTimeout, final String password, final String clientName,
58+
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig, final int connectionTimeout,
59+
final int soTimeout, final String password, final String clientName,
6060
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
6161
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
6262
this(poolConfig, connectionTimeout, soTimeout, null, password, clientName, ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
6363
}
6464

65-
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
66-
final int connectionTimeout, final int soTimeout, final String user, final String password,
67-
final String clientName, boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
68-
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
65+
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig, final int connectionTimeout,
66+
final int soTimeout, final String user, final String password, final String clientName,
67+
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
68+
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
6969
this.poolConfig = poolConfig;
7070
this.connectionTimeout = connectionTimeout;
7171
this.soTimeout = soTimeout;
@@ -202,7 +202,7 @@ public JedisPool setupNodeIfNotExist(HostAndPort node) {
202202
if (existingPool != null) return existingPool;
203203

204204
JedisPool nodePool = new JedisPool(poolConfig, node.getHost(), node.getPort(),
205-
connectionTimeout, soTimeout, password, 0, clientName,
205+
connectionTimeout, soTimeout, user, password, 0, clientName,
206206
ssl, sslSocketFactory, sslParameters, hostnameVerifier);
207207
nodes.put(nodeKey, nodePool);
208208
return nodePool;

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

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ public void activateObject(PooledObject<Jedis> pooledJedis) throws Exception {
104104
if (jedis.getDB() != database) {
105105
jedis.select(database);
106106
}
107-
108107
}
109108

110109
@Override
@@ -118,18 +117,15 @@ public void destroyObject(PooledObject<Jedis> pooledJedis) throws Exception {
118117
}
119118
jedis.disconnect();
120119
} catch (Exception e) {
121-
122120
}
123121
}
124-
125122
}
126123

127124
@Override
128125
public PooledObject<Jedis> makeObject() throws Exception {
129-
final HostAndPort hostAndPort = this.hostAndPort.get();
130-
final Jedis jedis = new Jedis(hostAndPort.getHost(), hostAndPort.getPort(), connectionTimeout,
131-
soTimeout, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
132-
126+
final HostAndPort hp = this.hostAndPort.get();
127+
final Jedis jedis = new Jedis(hp.getHost(), hp.getPort(), connectionTimeout, soTimeout,
128+
ssl, sslSocketFactory, sslParameters, hostnameVerifier);
133129
try {
134130
jedis.connect();
135131
if (user != null) {
@@ -149,7 +145,6 @@ public PooledObject<Jedis> makeObject() throws Exception {
149145
}
150146

151147
return new DefaultPooledObject<>(jedis);
152-
153148
}
154149

155150
@Override

0 commit comments

Comments
 (0)