This is an automated email from the ASF dual-hosted git repository. sammichen pushed a commit to branch ozone-0.6.0 in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git
commit 4aa6087050c6d3324f7808098d3e15c6acac46e9 Author: Sammi Chen <[email protected]> AuthorDate: Mon Jul 13 14:38:34 2020 +0800 HDDS-3921. IllegalArgumentException triggered in SCMContainerPlacemen… (#1162) (cherry picked from commit 59771684d25f3f75ce4d97bc877335e9e5897e03) --- .../apache/hadoop/hdds/scm/container/ReplicationManager.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 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 617e231..7a25068 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 @@ -512,7 +512,7 @@ public class ReplicationManager */ private void handleUnderReplicatedContainer(final ContainerInfo container, final Set<ContainerReplica> replicas) { - LOG.debug("Handling underreplicated container: {}", + LOG.debug("Handling under-replicated container: {}", container.getContainerID()); try { final ContainerID id = container.containerID(); @@ -543,14 +543,18 @@ public class ReplicationManager List<DatanodeDetails> targetReplicas = new ArrayList<>(source); // Then add any pending additions targetReplicas.addAll(replicationInFlight); - - int delta = replicationFactor - getReplicaCount(id, replicas); final ContainerPlacementStatus placementStatus = containerPlacement.validateContainerPlacement( targetReplicas, replicationFactor); + int delta = replicationFactor - getReplicaCount(id, replicas); final int misRepDelta = placementStatus.misReplicationCount(); final int replicasNeeded = delta < misRepDelta ? misRepDelta : delta; + if (replicasNeeded <= 0) { + LOG.debug("Container {} meets replication requirement with " + + "inflight replicas", id); + return; + } final List<DatanodeDetails> excludeList = replicas.stream() .map(ContainerReplica::getDatanodeDetails) @@ -611,7 +615,7 @@ public class ReplicationManager final ContainerID id = container.containerID(); final int replicationFactor = container.getReplicationFactor().getNumber(); - // Dont consider inflight replication while calculating excess here. + // Don't consider inflight replication while calculating excess here. int excess = replicas.size() - replicationFactor - inflightDeletion.getOrDefault(id, Collections.emptyList()).size(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
