This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
commit 73c0482315c38d52602ee031d121932e437d10db Author: Robert Munteanu <[email protected]> AuthorDate: Mon Mar 16 15:49:42 2020 +0100 metrics-osgi: remove dropwizard metrics on deactivation --- .../impl/dropwizard/DropwizardMetricsListener.java | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/osgi-metrics/consumers/src/main/java/org/apache/sling/metrics/osgi/consumers/impl/dropwizard/DropwizardMetricsListener.java b/osgi-metrics/consumers/src/main/java/org/apache/sling/metrics/osgi/consumers/impl/dropwizard/DropwizardMetricsListener.java index 33f659d..ceaf918 100644 --- a/osgi-metrics/consumers/src/main/java/org/apache/sling/metrics/osgi/consumers/impl/dropwizard/DropwizardMetricsListener.java +++ b/osgi-metrics/consumers/src/main/java/org/apache/sling/metrics/osgi/consumers/impl/dropwizard/DropwizardMetricsListener.java @@ -16,6 +16,9 @@ */ package org.apache.sling.metrics.osgi.consumers.impl.dropwizard; +import java.util.ArrayList; +import java.util.List; + import org.apache.sling.metrics.osgi.StartupMetrics; import org.apache.sling.metrics.osgi.StartupMetricsListener; import org.osgi.service.component.annotations.Component; @@ -25,6 +28,7 @@ import org.osgi.service.metatype.annotations.Designate; import org.osgi.service.metatype.annotations.ObjectClassDefinition; import com.codahale.metrics.Gauge; +import com.codahale.metrics.Metric; import com.codahale.metrics.MetricRegistry; @Component @@ -48,20 +52,30 @@ public class DropwizardMetricsListener implements StartupMetricsListener { private int serviceRestartThreshold; private long slowBundleThresholdMillis; + private List<String> registeredMetricNames = new ArrayList<>(); protected void activate(Config cfg) { this.serviceRestartThreshold = cfg.service_restart_threshold(); this.slowBundleThresholdMillis = cfg.slow_bundle_threshold_millis(); } + + protected void deactivate() { + registeredMetricNames.forEach( m -> registry.remove(m) ); + } @Override public void onStartupComplete(StartupMetrics event) { - registry.register(APPLICATION_STARTUP_GAUGE_NAME, (Gauge<Long>) () -> event.getStartupTime().toMillis() ); + register(APPLICATION_STARTUP_GAUGE_NAME, (Gauge<Long>) () -> event.getStartupTime().toMillis() ); event.getBundleStartDurations().stream() .filter( bsd -> bsd.getStartedAfter().toMillis() >= slowBundleThresholdMillis ) - .forEach( bsd -> registry.register(BUNDLE_STARTUP_GAUGE_NAME_PREFIX + bsd.getSymbolicName(), (Gauge<Long>) () -> bsd.getStartedAfter().toMillis())); + .forEach( bsd -> register(BUNDLE_STARTUP_GAUGE_NAME_PREFIX + bsd.getSymbolicName(), (Gauge<Long>) () -> bsd.getStartedAfter().toMillis())); event.getServiceRestarts().stream() .filter( src -> src.getServiceRestarts() >= serviceRestartThreshold ) - .forEach( src -> registry.register(SERVICE_RESTART_GAUGE_NAME_PREFIX + src.getServiceIdentifier(), (Gauge<Integer>) src::getServiceRestarts) ); + .forEach( src -> register(SERVICE_RESTART_GAUGE_NAME_PREFIX + src.getServiceIdentifier(), (Gauge<Integer>) src::getServiceRestarts) ); + } + + private void register(String name, Metric metric) { + registry.register(name, metric); + registeredMetricNames.add(name); } }
