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();
}
}