You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by ad...@apache.org on 2023/02/24 19:55:36 UTC
[ozone] branch master updated: HDDS-8025. ReplicationManager: Count a container once for missing, under, mis or over replicated (#4313)
This is an automated email from the ASF dual-hosted git repository.
adoroszlai 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 0a66958755 HDDS-8025. ReplicationManager: Count a container once for missing, under, mis or over replicated (#4313)
0a66958755 is described below
commit 0a669587556089488bd89e0497460d87cf8cc766
Author: Stephen O'Donnell <st...@gmail.com>
AuthorDate: Fri Feb 24 19:55:25 2023 +0000
HDDS-8025. ReplicationManager: Count a container once for missing, under, mis or over replicated (#4313)
---
.../container/replication/health/ECReplicationCheckHandler.java | 8 +++-----
.../replication/health/RatisReplicationCheckHandler.java | 7 ++++---
.../hdds/scm/container/replication/TestReplicationManager.java | 4 ++--
.../replication/health/TestECReplicationCheckHandler.java | 4 ++--
.../replication/health/TestRatisReplicationCheckHandler.java | 2 +-
5 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ECReplicationCheckHandler.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ECReplicationCheckHandler.java
index af12875219..523d6dc18c 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ECReplicationCheckHandler.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ECReplicationCheckHandler.java
@@ -71,18 +71,16 @@ public class ECReplicationCheckHandler extends AbstractCheck {
// handler so return as unhandled so any further handlers will be tried.
return false;
}
- // TODO - should the report have a HEALTHY state, rather than just bad
- // states? It would need to be added to legacy RM too.
if (health.getHealthState()
== ContainerHealthResult.HealthState.UNDER_REPLICATED) {
- report.incrementAndSample(
- ReplicationManagerReport.HealthState.UNDER_REPLICATED, containerID);
ContainerHealthResult.UnderReplicatedHealthResult underHealth
= ((ContainerHealthResult.UnderReplicatedHealthResult) health);
if (underHealth.isUnrecoverable()) {
- // TODO - do we need a new health state for unrecoverable EC?
report.incrementAndSample(
ReplicationManagerReport.HealthState.MISSING, containerID);
+ } else {
+ report.incrementAndSample(
+ ReplicationManagerReport.HealthState.UNDER_REPLICATED, containerID);
}
if (!underHealth.isReplicatedOkAfterPending() &&
(!underHealth.isUnrecoverable()
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/RatisReplicationCheckHandler.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/RatisReplicationCheckHandler.java
index b1ef86f709..53a30f03c6 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/RatisReplicationCheckHandler.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/RatisReplicationCheckHandler.java
@@ -89,9 +89,6 @@ public class RatisReplicationCheckHandler extends AbstractCheck {
return false;
}
- report.incrementAndSample(
- ReplicationManagerReport.HealthState.UNDER_REPLICATED,
- container.containerID());
LOG.debug("Container {} is Under Replicated. isReplicatedOkAfterPending" +
" is [{}]. isUnrecoverable is [{}]. hasHealthyReplicas is [{}].",
container,
@@ -103,6 +100,10 @@ public class RatisReplicationCheckHandler extends AbstractCheck {
container.containerID());
return true;
}
+ report.incrementAndSample(
+ ReplicationManagerReport.HealthState.UNDER_REPLICATED,
+ container.containerID());
+
if (!underHealth.isReplicatedOkAfterPending() &&
underHealth.hasHealthyReplicas()) {
request.getReplicationQueue().enqueue(underHealth);
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManager.java
index b436753195..8d96520488 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManager.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManager.java
@@ -430,7 +430,7 @@ public class TestReplicationManager {
// replication list. It will be checked again on the next RM run.
Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, repReport.getStat(
+ Assert.assertEquals(0, repReport.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
Assert.assertEquals(1, repReport.getStat(
ReplicationManagerReport.HealthState.MISSING));
@@ -492,7 +492,7 @@ public class TestReplicationManager {
Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, repReport.getStat(
+ Assert.assertEquals(0, repReport.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
Assert.assertEquals(1, repReport.getStat(
ReplicationManagerReport.HealthState.MISSING));
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestECReplicationCheckHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestECReplicationCheckHandler.java
index c3fe3664ed..850e975b22 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestECReplicationCheckHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestECReplicationCheckHandler.java
@@ -271,7 +271,7 @@ public class TestECReplicationCheckHandler {
// Unrecoverable so not added to the queue
Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ Assert.assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
Assert.assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MISSING));
@@ -310,7 +310,7 @@ public class TestECReplicationCheckHandler {
// Unrecoverable so not added to the queue
Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ Assert.assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
Assert.assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MISSING));
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisReplicationCheckHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisReplicationCheckHandler.java
index deaecb0335..ca227cc164 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisReplicationCheckHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisReplicationCheckHandler.java
@@ -290,7 +290,7 @@ public class TestRatisReplicationCheckHandler {
// Unrecoverable, so not added to the queue.
Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ Assert.assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
Assert.assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MISSING));
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org