diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index c78803c2d..e4251936f 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -143,6 +143,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.ClearCacheClusterCommand; import org.whispersystems.textsecuregcm.workers.DeleteUserCommand; import org.whispersystems.textsecuregcm.workers.VacuumCommand; import org.whispersystems.textsecuregcm.workers.ZkParamsCommand; @@ -173,6 +174,7 @@ public class WhisperServerService extends Application("accountdb", "accountsdb.xml") { @Override diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/workers/ClearCacheClusterCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/workers/ClearCacheClusterCommand.java new file mode 100644 index 000000000..02a03263b --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/workers/ClearCacheClusterCommand.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 ClearCacheClusterCommand extends ConfiguredCommand { + + public ClearCacheClusterCommand() { + super("clearcache", "remove all keys from cache cluster"); + } + + @Override + protected void run(final Bootstrap bootstrap, final Namespace namespace, final WhisperServerConfiguration config) { + final FaultTolerantRedisCluster cacheCluster = new FaultTolerantRedisCluster("main_cache_cluster", config.getCacheClusterConfiguration().getUrls(), config.getCacheClusterConfiguration().getTimeout(), config.getCacheClusterConfiguration().getCircuitBreakerConfiguration()); + cacheCluster.useWriteCluster(connection -> connection.sync().flushall()); + } +}