From 4d03514142295e676674781473451157d576bf90 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Fri, 31 Jul 2020 17:29:57 -0400 Subject: [PATCH] Add a command for clearing the messages cache cluster. --- .../textsecuregcm/WhisperServerService.java | 2 ++ .../ClearMessagesCacheClusterCommand.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/workers/ClearMessagesCacheClusterCommand.java diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 2b1ef6737..1a924a2f7 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -155,6 +155,7 @@ import org.whispersystems.textsecuregcm.websocket.DeadLetterHandler; import org.whispersystems.textsecuregcm.websocket.ProvisioningConnectListener; import org.whispersystems.textsecuregcm.websocket.WebSocketAccountAuthenticator; import org.whispersystems.textsecuregcm.workers.CertificateCommand; +import org.whispersystems.textsecuregcm.workers.ClearMessagesCacheClusterCommand; import org.whispersystems.textsecuregcm.workers.DeleteUserCommand; import org.whispersystems.textsecuregcm.workers.VacuumCommand; import org.whispersystems.textsecuregcm.workers.ZkParamsCommand; @@ -187,6 +188,7 @@ public class WhisperServerService extends Application("accountdb", "accountsdb.xml") { @Override diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/workers/ClearMessagesCacheClusterCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/workers/ClearMessagesCacheClusterCommand.java new file mode 100644 index 000000000..895949d04 --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/workers/ClearMessagesCacheClusterCommand.java @@ -0,0 +1,20 @@ +package org.whispersystems.textsecuregcm.workers; + +import io.dropwizard.cli.ConfiguredCommand; +import io.dropwizard.setup.Bootstrap; +import net.sourceforge.argparse4j.inf.Namespace; +import org.whispersystems.textsecuregcm.WhisperServerConfiguration; +import org.whispersystems.textsecuregcm.redis.FaultTolerantRedisCluster; + +public class ClearMessagesCacheClusterCommand extends ConfiguredCommand { + + public ClearMessagesCacheClusterCommand() { + super("clearmessagescluster", "remove all keys from messages cache cluster"); + } + + @Override + protected void run(final Bootstrap bootstrap, final Namespace namespace, final WhisperServerConfiguration config) { + final FaultTolerantRedisCluster messagesCacheCluster = new FaultTolerantRedisCluster("messages_cluster", config.getMessageCacheConfiguration().getRedisClusterConfiguration().getUrls(), config.getMessageCacheConfiguration().getRedisClusterConfiguration().getTimeout(), config.getMessageCacheConfiguration().getRedisClusterConfiguration().getCircuitBreakerConfiguration()); + messagesCacheCluster.useWriteCluster(connection -> connection.sync().masters().commands().flushallAsync()); + } +}