Remove default/integral retries from Redis clients

This commit is contained in:
Jon Chambers
2025-08-07 09:49:02 -04:00
committed by Jon Chambers
parent 32cf12e9af
commit a8c6fa93e0
9 changed files with 22 additions and 113 deletions

View File

@@ -17,7 +17,6 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.whispersystems.textsecuregcm.configuration.CircuitBreakerConfiguration;
import org.whispersystems.textsecuregcm.configuration.RetryConfiguration;
// ThreadMode.SEPARATE_THREAD protects against hangs in the remote Redis calls, as this mode allows the test code to be
// preempted by the timeout check
@@ -26,13 +25,6 @@ class FaultTolerantRedisClientTest {
private static final Duration TIMEOUT = Duration.ofMillis(50);
private static final RetryConfiguration RETRY_CONFIGURATION = new RetryConfiguration();
static {
RETRY_CONFIGURATION.setMaxAttempts(1);
RETRY_CONFIGURATION.setWaitDuration(50);
}
@RegisterExtension
static final RedisServerExtension REDIS_SERVER_EXTENSION = RedisServerExtension.builder().build();
@@ -44,8 +36,7 @@ class FaultTolerantRedisClientTest {
return new FaultTolerantRedisClient("test", clientResourcesBuilder,
RedisServerExtension.getRedisURI(), TIMEOUT,
Optional.ofNullable(circuitBreakerConfiguration).orElseGet(CircuitBreakerConfiguration::new),
RETRY_CONFIGURATION);
Optional.ofNullable(circuitBreakerConfiguration).orElseGet(CircuitBreakerConfiguration::new));
}
@AfterEach

View File

@@ -61,7 +61,6 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.whispersystems.textsecuregcm.configuration.CircuitBreakerConfiguration;
import org.whispersystems.textsecuregcm.configuration.RetryConfiguration;
import org.whispersystems.textsecuregcm.util.Pair;
import org.whispersystems.textsecuregcm.util.RedisClusterUtil;
@@ -72,16 +71,8 @@ class FaultTolerantRedisClusterClientTest {
private static final Duration TIMEOUT = Duration.ofMillis(200);
private static final RetryConfiguration RETRY_CONFIGURATION = new RetryConfiguration();
static {
RETRY_CONFIGURATION.setMaxAttempts(1);
RETRY_CONFIGURATION.setWaitDuration(50);
}
@RegisterExtension
static final RedisClusterExtension REDIS_CLUSTER_EXTENSION = RedisClusterExtension.builder()
.retryConfiguration(RETRY_CONFIGURATION)
.timeout(TIMEOUT)
.build();
@@ -94,8 +85,7 @@ class FaultTolerantRedisClusterClientTest {
return new FaultTolerantRedisClusterClient("test",
clientResourcesBuilder.socketAddressResolver(REDIS_CLUSTER_EXTENSION.getSocketAddressResolver()),
RedisClusterExtension.getRedisURIs(), TIMEOUT,
Optional.ofNullable(circuitBreakerConfiguration).orElseGet(CircuitBreakerConfiguration::new),
RETRY_CONFIGURATION);
Optional.ofNullable(circuitBreakerConfiguration).orElseGet(CircuitBreakerConfiguration::new));
}
@AfterEach

View File

@@ -30,7 +30,6 @@ import org.testcontainers.containers.ComposeContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.containers.wait.strategy.WaitStrategy;
import org.whispersystems.textsecuregcm.configuration.CircuitBreakerConfiguration;
import org.whispersystems.textsecuregcm.configuration.RetryConfiguration;
import org.whispersystems.textsecuregcm.util.TestcontainersImages;
public class RedisClusterExtension implements BeforeAllCallback, BeforeEachCallback, AfterEachCallback, ExtensionContext.Store.CloseableResource {
@@ -40,7 +39,6 @@ public class RedisClusterExtension implements BeforeAllCallback, BeforeEachCallb
private static List<RedisURI> redisUris;
private final Duration timeout;
private final RetryConfiguration retryConfiguration;
private ClientResources redisClientResources;
private FaultTolerantRedisClusterClient redisClusterClient;
@@ -79,9 +77,8 @@ public class RedisClusterExtension implements BeforeAllCallback, BeforeEachCallb
- 'REDIS_CLUSTER_CREATOR=yes'
""", TestcontainersImages.getRedisCluster());
public RedisClusterExtension(final Duration timeout, final RetryConfiguration retryConfiguration) {
public RedisClusterExtension(final Duration timeout) {
this.timeout = timeout;
this.retryConfiguration = retryConfiguration;
}
@@ -191,8 +188,7 @@ public class RedisClusterExtension implements BeforeAllCallback, BeforeEachCallb
redisClientResources.mutate(),
getRedisURIs(),
timeout,
circuitBreakerConfig,
retryConfiguration);
circuitBreakerConfig);
redisClusterClient.useCluster(connection -> connection.sync().flushall(FlushMode.SYNC));
}
@@ -226,7 +222,6 @@ public class RedisClusterExtension implements BeforeAllCallback, BeforeEachCallb
public static class Builder {
private Duration timeout = DEFAULT_TIMEOUT;
private RetryConfiguration retryConfiguration = new RetryConfiguration();
private Builder() {
}
@@ -236,13 +231,8 @@ public class RedisClusterExtension implements BeforeAllCallback, BeforeEachCallb
return this;
}
Builder retryConfiguration(RetryConfiguration retryConfiguration) {
this.retryConfiguration = retryConfiguration;
return this;
}
public RedisClusterExtension build() {
return new RedisClusterExtension(timeout, retryConfiguration);
return new RedisClusterExtension(timeout);
}
}
}

View File

@@ -16,7 +16,6 @@ import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.testcontainers.utility.DockerImageName;
import org.whispersystems.textsecuregcm.configuration.CircuitBreakerConfiguration;
import org.whispersystems.textsecuregcm.configuration.RetryConfiguration;
import org.whispersystems.textsecuregcm.util.TestcontainersImages;
public class RedisServerExtension implements BeforeAllCallback, BeforeEachCallback, AfterEachCallback, ExtensionContext.Store.CloseableResource {
@@ -65,8 +64,7 @@ public class RedisServerExtension implements BeforeAllCallback, BeforeEachCallba
redisClientResources.mutate(),
getRedisURI(),
Duration.ofSeconds(2),
circuitBreakerConfig,
new RetryConfiguration());
circuitBreakerConfig);
faultTolerantRedisClient.useConnection(connection -> connection.sync().flushall(FlushMode.SYNC));
}