Start and stop all lifecycle-managed objects in `CrawlAccountsCommand`
This commit is contained in:
parent
7dce183170
commit
6d81f69785
|
@ -5,11 +5,7 @@
|
|||
|
||||
package org.whispersystems.textsecuregcm.metrics;
|
||||
|
||||
import com.codahale.metrics.MetricRegistry;
|
||||
import com.codahale.metrics.SharedMetricRegistries;
|
||||
import io.dropwizard.lifecycle.JettyManaged;
|
||||
import io.dropwizard.lifecycle.setup.LifecycleEnvironment;
|
||||
import io.dropwizard.metrics.ScheduledReporterManager;
|
||||
import io.dropwizard.setup.Environment;
|
||||
import io.micrometer.core.instrument.Meter;
|
||||
import io.micrometer.core.instrument.Metrics;
|
||||
|
@ -90,41 +86,4 @@ public class MetricsUtil {
|
|||
GarbageCollectionGauges.registerMetrics();
|
||||
}
|
||||
|
||||
/**
|
||||
* For use in commands where {@link JettyManaged} doesn't apply
|
||||
*
|
||||
* @see io.dropwizard.metrics.MetricsFactory#configure(LifecycleEnvironment, MetricRegistry)
|
||||
*/
|
||||
public static void startManagedReporters(Environment environment) {
|
||||
environment.lifecycle().getManagedObjects().forEach(managedObject -> {
|
||||
if (managedObject instanceof JettyManaged jettyManaged) {
|
||||
if (jettyManaged.getManaged() instanceof ScheduledReporterManager scheduledReporterManager) {
|
||||
try {
|
||||
scheduledReporterManager.start();
|
||||
} catch (final Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* For use in commands where {@link JettyManaged} doesn't apply
|
||||
*
|
||||
* @see io.dropwizard.metrics.MetricsFactory#configure(LifecycleEnvironment, MetricRegistry)
|
||||
*/
|
||||
public static void stopManagedReporters(final Environment environment) {
|
||||
environment.lifecycle().getManagedObjects().forEach(lifeCycle -> {
|
||||
if (lifeCycle instanceof JettyManaged jettyManaged) {
|
||||
if (jettyManaged.getManaged() instanceof ScheduledReporterManager scheduledReporterManager) {
|
||||
try {
|
||||
scheduledReporterManager.stop();
|
||||
} catch (final Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import net.sourceforge.argparse4j.inf.ArgumentParserException;
|
|||
import net.sourceforge.argparse4j.inf.ArgumentType;
|
||||
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.configuration.dynamic.DynamicConfiguration;
|
||||
|
@ -39,12 +40,13 @@ public class CrawlAccountsCommand extends EnvironmentCommand<WhisperServerConfig
|
|||
private static final String CRAWL_TYPE = "crawlType";
|
||||
private static final String WORKER_COUNT = "workers";
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(CrawlAccountsCommand.class);
|
||||
|
||||
public enum CrawlType implements ArgumentType<CrawlType> {
|
||||
GENERAL_PURPOSE,
|
||||
ACCOUNT_CLEANER,
|
||||
;
|
||||
|
||||
|
||||
@Override
|
||||
public CrawlType convert(final ArgumentParser parser, final Argument arg, final String value)
|
||||
throws ArgumentParserException {
|
||||
|
@ -142,7 +144,14 @@ public class CrawlAccountsCommand extends EnvironmentCommand<WhisperServerConfig
|
|||
}
|
||||
};
|
||||
|
||||
MetricsUtil.startManagedReporters(environment);
|
||||
environment.lifecycle().getManagedObjects().forEach(managedObject -> {
|
||||
try {
|
||||
managedObject.start();
|
||||
} catch (final Exception e) {
|
||||
logger.error("Failed to start managed object", e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
|
||||
try {
|
||||
crawler.crawlAllAccounts();
|
||||
|
@ -150,6 +159,12 @@ public class CrawlAccountsCommand extends EnvironmentCommand<WhisperServerConfig
|
|||
LoggerFactory.getLogger(CrawlAccountsCommand.class).error("Error crawling accounts", e);
|
||||
}
|
||||
|
||||
MetricsUtil.stopManagedReporters(environment);
|
||||
environment.lifecycle().getManagedObjects().forEach(managedObject -> {
|
||||
try {
|
||||
managedObject.stop();
|
||||
} catch (final Exception e) {
|
||||
logger.error("Failed to stop managed object", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue