From 62e02a49dfb3071f4f64eecc279c9794fdaee8e6 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Thu, 6 Jul 2023 11:49:41 -0400 Subject: [PATCH] Log errors from single-shot account crawlers rather than printing them to stderr --- .../AbstractSinglePassCrawlAccountsCommand.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/workers/AbstractSinglePassCrawlAccountsCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/workers/AbstractSinglePassCrawlAccountsCommand.java index 17daf1d92..d50c9bffd 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/workers/AbstractSinglePassCrawlAccountsCommand.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/workers/AbstractSinglePassCrawlAccountsCommand.java @@ -6,10 +6,13 @@ package org.whispersystems.textsecuregcm.workers; import io.dropwizard.Application; +import io.dropwizard.cli.Cli; import io.dropwizard.cli.EnvironmentCommand; import io.dropwizard.setup.Environment; import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Subparser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.whispersystems.textsecuregcm.WhisperServerConfiguration; import org.whispersystems.textsecuregcm.metrics.MetricsUtil; import org.whispersystems.textsecuregcm.storage.Account; @@ -23,6 +26,8 @@ public abstract class AbstractSinglePassCrawlAccountsCommand extends Environment private CommandDependencies commandDependencies; + private final Logger logger = LoggerFactory.getLogger(getClass()); + private static final String SEGMENT_COUNT = "segments"; public AbstractSinglePassCrawlAccountsCommand(final String name, final String description) { @@ -59,8 +64,18 @@ public abstract class AbstractSinglePassCrawlAccountsCommand extends Environment commandDependencies = CommandDependencies.build(getName(), environment, configuration); final int segments = Objects.requireNonNull(namespace.getInt(SEGMENT_COUNT)); + + logger.info("Crawling accounts with {} segments and {} processors", + segments, + Runtime.getRuntime().availableProcessors()); + crawlAccounts(commandDependencies.accountsManager().streamAllFromDynamo(segments, Schedulers.parallel())); } + @Override + public void onError(final Cli cli, final Namespace namespace, final Throwable throwable) { + logger.error("Unhandled error", throwable); + } + protected abstract void crawlAccounts(final ParallelFlux accounts); }