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

sumitagrawl 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 9553e1dd3a6 HDDS-15261. Increment UNHEALTHY count when a container 
reaches sufficient unhealthy replicas (#10260)
9553e1dd3a6 is described below

commit 9553e1dd3a606c4df6a774b5780c924ab4e15f82
Author: Sarveksha Yeshavantha Raju 
<[email protected]>
AuthorDate: Wed May 13 21:15:23 2026 +0530

    HDDS-15261. Increment UNHEALTHY count when a container reaches sufficient 
unhealthy replicas (#10260)
---
 .../health/RatisUnhealthyReplicationCheckHandler.java  |  6 ++++++
 .../TestRatisUnhealthyReplicationCheckHandler.java     | 18 ++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/RatisUnhealthyReplicationCheckHandler.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/RatisUnhealthyReplicationCheckHandler.java
index 089535aad9f..bf061bb91d9 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/RatisUnhealthyReplicationCheckHandler.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/RatisUnhealthyReplicationCheckHandler.java
@@ -105,6 +105,12 @@ public boolean handle(ContainerCheckRequest request) {
       return true;
     }
 
+    if (health.getHealthState() == 
ContainerHealthResult.HealthState.UNHEALTHY) {
+      // Container is UNHEALTHY + SUFFICIENTLY REPLICATED
+      report.incrementAndSample(ContainerHealthState.UNHEALTHY, container);
+      LOG.debug("Container {} is sufficiently replicated with all unhealthy 
replicas", container);
+    }
+    
     return false;
   }
 
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisUnhealthyReplicationCheckHandler.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisUnhealthyReplicationCheckHandler.java
index bd950471f6e..a6ccacef5ce 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisUnhealthyReplicationCheckHandler.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisUnhealthyReplicationCheckHandler.java
@@ -263,6 +263,24 @@ public void testUnderReplicatedDueToPendingDelete() {
         ContainerHealthState.UNHEALTHY_UNDER_REPLICATED));
   }
 
+  @Test
+  public void testSufficientlyReplicatedWithAllUnhealthyReplicas() {
+    ContainerInfo container = createContainerInfo(repConfig, 1L, 
HddsProtos.LifeCycleState.CLOSED);
+    Set<ContainerReplica> replicas = createReplicas(container.containerID(), 
+        ContainerReplicaProto.State.UNHEALTHY, 0, 0, 0);
+    requestBuilder.setContainerInfo(container).setContainerReplicas(replicas);
+
+    ContainerHealthResult health = 
handler.checkReplication(requestBuilder.build());
+    assertEquals(ContainerHealthResult.HealthState.UNHEALTHY, 
health.getHealthState());
+
+    assertFalse(handler.handle(requestBuilder.build()));
+    assertEquals(0, repQueue.underReplicatedQueueSize());
+    assertEquals(0, repQueue.overReplicatedQueueSize());
+    assertEquals(1, report.getStat(ContainerHealthState.UNHEALTHY));
+    assertEquals(0, 
report.getStat(ContainerHealthState.UNHEALTHY_UNDER_REPLICATED));
+    assertEquals(0, 
report.getStat(ContainerHealthState.UNHEALTHY_OVER_REPLICATED));
+  }
+
   @Test
   public void testOverReplicationWithAllUnhealthyReplicas() {
     ContainerInfo container =


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

Reply via email to