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

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


The following commit(s) were added to refs/heads/master by this push:
     new f1cdbe7  HDDS-4263. ReplicatiomManager shouldn't consider origin node 
Id for CLOSED containers. (#1438)
f1cdbe7 is described below

commit f1cdbe7508951becc4e75537469cfa1bbb5ad095
Author: maobaolong <baoloong...@tencent.com>
AuthorDate: Mon Sep 28 12:41:45 2020 +0800

    HDDS-4263. ReplicatiomManager shouldn't consider origin node Id for CLOSED 
containers. (#1438)
---
 .../hadoop/hdds/scm/container/ReplicationManager.java   | 17 ++++++++++-------
 .../hdds/scm/container/TestReplicationManager.java      |  2 +-
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
index 6b1e2af..d2899fa 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
@@ -624,17 +624,20 @@ public class ReplicationManager
               " is {}, but found {}.", id, replicationFactor,
           replicationFactor + excess);
 
+      final List<ContainerReplica> eligibleReplicas = new 
ArrayList<>(replicas);
+
       final Map<UUID, ContainerReplica> uniqueReplicas =
           new LinkedHashMap<>();
 
-      replicas.stream()
-          .filter(r -> compareState(container.getState(), r.getState()))
-          .forEach(r -> uniqueReplicas
-              .putIfAbsent(r.getOriginDatanodeId(), r));
+      if (container.getState() != LifeCycleState.CLOSED) {
+        replicas.stream()
+            .filter(r -> compareState(container.getState(), r.getState()))
+            .forEach(r -> uniqueReplicas
+                .putIfAbsent(r.getOriginDatanodeId(), r));
 
-      // Retain one healthy replica per origin node Id.
-      final List<ContainerReplica> eligibleReplicas = new 
ArrayList<>(replicas);
-      eligibleReplicas.removeAll(uniqueReplicas.values());
+        // Retain one healthy replica per origin node Id.
+        eligibleReplicas.removeAll(uniqueReplicas.values());
+      }
 
       final List<ContainerReplica> unhealthyReplicas = eligibleReplicas
           .stream()
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManager.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManager.java
index b1e27c0..b11582a 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManager.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManager.java
@@ -817,7 +817,7 @@ public class TestReplicationManager {
     final ContainerReplica replicaFour = getReplicas(
         id, State.CLOSED, 1000L, originNodeId, randomDatanodeDetails());
     final ContainerReplica replicaFive = getReplicas(
-        id, State.CLOSED, 1000L, originNodeId, randomDatanodeDetails());
+        id, State.QUASI_CLOSED, 1000L, originNodeId, randomDatanodeDetails());
 
     containerStateManager.loadContainer(container);
     containerStateManager.updateContainerReplica(id, replicaOne);


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

Reply via email to