This is an automated email from the ASF dual-hosted git repository.
szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ratis.git
The following commit(s) were added to refs/heads/master by this push:
new 5912ce555 RATIS-1741. Add a removeReporterRegistration method. (#778)
5912ce555 is described below
commit 5912ce555904168ee87d7553e40c522031f96702
Author: Sumit Agrawal <[email protected]>
AuthorDate: Fri Nov 11 13:00:58 2022 +0530
RATIS-1741. Add a removeReporterRegistration method. (#778)
---
.../org/apache/ratis/metrics/MetricRegistries.java | 11 +++++++++
.../ratis/metrics/impl/MetricRegistriesImpl.java | 7 ++++++
.../ratis/metrics/TestMetricRegistriesLoader.java | 25 ++++++++++++++++++++
.../dropwizard3/Dm3MetricRegistriesImpl.java | 7 ++++++
.../dropwizard3/TestLoadDm3MetricRegistries.java | 27 ++++++++++++++++++++++
5 files changed, 77 insertions(+)
diff --git
a/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistries.java
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistries.java
index 536cdbf56..3a11213bb 100644
---
a/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistries.java
+++
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistries.java
@@ -93,10 +93,21 @@ public abstract class MetricRegistries {
* Add hook to register reporter for the metricRegistry.
*
* @param reporterRegistration Consumer to create the reporter for the
registry.
+ * @param stopReporter Consumer to stop the reporter for the registry.
*/
public abstract void addReporterRegistration(Consumer<RatisMetricRegistry>
reporterRegistration,
Consumer<RatisMetricRegistry> stopReporter);
+ /**
+ * Remove hook of reporter for the metricRegistry.
+ *
+ * @param reporterRegistration Consumer to create the reporter for the
registry.
+ * @param stopReporter Consumer to stop the reporter for the registry.
+ */
+ public void removeReporterRegistration(Consumer<RatisMetricRegistry>
reporterRegistration,
+ Consumer<RatisMetricRegistry> stopReporter) {
+ }
+
/**
* Enable jmx reporter for the metricRegistry.
*/
diff --git
a/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/MetricRegistriesImpl.java
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/MetricRegistriesImpl.java
index e4822a968..c46995921 100644
---
a/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/MetricRegistriesImpl.java
+++
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/MetricRegistriesImpl.java
@@ -113,6 +113,13 @@ public class MetricRegistriesImpl extends MetricRegistries
{
this.stopReporters.add(stopReporter);
}
+ @Override
+ public void removeReporterRegistration(Consumer<RatisMetricRegistry>
reporterRegistration,
+ Consumer<RatisMetricRegistry> stopReporter) {
+ this.reporterRegistrations.remove(reporterRegistration);
+ this.stopReporters.remove(stopReporter);
+ }
+
@Override
public void enableJmxReporter() {
addReporterRegistration(
diff --git
a/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
b/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
index d06dec8ff..0093fa759 100644
---
a/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
+++
b/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
@@ -21,6 +21,8 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.mockito.Mockito.mock;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Consumer;
import org.apache.ratis.metrics.impl.MetricRegistriesImpl;
import org.junit.Assert;
import org.junit.Test;
@@ -58,4 +60,27 @@ public class TestMetricRegistriesLoader {
Assert.assertSame(MetricRegistriesImpl.class, r.getClass());
}
+ @Test
+ public void testAddRemoveReporter() {
+ final AtomicLong cntr = new AtomicLong(0L);
+ final MetricRegistries r = MetricRegistries.global();
+ Consumer<RatisMetricRegistry> reporter = v-> cntr.incrementAndGet();
+ Consumer<RatisMetricRegistry> stopReporter = v-> cntr.incrementAndGet();
+ r.addReporterRegistration(reporter, stopReporter);
+
+ // check if add and remove of metric do reporting counter increase
+ MetricRegistryInfo info = new MetricRegistryInfo("t1", "t1", "t1", "t1");
+ r.create(info);
+ Assert.assertTrue(cntr.get() == 1);
+ r.remove(info);
+ Assert.assertTrue(cntr.get() == 2);
+
+ // after removal, add and remove of metric must not do any increase
+ r.removeReporterRegistration(reporter, stopReporter);
+ r.create(info);
+ Assert.assertTrue(cntr.get() == 2);
+ r.remove(info);
+ Assert.assertTrue(cntr.get() == 2);
+ }
+
}
diff --git
a/ratis-metrics-dropwizard3/src/main/java/org/apache/ratis/metrics/dropwizard3/Dm3MetricRegistriesImpl.java
b/ratis-metrics-dropwizard3/src/main/java/org/apache/ratis/metrics/dropwizard3/Dm3MetricRegistriesImpl.java
index 7fe4b8daa..9829e6126 100644
---
a/ratis-metrics-dropwizard3/src/main/java/org/apache/ratis/metrics/dropwizard3/Dm3MetricRegistriesImpl.java
+++
b/ratis-metrics-dropwizard3/src/main/java/org/apache/ratis/metrics/dropwizard3/Dm3MetricRegistriesImpl.java
@@ -113,6 +113,13 @@ public class Dm3MetricRegistriesImpl extends
MetricRegistries {
this.stopReporters.add(stopReporter);
}
+ @Override
+ public void removeReporterRegistration(Consumer<RatisMetricRegistry>
reporterRegistration,
+ Consumer<RatisMetricRegistry> stopReporter) {
+ this.reporterRegistrations.remove(reporterRegistration);
+ this.stopReporters.remove(stopReporter);
+ }
+
@Override
public void enableJmxReporter() {
addReporterRegistration(
diff --git
a/ratis-metrics-dropwizard3/src/test/java/org/apache/ratis/metrics/dropwizard3/TestLoadDm3MetricRegistries.java
b/ratis-metrics-dropwizard3/src/test/java/org/apache/ratis/metrics/dropwizard3/TestLoadDm3MetricRegistries.java
index dce4e2b94..92a36f5c8 100644
---
a/ratis-metrics-dropwizard3/src/test/java/org/apache/ratis/metrics/dropwizard3/TestLoadDm3MetricRegistries.java
+++
b/ratis-metrics-dropwizard3/src/test/java/org/apache/ratis/metrics/dropwizard3/TestLoadDm3MetricRegistries.java
@@ -17,8 +17,12 @@
*/
package org.apache.ratis.metrics.dropwizard3;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Consumer;
import org.apache.ratis.metrics.MetricRegistries;
import org.apache.ratis.metrics.MetricRegistriesLoader;
+import org.apache.ratis.metrics.MetricRegistryInfo;
+import org.apache.ratis.metrics.RatisMetricRegistry;
import org.junit.Assert;
import org.junit.Test;
@@ -31,4 +35,27 @@ public class TestLoadDm3MetricRegistries {
final MetricRegistries r = MetricRegistriesLoader.load();
Assert.assertSame(Dm3MetricRegistriesImpl.class, r.getClass());
}
+
+ @Test
+ public void testAddRemoveReporter() {
+ final AtomicLong cntr = new AtomicLong(0L);
+ final MetricRegistries r = Dm3MetricRegistriesImpl.global();
+ Consumer<RatisMetricRegistry> reporter = v-> cntr.incrementAndGet();
+ Consumer<RatisMetricRegistry> stopReporter = v-> cntr.incrementAndGet();
+ r.addReporterRegistration(reporter, stopReporter);
+
+ // check if add and remove of metric do reporting counter increase
+ MetricRegistryInfo info = new MetricRegistryInfo("t1", "t1", "t1", "t1");
+ r.create(info);
+ Assert.assertTrue(cntr.get() == 1);
+ r.remove(info);
+ Assert.assertTrue(cntr.get() == 2);
+
+ // after removal, add and remove of metric must not do any increase
+ r.removeReporterRegistration(reporter, stopReporter);
+ r.create(info);
+ Assert.assertTrue(cntr.get() == 2);
+ r.remove(info);
+ Assert.assertTrue(cntr.get() == 2);
+ }
}