This is an automated email from the ASF dual-hosted git repository.

zjureel pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new 8ee4d1a9d [core] Support remove metric groups from metric instance 
(#2062)
8ee4d1a9d is described below

commit 8ee4d1a9d0ba1e05e1b5c227778fd26ca961ce09
Author: GuojunLi <[email protected]>
AuthorDate: Thu Sep 28 13:45:47 2023 +0800

    [core] Support remove metric groups from metric instance (#2062)
    
    * [core] Support remove metric groups from metric instance
---
 .../apache/paimon/metrics/AbstractMetricGroup.java    |  1 +
 .../main/java/org/apache/paimon/metrics/Metrics.java  |  5 +++++
 .../org/apache/paimon/metrics/MetricGroupTest.java    | 19 +++++++++++--------
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git 
a/paimon-core/src/main/java/org/apache/paimon/metrics/AbstractMetricGroup.java 
b/paimon-core/src/main/java/org/apache/paimon/metrics/AbstractMetricGroup.java
index c4df417c9..78f293a50 100644
--- 
a/paimon-core/src/main/java/org/apache/paimon/metrics/AbstractMetricGroup.java
+++ 
b/paimon-core/src/main/java/org/apache/paimon/metrics/AbstractMetricGroup.java
@@ -183,6 +183,7 @@ public abstract class AbstractMetricGroup implements 
MetricGroup {
         if (!closed) {
             closed = true;
             metrics.clear();
+            Metrics.getInstance().removeGroup(this);
         }
     }
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/metrics/Metrics.java 
b/paimon-core/src/main/java/org/apache/paimon/metrics/Metrics.java
index 6161d5283..6ef28749b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/metrics/Metrics.java
+++ b/paimon-core/src/main/java/org/apache/paimon/metrics/Metrics.java
@@ -44,6 +44,11 @@ public class Metrics {
         metricGroups.add(group);
     }
 
+    /** Remove a metric group. Called when closing the corresponding 
instances, like committer. */
+    public void removeGroup(AbstractMetricGroup group) {
+        metricGroups.remove(group);
+    }
+
     /** Get metric groups. */
     public ConcurrentLinkedQueue<MetricGroup> getMetricGroups() {
         return metricGroups;
diff --git 
a/paimon-core/src/test/java/org/apache/paimon/metrics/MetricGroupTest.java 
b/paimon-core/src/test/java/org/apache/paimon/metrics/MetricGroupTest.java
index 054e1f458..24f903de9 100644
--- a/paimon-core/src/test/java/org/apache/paimon/metrics/MetricGroupTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/metrics/MetricGroupTest.java
@@ -34,14 +34,7 @@ public class MetricGroupTest {
         assertThat(group.isClosed()).isFalse();
         // these will fail is the registration is propagated
         group.counter("testcounter");
-        group.gauge(
-                "testgauge",
-                new Gauge<Object>() {
-                    @Override
-                    public Object getValue() {
-                        return null;
-                    }
-                });
+        group.gauge("testgauge", () -> null);
         assertThat(group.getGroupName()).isEqualTo("commit");
         assertThat(group.getAllTags().size()).isEqualTo(1);
         assertThat(group.getAllTags())
@@ -65,5 +58,15 @@ public class MetricGroupTest {
 
         // return the old one with the metric name collision
         assertThat(group.counter(name)).isSameAs(counter1);
+        group.close();
+    }
+
+    @Test
+    public void testAddAndRemoveMetricGroups() {
+        AbstractMetricGroup metricGroup =
+                GenericMetricGroup.createGenericMetricGroup("myTable", 
"commit");
+        
assertThat(Metrics.getInstance().getMetricGroups()).containsExactly(metricGroup);
+        metricGroup.close();
+        assertThat(Metrics.getInstance().getMetricGroups()).isEmpty();
     }
 }

Reply via email to