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