Allow RedisConnectionFactories to be initialized as part of the context lifecycle.
Lettuce and Jedis connection factories now can be configured to initialize early during afterPropertiesSet or configured whether the component should be auto-started by the container. By default, connection factories auto-startup early. Closes #2866 Original Pull Request: #2868
This commit is contained in:
committed by
Christoph Strobl
parent
779a0126e5
commit
7a94beb467
@@ -35,6 +35,7 @@ import javax.net.ssl.SSLSocketFactory;
|
||||
|
||||
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.data.redis.connection.RedisClusterConfiguration;
|
||||
import org.springframework.data.redis.connection.RedisPassword;
|
||||
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
|
||||
@@ -337,6 +338,21 @@ class JedisConnectionFactoryUnitTests {
|
||||
assertThat(connectionFactory.isRunning()).isTrue();
|
||||
}
|
||||
|
||||
@Test // GH-2866
|
||||
void earlyStartupDoesNotStartConnectionFactory() {
|
||||
|
||||
JedisConnectionFactory connectionFactory = new JedisConnectionFactory(new JedisPoolConfig());
|
||||
|
||||
connectionFactory.setEarlyStartup(false);
|
||||
connectionFactory.afterPropertiesSet();
|
||||
|
||||
assertThat(connectionFactory.isEarlyStartup()).isFalse();
|
||||
assertThat(connectionFactory.isAutoStartup()).isTrue();
|
||||
assertThat(connectionFactory.isRunning()).isFalse();
|
||||
|
||||
assertThat(ReflectionTestUtils.getField(connectionFactory, "pool")).isNull();
|
||||
}
|
||||
|
||||
private JedisConnectionFactory initSpyedConnectionFactory(RedisSentinelConfiguration sentinelConfiguration,
|
||||
@Nullable JedisPoolConfig poolConfig) {
|
||||
|
||||
|
||||
@@ -1260,6 +1260,22 @@ class LettuceConnectionFactoryUnitTests {
|
||||
.extracting(RedisStandaloneConfiguration::getPort).isEqualTo(6789);
|
||||
}
|
||||
|
||||
@Test // GH-2866
|
||||
void earlyStartupDoesNotStartConnectionFactory() {
|
||||
|
||||
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(new RedisStandaloneConfiguration(),
|
||||
LettuceTestClientConfiguration.defaultConfiguration());
|
||||
connectionFactory.setEarlyStartup(false);
|
||||
connectionFactory.afterPropertiesSet();
|
||||
|
||||
assertThat(connectionFactory.isEarlyStartup()).isFalse();
|
||||
assertThat(connectionFactory.isAutoStartup()).isTrue();
|
||||
assertThat(connectionFactory.isRunning()).isFalse();
|
||||
|
||||
AbstractRedisClient client = (AbstractRedisClient) getField(connectionFactory, "client");
|
||||
assertThat(client).isNull();
|
||||
}
|
||||
|
||||
static class CustomRedisConfiguration implements RedisConfiguration, WithHostAndPort {
|
||||
|
||||
private String hostName;
|
||||
|
||||
Reference in New Issue
Block a user