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