From 8c698d8bbc4149eba9ea9beee89c123914b681e1 Mon Sep 17 00:00:00 2001 From: HuangXiao Date: Fri, 14 Aug 2026 11:58:27 +0800 Subject: [PATCH] [test] Isolate replica test metric groups Create fresh tablet server and user metric groups for each ReplicaTestBase test so reused Surefire forks cannot leak stale gauges across test classes. --- .../fluss/server/replica/ReplicaTestBase.java | 26 +++++++++++++++---- .../replica/delay/DelayedFetchLogTest.java | 3 +-- .../replica/delay/DelayedWriteTest.java | 3 +-- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/fluss-server/src/test/java/org/apache/fluss/server/replica/ReplicaTestBase.java b/fluss-server/src/test/java/org/apache/fluss/server/replica/ReplicaTestBase.java index 400d64460ab..30d8ef6cff1 100644 --- a/fluss-server/src/test/java/org/apache/fluss/server/replica/ReplicaTestBase.java +++ b/fluss-server/src/test/java/org/apache/fluss/server/replica/ReplicaTestBase.java @@ -28,6 +28,7 @@ import org.apache.fluss.metadata.TableBucket; import org.apache.fluss.metadata.TableDescriptor; import org.apache.fluss.metadata.TablePath; +import org.apache.fluss.metrics.registry.NOPMetricRegistry; import org.apache.fluss.record.MemoryLogRecords; import org.apache.fluss.rpc.RpcClient; import org.apache.fluss.rpc.gateway.CoordinatorGateway; @@ -54,8 +55,9 @@ import org.apache.fluss.server.metadata.ClusterMetadata; import org.apache.fluss.server.metadata.ServerInfo; import org.apache.fluss.server.metadata.TabletServerMetadataCache; +import org.apache.fluss.server.metrics.UserMetrics; import org.apache.fluss.server.metrics.group.BucketMetricGroup; -import org.apache.fluss.server.metrics.group.TestingMetricGroups; +import org.apache.fluss.server.metrics.group.TabletServerMetricGroup; import org.apache.fluss.server.storage.LocalDiskManager; import org.apache.fluss.server.testutils.ServerTestTags; import org.apache.fluss.server.zk.NOPErrorHandler; @@ -154,6 +156,8 @@ public class ReplicaTestBase { protected TabletServerMetadataCache serverMetadataCache; protected TestingCompletedKvSnapshotCommitter snapshotReporter; protected TestCoordinatorGateway testCoordinatorGateway; + protected TabletServerMetricGroup tabletServerMetricGroup; + private UserMetrics userMetrics; private FlussScheduler scheduler; private ExecutorService ioExecutor; @@ -217,13 +221,17 @@ public void setup(TestInfo testInfo) throws Exception { manualClock = new ManualClock(System.currentTimeMillis()); localDiskManager = LocalDiskManager.create(conf); + tabletServerMetricGroup = + new TabletServerMetricGroup(NOPMetricRegistry.INSTANCE, "fluss", "host", "rack", 0); + userMetrics = + new UserMetrics(scheduler, NOPMetricRegistry.INSTANCE, tabletServerMetricGroup); logManager = LogManager.create( conf, zkClient, scheduler, manualClock, - TestingMetricGroups.TABLET_SERVER_METRICS, + tabletServerMetricGroup, localDiskManager); logManager.startup(); @@ -232,7 +240,7 @@ public void setup(TestInfo testInfo) throws Exception { conf, zkClient, logManager, - TestingMetricGroups.TABLET_SERVER_METRICS, + tabletServerMetricGroup, localDiskManager, createTestKvFlushScheduler(conf)); kvManager.startup(); @@ -362,8 +370,8 @@ protected ReplicaManager buildReplicaManager(CoordinatorGateway coordinatorGatew coordinatorGateway, snapshotReporter, NOPErrorHandler.INSTANCE, - TestingMetricGroups.TABLET_SERVER_METRICS, - TestingMetricGroups.USER_METRICS, + tabletServerMetricGroup, + userMetrics, remoteLogManager, scannerManager, manualClock, @@ -396,6 +404,14 @@ void tearDown() throws Exception { replicaManager.shutdown(); } + if (userMetrics != null) { + userMetrics.close(); + } + + if (tabletServerMetricGroup != null) { + tabletServerMetricGroup.close(); + } + if (scannerManager != null) { scannerManager.close(); } diff --git a/fluss-server/src/test/java/org/apache/fluss/server/replica/delay/DelayedFetchLogTest.java b/fluss-server/src/test/java/org/apache/fluss/server/replica/delay/DelayedFetchLogTest.java index 73d620842dc..27af4883cd1 100644 --- a/fluss-server/src/test/java/org/apache/fluss/server/replica/delay/DelayedFetchLogTest.java +++ b/fluss-server/src/test/java/org/apache/fluss/server/replica/delay/DelayedFetchLogTest.java @@ -24,7 +24,6 @@ import org.apache.fluss.server.entity.FetchReqInfo; import org.apache.fluss.server.log.FetchParams; import org.apache.fluss.server.log.LogOffsetMetadata; -import org.apache.fluss.server.metrics.group.TestingMetricGroups; import org.apache.fluss.server.replica.ReplicaTestBase; import org.apache.fluss.server.replica.delay.DelayedFetchLog.FetchBucketStatus; @@ -162,7 +161,7 @@ private DelayedFetchLog createDelayedFetchLogRequest( replicaManager, Collections.singletonMap(tb, prevFetchBucketStatus), responseCallback, - TestingMetricGroups.TABLET_SERVER_METRICS, + tabletServerMetricGroup, null); } } diff --git a/fluss-server/src/test/java/org/apache/fluss/server/replica/delay/DelayedWriteTest.java b/fluss-server/src/test/java/org/apache/fluss/server/replica/delay/DelayedWriteTest.java index 583d9018e8d..016159a7a40 100644 --- a/fluss-server/src/test/java/org/apache/fluss/server/replica/delay/DelayedWriteTest.java +++ b/fluss-server/src/test/java/org/apache/fluss/server/replica/delay/DelayedWriteTest.java @@ -21,7 +21,6 @@ import org.apache.fluss.rpc.entity.ProduceLogResultForBucket; import org.apache.fluss.rpc.protocol.Errors; import org.apache.fluss.server.log.LogAppendInfo; -import org.apache.fluss.server.metrics.group.TestingMetricGroups; import org.apache.fluss.server.replica.Replica; import org.apache.fluss.server.replica.ReplicaTestBase; import org.apache.fluss.server.replica.delay.DelayedWrite.DelayedBucketStatus; @@ -184,6 +183,6 @@ private DelayedWrite createDelayedWrite( new DelayedWriteMetadata<>(-1, bucketStatusMap), replicaManager, callback, - TestingMetricGroups.TABLET_SERVER_METRICS); + tabletServerMetricGroup); } }