You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by na...@apache.org on 2020/09/28 04:41:57 UTC
[hadoop-ozone] branch master updated: HDDS-4263. ReplicatiomManager
shouldn't consider origin node Id for CLOSED containers. (#1438)
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 <ba...@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-unsubscribe@hadoop.apache.org
For additional commands, e-mail: ozone-commits-help@hadoop.apache.org