From 45687513bf4663de9039763bdac13c1064374ad5 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Tue, 20 Oct 2020 11:44:53 -0400 Subject: [PATCH] Revert "Revert "Share resources between Lettuce clients."" This reverts commit 334f509be599fa6a501026e900d912ff7187e150. --- .../textsecuregcm/WhisperServerService.java | 9 ++++++--- .../redis/FaultTolerantRedisCluster.java | 5 +++-- .../workers/DeleteUserCommand.java | 19 +++++++++++-------- .../workers/GetRedisSlowlogCommand.java | 9 ++++++--- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 0fedf8db0..0b88135ae 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -40,6 +40,7 @@ import io.dropwizard.db.PooledDataSourceFactory; import io.dropwizard.jdbi3.JdbiFactory; import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Environment; +import io.lettuce.core.resource.ClientResources; import io.micrometer.core.instrument.Clock; import io.micrometer.core.instrument.Metrics; import io.micrometer.core.instrument.distribution.DistributionStatisticConfig; @@ -286,9 +287,11 @@ public class WhisperServerService extends Application keyspaceNotificationDispatchQueue = new ArrayBlockingQueue<>(10_000); Metrics.gaugeCollectionSize(name(getClass(), "keyspaceNotificationDispatchQueueSize"), Collections.emptyList(), keyspaceNotificationDispatchQueue); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisCluster.java b/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisCluster.java index 89eb3cebb..0d863b595 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisCluster.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisCluster.java @@ -13,6 +13,7 @@ import io.lettuce.core.cluster.api.StatefulRedisClusterConnection; import io.lettuce.core.cluster.event.ClusterTopologyChangedEvent; import io.lettuce.core.cluster.pubsub.StatefulRedisClusterPubSubConnection; import io.lettuce.core.codec.ByteArrayCodec; +import io.lettuce.core.resource.ClientResources; import io.lettuce.core.event.connection.ConnectionEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,9 +54,9 @@ public class FaultTolerantRedisCluster { private static final Logger log = LoggerFactory.getLogger(FaultTolerantRedisCluster.class); - public FaultTolerantRedisCluster(final String name, final RedisClusterConfiguration clusterConfiguration) { + public FaultTolerantRedisCluster(final String name, final RedisClusterConfiguration clusterConfiguration, final ClientResources clientResources) { this(name, - RedisClusterClient.create(clusterConfiguration.getUrls().stream().map(RedisURI::create).collect(Collectors.toList())), + RedisClusterClient.create(clientResources, clusterConfiguration.getUrls().stream().map(RedisURI::create).collect(Collectors.toList())), clusterConfiguration.getTimeout(), clusterConfiguration.getCircuitBreakerConfiguration(), clusterConfiguration.getRetryConfiguration()); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/workers/DeleteUserCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/workers/DeleteUserCommand.java index 05870e072..9d1b163d6 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/workers/DeleteUserCommand.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/workers/DeleteUserCommand.java @@ -5,6 +5,7 @@ import io.dropwizard.Application; import io.dropwizard.cli.EnvironmentCommand; import io.dropwizard.jdbi3.JdbiFactory; import io.dropwizard.setup.Environment; +import io.lettuce.core.resource.ClientResources; import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Subparser; import org.jdbi.v3.core.Jdbi; @@ -71,13 +72,15 @@ public class DeleteUserCommand extends EnvironmentCommand bootstrap, final Namespace namespace, final WhisperServerConfiguration config) throws Exception { final int entries = namespace.getInt("entries"); - final FaultTolerantRedisCluster cacheCluster = new FaultTolerantRedisCluster("main_cache_cluster", config.getCacheClusterConfiguration()); - final FaultTolerantRedisCluster messagesCacheCluster = new FaultTolerantRedisCluster("messages_cluster", config.getMessageCacheConfiguration().getRedisClusterConfiguration()); - final FaultTolerantRedisCluster metricsCluster = new FaultTolerantRedisCluster("metrics_cluster", config.getMetricsClusterConfiguration()); + final ClientResources redisClusterClientResources = ClientResources.builder().build(); + + final FaultTolerantRedisCluster cacheCluster = new FaultTolerantRedisCluster("main_cache_cluster", config.getCacheClusterConfiguration(), redisClusterClientResources); + final FaultTolerantRedisCluster messagesCacheCluster = new FaultTolerantRedisCluster("messages_cluster", config.getMessageCacheConfiguration().getRedisClusterConfiguration(), redisClusterClientResources); + final FaultTolerantRedisCluster metricsCluster = new FaultTolerantRedisCluster("metrics_cluster", config.getMetricsClusterConfiguration(), redisClusterClientResources); final Map> slowlogsByUri = new HashMap<>();