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

Russole 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 60ce9947960 HDDS-16619. Intermittent failure in 
TestReconAsPassiveScm.testDatanodeRegistrationAndReports (#11341)
60ce9947960 is described below

commit 60ce99479602186e0ec95e19669ba0ce4a7aec87
Author: Russole Chen <[email protected]>
AuthorDate: Sat Oct 3 00:17:34 2026 +0800

    HDDS-16619. Intermittent failure in 
TestReconAsPassiveScm.testDatanodeRegistrationAndReports (#11341)
---
 .../hadoop/ozone/recon/TestReconAsPassiveScm.java  | 28 ++++++++++++----------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git 
a/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconAsPassiveScm.java
 
b/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconAsPassiveScm.java
index 1b47f972382..ab60b072c75 100644
--- 
a/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconAsPassiveScm.java
+++ 
b/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconAsPassiveScm.java
@@ -24,11 +24,10 @@
 import static 
org.apache.hadoop.ozone.container.ozoneimpl.TestOzoneContainer.runTestOzoneContainerViaDataNode;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 
+import java.util.List;
 import java.util.Optional;
 import org.apache.hadoop.hdds.client.RatisReplicationConfig;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
@@ -39,7 +38,6 @@
 import org.apache.hadoop.hdds.scm.node.NodeManager;
 import org.apache.hadoop.hdds.scm.pipeline.Pipeline;
 import org.apache.hadoop.hdds.scm.pipeline.PipelineManager;
-import org.apache.hadoop.hdds.scm.pipeline.PipelineNotFoundException;
 import org.apache.hadoop.hdds.scm.server.OzoneStorageContainerManager;
 import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
 import org.apache.hadoop.ozone.MiniOzoneCluster;
@@ -91,16 +89,22 @@ public void testDatanodeRegistrationAndReports() throws 
Exception {
     PipelineManager reconPipelineManager = reconScm.getPipelineManager();
     PipelineManager scmPipelineManager = scm.getPipelineManager();
 
-    LambdaTestUtils.await(60000, 5000,
-        () -> (reconPipelineManager.getPipelines().size() >= 4));
-
-    // Verify if Recon has all the pipelines from SCM.
-    scmPipelineManager.getPipelines().forEach(p -> {
-      try {
-        assertNotNull(reconPipelineManager.getPipeline(p.getId()));
-      } catch (PipelineNotFoundException e) {
-        fail();
+    // SCM and Recon update their pipeline state asynchronously. Validate the
+    // complete SCM snapshot inside the retry loop so a pipeline created after
+    // Recon reaches the expected count does not cause a one-shot failure.
+    LambdaTestUtils.await(60000, 5000, () -> {
+      List<Pipeline> scmPipelines = scmPipelineManager.getPipelines();
+      if (scmPipelines.size() < 4) {
+        return false;
+      }
+      for (Pipeline pipeline : scmPipelines) {
+        Pipeline reconPipeline =
+            reconPipelineManager.getPipeline(pipeline.getId());
+        if (reconPipeline == null) {
+          return false;
+        }
       }
+      return true;
     });
 
     // Verify we can never create a pipeline in Recon.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to