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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]