diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementRackAware.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementRackAware.java index 4f07024f16db..4d880345ec4f 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementRackAware.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementRackAware.java @@ -386,6 +386,9 @@ protected int getMaxReplicasPerRack(int numReplicas, int numberOfRacks) { @Override protected int getRequiredRackCount(int numReplicas) { - return REQUIRED_RACKS; + int racks = networkTopology != null + ? networkTopology.getNumOfNodes(networkTopology.getMaxLevel() - 1) + : 1; + return Math.min(REQUIRED_RACKS, racks); } }