Enable minIdle by allowing timeBetweenEviction runs to be configured
See gh-16703
This commit is contained in:
committed by
Andy Wilkinson
parent
509d338de9
commit
1659d46028
@@ -114,6 +114,10 @@ class JedisConnectionConfiguration extends RedisConnectionConfiguration {
|
||||
config.setMaxTotal(pool.getMaxActive());
|
||||
config.setMaxIdle(pool.getMaxIdle());
|
||||
config.setMinIdle(pool.getMinIdle());
|
||||
if (pool.getTimeBetweenEvictionRuns() != null) {
|
||||
config.setTimeBetweenEvictionRunsMillis(
|
||||
pool.getTimeBetweenEvictionRuns().toMillis());
|
||||
}
|
||||
if (pool.getMaxWait() != null) {
|
||||
config.setMaxWaitMillis(pool.getMaxWait().toMillis());
|
||||
}
|
||||
|
||||
@@ -155,6 +155,10 @@ class LettuceConnectionConfiguration extends RedisConnectionConfiguration {
|
||||
config.setMaxTotal(properties.getMaxActive());
|
||||
config.setMaxIdle(properties.getMaxIdle());
|
||||
config.setMinIdle(properties.getMinIdle());
|
||||
if (properties.getTimeBetweenEvictionRuns() != null) {
|
||||
config.setTimeBetweenEvictionRunsMillis(
|
||||
properties.getTimeBetweenEvictionRuns().toMillis());
|
||||
}
|
||||
if (properties.getMaxWait() != null) {
|
||||
config.setMaxWaitMillis(properties.getMaxWait().toMillis());
|
||||
}
|
||||
|
||||
@@ -172,6 +172,9 @@ public class RedisProperties {
|
||||
/**
|
||||
* Target for the minimum number of idle connections to maintain in the pool. This
|
||||
* setting only has an effect if it is positive.
|
||||
*
|
||||
* This setting only has an effect if it is positive and `timeBetweenEvictionRuns`
|
||||
* is greater than zero.
|
||||
*/
|
||||
private int minIdle = 0;
|
||||
|
||||
@@ -188,6 +191,14 @@ public class RedisProperties {
|
||||
*/
|
||||
private Duration maxWait = Duration.ofMillis(-1);
|
||||
|
||||
/**
|
||||
* Time to sleep between runs of the idle object evictor thread.
|
||||
*
|
||||
* When positive, the idle object evictor thread starts. When non-positive, no
|
||||
* idle object evictor thread runs.
|
||||
*/
|
||||
private Duration timeBetweenEvictionRuns;
|
||||
|
||||
public int getMaxIdle() {
|
||||
return this.maxIdle;
|
||||
}
|
||||
@@ -220,6 +231,14 @@ public class RedisProperties {
|
||||
this.maxWait = maxWait;
|
||||
}
|
||||
|
||||
public Duration getTimeBetweenEvictionRuns() {
|
||||
return this.timeBetweenEvictionRuns;
|
||||
}
|
||||
|
||||
public void setTimeBetweenEvictionRuns(Duration timeBetweenEvictionRuns) {
|
||||
this.timeBetweenEvictionRuns = timeBetweenEvictionRuns;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -134,11 +134,14 @@ public class RedisAutoConfigurationJedisTests {
|
||||
|
||||
@Test
|
||||
public void testRedisConfigurationWithPool() {
|
||||
this.contextRunner.withPropertyValues("spring.redis.host:foo",
|
||||
"spring.redis.jedis.pool.min-idle:1",
|
||||
"spring.redis.jedis.pool.max-idle:4",
|
||||
"spring.redis.jedis.pool.max-active:16",
|
||||
"spring.redis.jedis.pool.max-wait:2000").run((context) -> {
|
||||
this.contextRunner
|
||||
.withPropertyValues("spring.redis.host:foo",
|
||||
"spring.redis.jedis.pool.min-idle:1",
|
||||
"spring.redis.jedis.pool.max-idle:4",
|
||||
"spring.redis.jedis.pool.max-active:16",
|
||||
"spring.redis.jedis.pool.max-wait:2000",
|
||||
"spring.redis.jedis.pool.time-between-eviction-runs:30000")
|
||||
.run((context) -> {
|
||||
JedisConnectionFactory cf = context
|
||||
.getBean(JedisConnectionFactory.class);
|
||||
assertThat(cf.getHostName()).isEqualTo("foo");
|
||||
@@ -146,6 +149,8 @@ public class RedisAutoConfigurationJedisTests {
|
||||
assertThat(cf.getPoolConfig().getMaxIdle()).isEqualTo(4);
|
||||
assertThat(cf.getPoolConfig().getMaxTotal()).isEqualTo(16);
|
||||
assertThat(cf.getPoolConfig().getMaxWaitMillis()).isEqualTo(2000);
|
||||
assertThat(cf.getPoolConfig().getTimeBetweenEvictionRunsMillis())
|
||||
.isEqualTo(30000);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -155,6 +155,7 @@ public class RedisAutoConfigurationTests {
|
||||
"spring.redis.lettuce.pool.max-idle:4",
|
||||
"spring.redis.lettuce.pool.max-active:16",
|
||||
"spring.redis.lettuce.pool.max-wait:2000",
|
||||
"spring.redis.lettuce.pool.time-between-eviction-runs:30000",
|
||||
"spring.redis.lettuce.shutdown-timeout:1000").run((context) -> {
|
||||
LettuceConnectionFactory cf = context
|
||||
.getBean(LettuceConnectionFactory.class);
|
||||
@@ -165,6 +166,8 @@ public class RedisAutoConfigurationTests {
|
||||
assertThat(poolConfig.getMaxIdle()).isEqualTo(4);
|
||||
assertThat(poolConfig.getMaxTotal()).isEqualTo(16);
|
||||
assertThat(poolConfig.getMaxWaitMillis()).isEqualTo(2000);
|
||||
assertThat(poolConfig.getTimeBetweenEvictionRunsMillis())
|
||||
.isEqualTo(30000);
|
||||
assertThat(cf.getShutdownTimeout()).isEqualTo(1000);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user