mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 05:08:03 +01:00
Standardize circuit breaker/retry names
This commit is contained in:
committed by
Jon Chambers
parent
8060d74899
commit
cd957e0347
@@ -51,7 +51,7 @@ public class DisconnectionRequestManager extends RedisPubSubAdapter<byte[], byte
|
||||
private final Executor listenerEventExecutor;
|
||||
private final ScheduledExecutorService retryExecutor;
|
||||
|
||||
private static final String RETRY_NAME = DisconnectionRequestManager.class.getSimpleName();
|
||||
private static final String RETRY_NAME = ResilienceUtil.name(DisconnectionRequestManager.class);
|
||||
|
||||
private static final Duration SUBSCRIBE_RETRY_DELAY = Duration.ofSeconds(5);
|
||||
|
||||
|
||||
@@ -219,14 +219,17 @@ public class FaultTolerantHttpClient {
|
||||
retryConfigBuilder.retryOnException(retryOnException);
|
||||
}
|
||||
|
||||
retry = ResilienceUtil.getRetryRegistry().retry(name, retryConfigBuilder.build());
|
||||
retry = ResilienceUtil.getRetryRegistry()
|
||||
.retry(ResilienceUtil.name(FaultTolerantHttpClient.class, name), retryConfigBuilder.build());
|
||||
} else {
|
||||
retry = null;
|
||||
}
|
||||
|
||||
final String circuitBreakerName = ResilienceUtil.name(FaultTolerantHttpClient.class, name);
|
||||
|
||||
final CircuitBreaker circuitBreaker = circuitBreakerConfigurationName != null
|
||||
? ResilienceUtil.getCircuitBreakerRegistry().circuitBreaker(name, circuitBreakerConfigurationName)
|
||||
: ResilienceUtil.getCircuitBreakerRegistry().circuitBreaker(name);
|
||||
? ResilienceUtil.getCircuitBreakerRegistry().circuitBreaker(circuitBreakerName, circuitBreakerConfigurationName)
|
||||
: ResilienceUtil.getCircuitBreakerRegistry().circuitBreaker(circuitBreakerName);
|
||||
|
||||
return new FaultTolerantHttpClient(httpClients, requestTimeout, retryExecutor, retry, circuitBreaker);
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ public class DynamicRateLimiter implements RateLimiter {
|
||||
|
||||
private final Clock clock;
|
||||
|
||||
private static final String RETRY_NAME = DynamicRateLimiter.class.getSimpleName();
|
||||
private static final String RETRY_NAME = ResilienceUtil.name(DynamicRateLimiter.class);
|
||||
|
||||
public DynamicRateLimiter(
|
||||
final String name,
|
||||
|
||||
@@ -41,7 +41,7 @@ public class ProvisioningManager extends RedisPubSubAdapter<byte[], byte[]> impl
|
||||
private static final String RECEIVE_PROVISIONING_MESSAGE_COUNTER_NAME =
|
||||
name(ProvisioningManager.class, "receiveProvisioningMessage");
|
||||
|
||||
private static final String RETRY_NAME = ProvisioningManager.class.getSimpleName();
|
||||
private static final String RETRY_NAME = ResilienceUtil.name(ProvisioningManager.class);
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ProvisioningManager.class);
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ public class PushNotificationScheduler implements Managed {
|
||||
|
||||
private final AtomicBoolean running = new AtomicBoolean(false);
|
||||
|
||||
private static final String RETRY_NAME = PushNotificationScheduler.class.getSimpleName();
|
||||
private static final String RETRY_NAME = ResilienceUtil.name(PushNotificationScheduler.class);
|
||||
|
||||
class NotificationWorker implements Runnable {
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ public class FaultTolerantRedisClient {
|
||||
}
|
||||
|
||||
private static String getCircuitBreakerName(final String name) {
|
||||
return FaultTolerantRedisClient.class.getSimpleName() + "/" + name;
|
||||
return ResilienceUtil.name(FaultTolerantRedisClient.class, name);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
||||
@@ -99,7 +99,9 @@ public class LettuceShardCircuitBreaker implements NettyCustomizer {
|
||||
// In some cases, like the default connection, the remote address includes the DNS hostname, which we want to exclude.
|
||||
shardAddress = StringUtils.substringAfter(remoteAddress.toString(), "/");
|
||||
|
||||
final String circuitBreakerName = "%s-%s/%s".formatted(LettuceShardCircuitBreaker.class.getSimpleName(), clusterName, shardAddress);
|
||||
final String circuitBreakerName =
|
||||
ResilienceUtil.name(LettuceShardCircuitBreaker.class, "%s/%s".formatted(clusterName, shardAddress));
|
||||
|
||||
final Map<String, String> tags = Map.of(
|
||||
CLUSTER_TAG_NAME, clusterName,
|
||||
SHARD_ADDRESS_TAG_NAME, shardAddress);
|
||||
|
||||
@@ -85,10 +85,10 @@ import org.whispersystems.textsecuregcm.redis.FaultTolerantRedisClient;
|
||||
import org.whispersystems.textsecuregcm.redis.FaultTolerantRedisClusterClient;
|
||||
import org.whispersystems.textsecuregcm.securestorage.SecureStorageClient;
|
||||
import org.whispersystems.textsecuregcm.securevaluerecovery.SecureValueRecoveryClient;
|
||||
import org.whispersystems.textsecuregcm.util.ResilienceUtil;
|
||||
import org.whispersystems.textsecuregcm.util.ExceptionUtils;
|
||||
import org.whispersystems.textsecuregcm.util.Pair;
|
||||
import org.whispersystems.textsecuregcm.util.RegistrationIdValidator;
|
||||
import org.whispersystems.textsecuregcm.util.ResilienceUtil;
|
||||
import org.whispersystems.textsecuregcm.util.SystemMapper;
|
||||
import org.whispersystems.textsecuregcm.util.Util;
|
||||
import reactor.core.publisher.Flux;
|
||||
@@ -118,7 +118,7 @@ public class AccountsManager extends RedisPubSubAdapter<String, String> implemen
|
||||
private static final String TIMESTAMP_BASED_TRANSFER_ARCHIVE_KEY_COUNTER_NAME = name(AccountsManager.class, "timestampRedisKeyCounter");
|
||||
private static final String REGISTRATION_ID_BASED_TRANSFER_ARCHIVE_KEY_COUNTER_NAME = name(AccountsManager.class,"registrationIdRedisKeyCounter");
|
||||
|
||||
private static final String RETRY_NAME = AccountsManager.class.getSimpleName();
|
||||
private static final String RETRY_NAME = ResilienceUtil.name(AccountsManager.class);
|
||||
|
||||
private static final Duration SUBSCRIBE_RETRY_DELAY = Duration.ofSeconds(5);
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ public class MessagesCache {
|
||||
private final Counter sharedMrmDataKeyRemovedCounter = Metrics.counter(
|
||||
name(MessagesCache.class, "sharedMrmKeyRemoved"));
|
||||
|
||||
static final String RETRY_NAME = MessagesCache.class.getSimpleName();
|
||||
static final String RETRY_NAME = ResilienceUtil.name(MessagesCache.class);
|
||||
|
||||
static final String NEXT_SLOT_TO_PERSIST_KEY = "user_queue_persist_slot";
|
||||
private static final byte[] LOCK_VALUE = "1".getBytes(StandardCharsets.UTF_8);
|
||||
|
||||
@@ -42,7 +42,7 @@ public class ProfilesManager {
|
||||
private final String bucket;
|
||||
private final ObjectMapper mapper;
|
||||
|
||||
private static final String RETRY_NAME = ProfilesManager.class.getSimpleName();
|
||||
private static final String RETRY_NAME = ResilienceUtil.name(ProfilesManager.class);
|
||||
|
||||
private static final String DELETE_AVATAR_COUNTER_NAME = name(ProfilesManager.class, "deleteAvatar");
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ public class AppleDeviceCheckManager {
|
||||
private final String teamId;
|
||||
private final String bundleId;
|
||||
|
||||
private static final String RETRY_NAME = AppleDeviceCheckManager.class.getSimpleName();
|
||||
private static final String RETRY_NAME = ResilienceUtil.name(AppleDeviceCheckManager.class);
|
||||
|
||||
public AppleDeviceCheckManager(
|
||||
AppleDeviceChecks appleDeviceChecks,
|
||||
|
||||
@@ -117,7 +117,8 @@ public class AppleAppStoreManager implements SubscriptionPaymentProcessor {
|
||||
|
||||
retryConfigBuilder.retryOnException(AppleAppStoreManager::shouldRetry);
|
||||
|
||||
this.retry = ResilienceUtil.getRetryRegistry().retry("appstore-retry", retryConfigBuilder.build());
|
||||
this.retry = ResilienceUtil.getRetryRegistry()
|
||||
.retry(ResilienceUtil.name(AppleAppStoreManager.class, "appstore-retry"), retryConfigBuilder.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -84,6 +84,27 @@ public class ResilienceUtil {
|
||||
.build());
|
||||
}
|
||||
|
||||
/// Generates a standardized name for a `CircuitBreaker` or `Retry`.
|
||||
///
|
||||
/// @param clazz the class to which the circuit breaker or retry belongs
|
||||
///
|
||||
/// @return a standardized name for a `CircuitBreaker` or `Retry`
|
||||
public static String name(final Class<?> clazz) {
|
||||
return name(clazz, null);
|
||||
}
|
||||
|
||||
/// Generates a standardized name for a `CircuitBreaker` or `Retry`.
|
||||
///
|
||||
/// @param clazz the class to which the circuit breaker or retry belongs
|
||||
/// @param name the name of the circuit breaker or retry; may be `null``
|
||||
///
|
||||
/// @return a standardized name for a `CircuitBreaker` or `Retry`
|
||||
public static String name(final Class<?> clazz, @Nullable final String name) {
|
||||
return name != null
|
||||
? clazz.getSimpleName() + "/" + name
|
||||
: clazz.getSimpleName();
|
||||
}
|
||||
|
||||
/// Returns a `Retry` instance with a default configuration suitable for general Redis operations.
|
||||
///
|
||||
/// @param name The name of this `Retry`. Calls to this method with the same name will return the same `Retry`
|
||||
|
||||
Reference in New Issue
Block a user