Reuse client resources for lifetime of Redis cluster

This commit is contained in:
Jon Chambers 2025-07-03 11:06:39 -04:00 committed by ravi-signal
parent 96d41b3716
commit da6ed94443
1 changed files with 5 additions and 4 deletions

View File

@ -39,11 +39,11 @@ public class RedisClusterExtension implements BeforeAllCallback, BeforeEachCallb
private static final int NODE_COUNT = 2;
private static final RedisServer[] CLUSTER_NODES = new RedisServer[NODE_COUNT];
private static ClientResources redisClientResources;
private final Duration timeout;
private final RetryConfiguration retryConfiguration;
private FaultTolerantRedisClusterClient redisCluster;
private ClientResources redisClientResources;
public RedisClusterExtension(final Duration timeout, final RetryConfiguration retryConfiguration) {
this.timeout = timeout;
@ -57,6 +57,8 @@ public class RedisClusterExtension implements BeforeAllCallback, BeforeEachCallb
@Override
public void afterAll(final ExtensionContext context) throws Exception {
redisClientResources.shutdown().get();
for (final RedisServer node : CLUSTER_NODES) {
node.stop();
}
@ -65,13 +67,14 @@ public class RedisClusterExtension implements BeforeAllCallback, BeforeEachCallb
@Override
public void afterEach(final ExtensionContext context) throws Exception {
redisCluster.shutdown();
redisClientResources.shutdown().get();
}
@Override
public void beforeAll(final ExtensionContext context) throws Exception {
assumeFalse(System.getProperty("os.name").equalsIgnoreCase("windows"));
redisClientResources = ClientResources.builder().build();
for (int i = 0; i < NODE_COUNT; i++) {
// We're occasionally seeing redis server startup failing due to the bind address being already in use.
// To mitigate that, we're going to just retry a couple of times before failing the test.
@ -83,8 +86,6 @@ public class RedisClusterExtension implements BeforeAllCallback, BeforeEachCallb
@Override
public void beforeEach(final ExtensionContext context) throws Exception {
redisClientResources = ClientResources.builder().build();
final CircuitBreakerConfiguration circuitBreakerConfig = new CircuitBreakerConfiguration();
circuitBreakerConfig.setWaitDurationInOpenState(Duration.ofMillis(500));
redisCluster = new FaultTolerantRedisClusterClient("test-cluster",