You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by si...@apache.org on 2026/10/18 02:03:22 UTC

(ozone) branch master updated: HDDS-16908. Fix flaky double buffer metrics assertions (#11504)

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

smengcl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new d23655bf0a4 HDDS-16908. Fix flaky double buffer metrics assertions (#11504)
d23655bf0a4 is described below

commit d23655bf0a4cbd998654e3a11b03f23d62092c5b
Author: KUAN-HAO HUANG <10...@users.noreply.github.com>
AuthorDate: Sun Oct 18 03:03:16 2026 +0100

    HDDS-16908. Fix flaky double buffer metrics assertions (#11504)
---
 ...tOzoneManagerDoubleBufferWithDummyResponse.java | 24 +++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerDoubleBufferWithDummyResponse.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerDoubleBufferWithDummyResponse.java
index 8e244b9709d..3ecf9fddce7 100644
--- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerDoubleBufferWithDummyResponse.java
+++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerDoubleBufferWithDummyResponse.java
@@ -21,6 +21,8 @@
 import static org.apache.hadoop.ozone.OzoneConsts.TRANSACTION_INFO_KEY;
 import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.BUCKET_TABLE;
 import static org.apache.ozone.test.GenericTestUtils.waitFor;
+import static org.apache.ozone.test.MetricsAsserts.assertCounter;
+import static org.apache.ozone.test.MetricsAsserts.mockMetricsRecordBuilder;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -30,12 +32,14 @@
 import java.nio.file.Path;
 import java.util.Collections;
 import java.util.UUID;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.utils.TransactionInfo;
 import org.apache.hadoop.hdds.utils.db.BatchOperation;
 import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
 import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
+import org.apache.hadoop.metrics2.MetricsRecordBuilder;
 import org.apache.hadoop.ozone.om.OMMetadataManager;
 import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
 import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
@@ -108,19 +112,25 @@ public void testDoubleBufferWithDummyResponse() throws Exception {
           TermIndex.valueOf(term, trxId.incrementAndGet()));
     }
     int totalBucketCount = bucketCount + 1;
-    waitFor(() -> metrics.getTotalNumOfFlushedTransactions() == totalBucketCount,
-        100, 60000);
+    doubleBuffer.awaitFlushAsync().get(60, TimeUnit.SECONDS);
 
-    assertThat(metrics.getTotalNumOfFlushOperations()).isGreaterThan(0);
+    assertEquals(totalBucketCount, metrics.getTotalNumOfFlushedTransactions());
+
+    long flushIterations = doubleBuffer.getFlushIterationsForTesting();
+    assertThat(flushIterations).isGreaterThan(0);
+    assertEquals(flushIterations, metrics.getTotalNumOfFlushOperations());
     assertEquals(totalBucketCount, doubleBuffer.getFlushedTransactionCountForTesting());
     assertThat(metrics.getMaxNumberOfTransactionsFlushedInOneIteration()).isGreaterThan(0);
     assertEquals(totalBucketCount, omMetadataManager.countRowsInTable(
         omMetadataManager.getBucketTable()));
-    assertThat(doubleBuffer.getFlushIterationsForTesting()).isGreaterThan(0);
-    assertThat(metrics.getFlushTime().lastStat().numSamples()).isGreaterThan(0);
     assertThat(metrics.getAvgFlushTransactionsInOneIteration()).isGreaterThan(0);
-    assertEquals(totalBucketCount, (long) metrics.getQueueSize().lastStat().total());
-    assertThat(metrics.getQueueSize().lastStat().numSamples()).isGreaterThan(0);
+
+    // Use cumulative sample counts because metrics collection can reset the interval statistics.
+    MetricsRecordBuilder recordBuilder = mockMetricsRecordBuilder();
+    metrics.getQueueSize().snapshot(recordBuilder, true);
+    metrics.getFlushTime().snapshot(recordBuilder, true);
+    assertCounter("QueueSizeNumOps", flushIterations, recordBuilder);
+    assertCounter("FlushTimeNumOps", flushIterations, recordBuilder);
 
     // Assert there is only instance of OM Double Metrics.
     OzoneManagerDoubleBufferMetrics metricsCopy =


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org