Skip to content

Commit ad3c2ff

Browse files
committed
Allow to prepare the pool
1 parent c83f5ac commit ad3c2ff

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

src/main/java/org/springframework/data/redis/connection/lettuce/DefaultLettucePoolingClientConfiguration.java

+14
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,28 @@ class DefaultLettucePoolingClientConfiguration implements LettucePoolingClientCo
3838

3939
private final LettuceClientConfiguration clientConfiguration;
4040
private final GenericObjectPoolConfig poolConfig;
41+
private final boolean preparePool;
4142

4243
DefaultLettucePoolingClientConfiguration(LettuceClientConfiguration clientConfiguration,
4344
GenericObjectPoolConfig poolConfig) {
4445

4546
this.clientConfiguration = clientConfiguration;
4647
this.poolConfig = poolConfig;
48+
this.preparePool = false;
4749
}
4850

51+
DefaultLettucePoolingClientConfiguration(LettuceClientConfiguration clientConfiguration,
52+
GenericObjectPoolConfig poolConfig, boolean preparePool) {
53+
this.clientConfiguration = clientConfiguration;
54+
this.poolConfig = poolConfig;
55+
this.preparePool = preparePool;
56+
}
57+
58+
@Override
59+
public boolean preparePool() {
60+
return preparePool;
61+
}
62+
4963
@Override
5064
public boolean isUseSsl() {
5165
return clientConfiguration.isUseSsl();

src/main/java/org/springframework/data/redis/connection/lettuce/LettucePoolingClientConfiguration.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
*/
3737
public interface LettucePoolingClientConfiguration extends LettuceClientConfiguration {
3838

39+
boolean preparePool();
3940
/**
4041
* @return the {@link GenericObjectPoolConfig}. Never {@literal null}.
4142
*/
@@ -92,6 +93,7 @@ static LettucePoolingClientConfiguration defaultConfiguration() {
9293
class LettucePoolingClientConfigurationBuilder extends LettuceClientConfigurationBuilder {
9394

9495
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
96+
boolean preparePool = false;
9597

9698
LettucePoolingClientConfigurationBuilder() {
9799
super();
@@ -125,6 +127,12 @@ public LettucePoolingClientConfigurationBuilder commandTimeout(Duration timeout)
125127
return this;
126128
}
127129

130+
public LettucePoolingClientConfigurationBuilder preparePool(boolean preparePool) {
131+
132+
this.preparePool = preparePool;
133+
return this;
134+
}
135+
128136
@Override
129137
public LettucePoolingClientConfigurationBuilder shutdownTimeout(Duration shutdownTimeout) {
130138

@@ -173,7 +181,7 @@ public LettucePoolingClientConfigurationBuilder poolConfig(GenericObjectPoolConf
173181

174182
@Override
175183
public LettucePoolingClientConfiguration build() {
176-
return new DefaultLettucePoolingClientConfiguration(super.build(), poolConfig);
184+
return new DefaultLettucePoolingClientConfiguration(super.build(), poolConfig, preparePool);
177185
}
178186
}
179187

src/main/java/org/springframework/data/redis/connection/lettuce/LettucePoolingConnectionProvider.java

+10
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class LettucePoolingConnectionProvider implements LettuceConnectionProvider, Red
6363
private static final Log log = LogFactory.getLog(LettucePoolingConnectionProvider.class);
6464

6565
private final LettuceConnectionProvider connectionProvider;
66+
private final LettucePoolingClientConfiguration clientConfiguration;
6667
private final GenericObjectPoolConfig poolConfig;
6768
private final Map<StatefulConnection<?, ?>, GenericObjectPool<StatefulConnection<?, ?>>> poolRef = new ConcurrentHashMap<>(
6869
32);
@@ -81,6 +82,7 @@ class LettucePoolingConnectionProvider implements LettuceConnectionProvider, Red
8182
Assert.notNull(connectionProvider, "ConnectionProvider must not be null");
8283
Assert.notNull(clientConfiguration, "ClientConfiguration must not be null");
8384

85+
this.clientConfiguration = clientConfiguration;
8486
this.connectionProvider = connectionProvider;
8587
this.poolConfig = clientConfiguration.getPoolConfig();
8688
this.asyncPoolConfig = CommonsPool2ConfigConverter.bounded(this.poolConfig);
@@ -93,6 +95,14 @@ class LettucePoolingConnectionProvider implements LettuceConnectionProvider, Red
9395
return ConnectionPoolSupport.createGenericObjectPool(() -> connectionProvider.getConnection(connectionType),
9496
poolConfig, false);
9597
});
98+
if (clientConfiguration.preparePool()){
99+
try {
100+
pool.preparePool();
101+
102+
} catch (Exception ex) {
103+
throw new PoolException("Could not prepare the pool", ex);
104+
}
105+
}
96106

97107
try {
98108

0 commit comments

Comments
 (0)