You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by jo...@apache.org on 2022/08/08 11:45:12 UTC
[sling-org-apache-sling-commons-metrics] branch master updated: SLING-11502 expose a method to unregister a metric (#7)
This is an automated email from the ASF dual-hosted git repository.
joerghoh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-metrics.git
The following commit(s) were added to refs/heads/master by this push:
new 72f00e5 SLING-11502 expose a method to unregister a metric (#7)
72f00e5 is described below
commit 72f00e5afb48452a32e78fea6695322370b2e930
Author: Jörg Hoh <jo...@users.noreply.github.com>
AuthorDate: Mon Aug 8 13:45:09 2022 +0200
SLING-11502 expose a method to unregister a metric (#7)
---
.../org/apache/sling/commons/metrics/MetricsService.java | 14 ++++++++++++++
.../commons/metrics/internal/BundleMetricsMapper.java | 3 ++-
.../metrics/internal/InternalMetricsServiceFactory.java | 5 +++++
.../sling/commons/metrics/internal/MetricsServiceImpl.java | 6 ++++++
.../org/apache/sling/commons/metrics/package-info.java | 2 +-
.../sling/commons/metrics/internal/MetricServiceTest.java | 12 ++++++++++++
6 files changed, 40 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/sling/commons/metrics/MetricsService.java b/src/main/java/org/apache/sling/commons/metrics/MetricsService.java
index f737e86..60f69e3 100644
--- a/src/main/java/org/apache/sling/commons/metrics/MetricsService.java
+++ b/src/main/java/org/apache/sling/commons/metrics/MetricsService.java
@@ -63,6 +63,11 @@ public interface MetricsService {
public <T> Gauge<T> gauge(String name, Supplier<T> supplier) {
return null;
}
+
+ @Override
+ public boolean unregister(String name) {
+ return false;
+ }
};
/**
@@ -121,5 +126,14 @@ public interface MetricsService {
* or null if this metric cannot be adapted to the specified type.
*/
<A> A adaptTo(Class<A> type);
+
+
+ /**
+ * Unregister a metric by its name
+ * @param name the name of the metric
+ * @return true if the metric was correctly unregistered, false otherwise.
+ */
+ public boolean unregister (String name);
+
}
diff --git a/src/main/java/org/apache/sling/commons/metrics/internal/BundleMetricsMapper.java b/src/main/java/org/apache/sling/commons/metrics/internal/BundleMetricsMapper.java
index f19bc8d..c10d344 100644
--- a/src/main/java/org/apache/sling/commons/metrics/internal/BundleMetricsMapper.java
+++ b/src/main/java/org/apache/sling/commons/metrics/internal/BundleMetricsMapper.java
@@ -51,13 +51,14 @@ class BundleMetricsMapper implements ObjectNameFactory{
metricToBundleMapping.putIfAbsent(name, bundle);
}
- public void unregister(Set<String> registeredNames) {
+ public boolean unregister(Set<String> registeredNames) {
for (String name : registeredNames){
registry.remove(name);
metricToBundleMapping.remove(name);
metricsService.remove(name);
}
log.debug("Removed metrics for {}", registeredNames);
+ return true;
}
@Override
diff --git a/src/main/java/org/apache/sling/commons/metrics/internal/InternalMetricsServiceFactory.java b/src/main/java/org/apache/sling/commons/metrics/internal/InternalMetricsServiceFactory.java
index 5411df8..7056931 100644
--- a/src/main/java/org/apache/sling/commons/metrics/internal/InternalMetricsServiceFactory.java
+++ b/src/main/java/org/apache/sling/commons/metrics/internal/InternalMetricsServiceFactory.java
@@ -107,5 +107,10 @@ class InternalMetricsServiceFactory implements ServiceFactory<MetricsService> {
return delegate.gauge(name, supplier);
}
+ @Override
+ public boolean unregister(String name) {
+ return metricsMapper.unregister(Collections.singleton(name));
+ }
+
}
}
diff --git a/src/main/java/org/apache/sling/commons/metrics/internal/MetricsServiceImpl.java b/src/main/java/org/apache/sling/commons/metrics/internal/MetricsServiceImpl.java
index e9c00ed..4387394 100644
--- a/src/main/java/org/apache/sling/commons/metrics/internal/MetricsServiceImpl.java
+++ b/src/main/java/org/apache/sling/commons/metrics/internal/MetricsServiceImpl.java
@@ -137,6 +137,12 @@ public class MetricsServiceImpl implements MetricsService {
}
return null;
}
+
+ @Override
+ public boolean unregister (String name) {
+ return registry.remove(name);
+ }
+
void remove(String name) {
metrics.remove(name);
diff --git a/src/main/java/org/apache/sling/commons/metrics/package-info.java b/src/main/java/org/apache/sling/commons/metrics/package-info.java
index 13586eb..3fa3d08 100644
--- a/src/main/java/org/apache/sling/commons/metrics/package-info.java
+++ b/src/main/java/org/apache/sling/commons/metrics/package-info.java
@@ -22,7 +22,7 @@
*
* @version 1.0
*/
-@Version("1.3.0")
+@Version("1.4.0")
package org.apache.sling.commons.metrics;
diff --git a/src/test/java/org/apache/sling/commons/metrics/internal/MetricServiceTest.java b/src/test/java/org/apache/sling/commons/metrics/internal/MetricServiceTest.java
index 12a44c8..c031e1d 100644
--- a/src/test/java/org/apache/sling/commons/metrics/internal/MetricServiceTest.java
+++ b/src/test/java/org/apache/sling/commons/metrics/internal/MetricServiceTest.java
@@ -176,6 +176,18 @@ public class MetricServiceTest {
reg.unregister();
assertFalse(getRegistry().getGauges().containsKey("foo"));
}
+
+
+ @Test
+ public void unregisterMetric() {
+ activate();
+ Gauge<Long> gauge = service.gauge("gauge",() -> 42L);
+ assertNotNull(gauge);
+ assertTrue(getRegistry().getGauges().containsKey("gauge"));
+ service.unregister("gauge");
+ assertFalse(getRegistry().getGauges().containsKey("gauge"));
+ }
+
private MetricRegistry getRegistry(){
return context.getService(MetricRegistry.class);