This is an automated email from the ASF dual-hosted git repository.
jinsongzhou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/amoro.git
The following commit(s) were added to refs/heads/master by this push:
new 7ef5325e8 [AMORO-3559] Extract abstract class for table metrics (#3560)
7ef5325e8 is described below
commit 7ef5325e84adc1efa858488589df4afdb4fe55c3
Author: Jzjsnow <[email protected]>
AuthorDate: Wed May 14 19:21:34 2025 +0800
[AMORO-3559] Extract abstract class for table metrics (#3560)
* [AMORO-3559] Extract abstract class for table metrics
* fixup! [AMORO-3559] Extract abstract class for table metrics
---------
Co-authored-by: jzjsnow <[email protected]>
---
.../amoro/server/table/AbstractTableMetrics.java | 71 ++++++++++++++++++++++
.../amoro/server/table/TableOptimizingMetrics.java | 40 ++----------
.../table/TableOrphanFilesCleaningMetrics.java | 42 ++-----------
.../amoro/server/table/TableSummaryMetrics.java | 38 ++----------
4 files changed, 83 insertions(+), 108 deletions(-)
diff --git
a/amoro-ams/src/main/java/org/apache/amoro/server/table/AbstractTableMetrics.java
b/amoro-ams/src/main/java/org/apache/amoro/server/table/AbstractTableMetrics.java
new file mode 100644
index 000000000..864c77c01
--- /dev/null
+++
b/amoro-ams/src/main/java/org/apache/amoro/server/table/AbstractTableMetrics.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.amoro.server.table;
+
+import org.apache.amoro.ServerTableIdentifier;
+import org.apache.amoro.metrics.Metric;
+import org.apache.amoro.metrics.MetricDefine;
+import org.apache.amoro.metrics.MetricKey;
+import org.apache.amoro.server.metrics.MetricRegistry;
+import org.apache.amoro.shade.guava32.com.google.common.collect.ImmutableMap;
+import org.apache.amoro.shade.guava32.com.google.common.collect.Lists;
+
+import java.util.List;
+
+public abstract class AbstractTableMetrics {
+ protected final ServerTableIdentifier identifier;
+ protected final List<MetricKey> registeredMetricKeys = Lists.newArrayList();
+ protected MetricRegistry globalRegistry;
+
+ protected AbstractTableMetrics(ServerTableIdentifier identifier) {
+ this.identifier = identifier;
+ }
+
+ protected void registerMetric(MetricRegistry registry, MetricDefine define,
Metric metric) {
+ MetricKey key =
+ registry.register(
+ define,
+ ImmutableMap.of(
+ "catalog",
+ identifier.getCatalog(),
+ "database",
+ identifier.getDatabase(),
+ "table",
+ identifier.getTableName()),
+ metric);
+ registeredMetricKeys.add(key);
+ }
+
+ public void register(MetricRegistry registry) {
+ if (globalRegistry == null) {
+ registerMetrics(registry);
+ globalRegistry = registry;
+ }
+ }
+
+ public void unregister() {
+ if (globalRegistry != null) {
+ registeredMetricKeys.forEach(globalRegistry::unregister);
+ registeredMetricKeys.clear();
+ globalRegistry = null;
+ }
+ }
+
+ protected abstract void registerMetrics(MetricRegistry registry);
+}
diff --git
a/amoro-ams/src/main/java/org/apache/amoro/server/table/TableOptimizingMetrics.java
b/amoro-ams/src/main/java/org/apache/amoro/server/table/TableOptimizingMetrics.java
index 373dcc418..4e4452eba 100644
---
a/amoro-ams/src/main/java/org/apache/amoro/server/table/TableOptimizingMetrics.java
+++
b/amoro-ams/src/main/java/org/apache/amoro/server/table/TableOptimizingMetrics.java
@@ -24,24 +24,18 @@ import static
org.apache.amoro.metrics.MetricDefine.defineGauge;
import org.apache.amoro.ServerTableIdentifier;
import org.apache.amoro.metrics.Counter;
import org.apache.amoro.metrics.Gauge;
-import org.apache.amoro.metrics.Metric;
import org.apache.amoro.metrics.MetricDefine;
-import org.apache.amoro.metrics.MetricKey;
import org.apache.amoro.optimizing.OptimizingType;
import org.apache.amoro.server.AmoroServiceConstants;
import org.apache.amoro.server.metrics.MetricRegistry;
import org.apache.amoro.server.optimizing.OptimizingStatus;
import org.apache.amoro.server.optimizing.maintainer.IcebergTableMaintainer;
-import org.apache.amoro.shade.guava32.com.google.common.collect.ImmutableMap;
-import org.apache.amoro.shade.guava32.com.google.common.collect.Lists;
import org.apache.amoro.shade.guava32.com.google.common.primitives.Longs;
import org.apache.iceberg.Snapshot;
import org.apache.iceberg.SnapshotSummary;
-import java.util.List;
-
/** Table self optimizing metrics */
-public class TableOptimizingMetrics {
+public class TableOptimizingMetrics extends AbstractTableMetrics {
/** Table is no need optimizing. */
public static final String STATUS_IDLE = "idle";
@@ -208,36 +202,18 @@ public class TableOptimizingMetrics {
private final Counter fullTotalCount = new Counter();
private final Counter fullFailedCount = new Counter();
- private final ServerTableIdentifier identifier;
-
private OptimizingStatus optimizingStatus = OptimizingStatus.IDLE;
private long statusSetTimestamp = System.currentTimeMillis();
private long lastMinorTime, lastMajorTime, lastFullTime;
private long lastNonMaintainedTime = AmoroServiceConstants.INVALID_TIME;
private long lastOptimizingTime = AmoroServiceConstants.INVALID_TIME;
- private final List<MetricKey> registeredMetricKeys = Lists.newArrayList();
- private MetricRegistry globalRegistry;
public TableOptimizingMetrics(ServerTableIdentifier identifier) {
- this.identifier = identifier;
- }
-
- private void registerMetric(MetricRegistry registry, MetricDefine define,
Metric metric) {
- MetricKey key =
- registry.register(
- define,
- ImmutableMap.of(
- "catalog",
- identifier.getCatalog(),
- "database",
- identifier.getDatabase(),
- "table",
- identifier.getTableName()),
- metric);
- registeredMetricKeys.add(key);
+ super(identifier);
}
- public void register(MetricRegistry registry) {
+ @Override
+ public void registerMetrics(MetricRegistry registry) {
if (globalRegistry == null) {
// register status duration metrics
registerMetric(
@@ -301,14 +277,6 @@ public class TableOptimizingMetrics {
}
}
- public void unregister() {
- if (globalRegistry != null) {
- registeredMetricKeys.forEach(globalRegistry::unregister);
- registeredMetricKeys.clear();
- globalRegistry = null;
- }
- }
-
/**
* Handle table self optimizing status change event.
*
diff --git
a/amoro-ams/src/main/java/org/apache/amoro/server/table/TableOrphanFilesCleaningMetrics.java
b/amoro-ams/src/main/java/org/apache/amoro/server/table/TableOrphanFilesCleaningMetrics.java
index e2e056a5f..cc6b0894b 100644
---
a/amoro-ams/src/main/java/org/apache/amoro/server/table/TableOrphanFilesCleaningMetrics.java
+++
b/amoro-ams/src/main/java/org/apache/amoro/server/table/TableOrphanFilesCleaningMetrics.java
@@ -22,28 +22,19 @@ import static
org.apache.amoro.metrics.MetricDefine.defineCounter;
import org.apache.amoro.ServerTableIdentifier;
import org.apache.amoro.metrics.Counter;
-import org.apache.amoro.metrics.Metric;
import org.apache.amoro.metrics.MetricDefine;
-import org.apache.amoro.metrics.MetricKey;
import org.apache.amoro.server.metrics.MetricRegistry;
-import org.apache.amoro.shade.guava32.com.google.common.collect.ImmutableMap;
-import org.apache.amoro.shade.guava32.com.google.common.collect.Lists;
-
-import java.util.List;
/** Table Orphan Files Cleaning metrics. */
-public class TableOrphanFilesCleaningMetrics {
-
+public class TableOrphanFilesCleaningMetrics extends AbstractTableMetrics {
private final Counter orphanDataFilesCount = new Counter();
private final Counter expectedOrphanDataFilesCount = new Counter();
private final Counter orphanMetadataFilesCount = new Counter();
private final Counter expectedOrphanMetadataFilesCount = new Counter();
- private final ServerTableIdentifier identifier;
-
public TableOrphanFilesCleaningMetrics(ServerTableIdentifier identifier) {
- this.identifier = identifier;
+ super(identifier);
}
public static final MetricDefine TABLE_ORPHAN_CONTENT_FILE_CLEANING_COUNT =
@@ -72,25 +63,8 @@ public class TableOrphanFilesCleaningMetrics {
.withTags("catalog", "database", "table")
.build();
- private final List<MetricKey> registeredMetricKeys = Lists.newArrayList();
- private MetricRegistry globalRegistry;
-
- private void registerMetric(MetricRegistry registry, MetricDefine define,
Metric metric) {
- MetricKey key =
- registry.register(
- define,
- ImmutableMap.of(
- "catalog",
- identifier.getCatalog(),
- "database",
- identifier.getDatabase(),
- "table",
- identifier.getTableName()),
- metric);
- registeredMetricKeys.add(key);
- }
-
- public void register(MetricRegistry registry) {
+ @Override
+ public void registerMetrics(MetricRegistry registry) {
if (globalRegistry == null) {
registerMetric(registry, TABLE_ORPHAN_CONTENT_FILE_CLEANING_COUNT,
orphanDataFilesCount);
registerMetric(registry, TABLE_ORPHAN_METADATA_FILE_CLEANING_COUNT,
orphanMetadataFilesCount);
@@ -115,12 +89,4 @@ public class TableOrphanFilesCleaningMetrics {
expectedOrphanMetadataFilesCount.inc(expected);
orphanMetadataFilesCount.inc(cleaned);
}
-
- public void unregister() {
- if (globalRegistry != null) {
- registeredMetricKeys.forEach(globalRegistry::unregister);
- registeredMetricKeys.clear();
- globalRegistry = null;
- }
- }
}
diff --git
a/amoro-ams/src/main/java/org/apache/amoro/server/table/TableSummaryMetrics.java
b/amoro-ams/src/main/java/org/apache/amoro/server/table/TableSummaryMetrics.java
index 646610508..07b09a40a 100644
---
a/amoro-ams/src/main/java/org/apache/amoro/server/table/TableSummaryMetrics.java
+++
b/amoro-ams/src/main/java/org/apache/amoro/server/table/TableSummaryMetrics.java
@@ -22,20 +22,15 @@ import static
org.apache.amoro.metrics.MetricDefine.defineGauge;
import org.apache.amoro.ServerTableIdentifier;
import org.apache.amoro.metrics.Gauge;
-import org.apache.amoro.metrics.Metric;
import org.apache.amoro.metrics.MetricDefine;
-import org.apache.amoro.metrics.MetricKey;
import org.apache.amoro.optimizing.plan.AbstractOptimizingEvaluator;
import org.apache.amoro.server.metrics.MetricRegistry;
-import org.apache.amoro.shade.guava32.com.google.common.collect.ImmutableMap;
import org.apache.amoro.shade.guava32.com.google.common.collect.Lists;
import org.apache.amoro.table.MixedTable;
import org.apache.amoro.table.UnkeyedTable;
-import java.util.List;
-
/** Table Summary metrics. */
-public class TableSummaryMetrics {
+public class TableSummaryMetrics extends AbstractTableMetrics {
// table summary files number metrics
public static final MetricDefine TABLE_SUMMARY_TOTAL_FILES =
@@ -132,34 +127,17 @@ public class TableSummaryMetrics {
.withTags("catalog", "database", "table")
.build();
- private final ServerTableIdentifier identifier;
- private final List<MetricKey> registeredMetricKeys = Lists.newArrayList();
private AbstractOptimizingEvaluator.PendingInput tableSummary =
new AbstractOptimizingEvaluator.PendingInput();
- private MetricRegistry globalRegistry;
private long snapshots = 0L;
public TableSummaryMetrics(ServerTableIdentifier identifier) {
- this.identifier = identifier;
- }
-
- private void registerMetric(MetricRegistry registry, MetricDefine define,
Metric metric) {
- MetricKey key =
- registry.register(
- define,
- ImmutableMap.of(
- "catalog",
- identifier.getCatalog(),
- "database",
- identifier.getDatabase(),
- "table",
- identifier.getTableName()),
- metric);
- registeredMetricKeys.add(key);
+ super(identifier);
}
- public void register(MetricRegistry registry) {
+ @Override
+ public void registerMetrics(MetricRegistry registry) {
if (globalRegistry == null) {
// register files number metrics
registerMetric(
@@ -232,14 +210,6 @@ public class TableSummaryMetrics {
}
}
- public void unregister() {
- if (globalRegistry != null) {
- registeredMetricKeys.forEach(globalRegistry::unregister);
- registeredMetricKeys.clear();
- globalRegistry = null;
- }
- }
-
public void refresh(AbstractOptimizingEvaluator.PendingInput tableSummary) {
if (tableSummary == null) {
return;