diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementCapacity.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementCapacity.java index afb9e1b1f973..1128d1703176 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementCapacity.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementCapacity.java @@ -135,7 +135,7 @@ public DatanodeDetails chooseNode(List healthyNodes) { getNodeManager().getNodeStat(firstNodeDetails); SCMNodeMetric secondNodeMetric = getNodeManager().getNodeStat(secondNodeDetails); - datanodeDetails = firstNodeMetric.isGreater(secondNodeMetric.get()) + datanodeDetails = !firstNodeMetric.isGreater(secondNodeMetric.get()) ? firstNodeDetails : secondNodeDetails; } healthyNodes.remove(datanodeDetails); diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/MockNodeManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/MockNodeManager.java index f0ecd7885bff..83a6b6243f9d 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/MockNodeManager.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/MockNodeManager.java @@ -750,7 +750,8 @@ public void addContainer(DatanodeDetails datanodeDetails, long size) { SCMNodeStat stat = this.nodeMetricMap.get(datanodeDetails); if (stat != null) { aggregateStat.subtract(stat); - stat.getCapacity().add(size); + stat.getScmUsed().add(size); + stat.getRemaining().subtract(size); aggregateStat.add(stat); nodeMetricMap.put(datanodeDetails, stat); } @@ -766,7 +767,8 @@ public void delContainer(DatanodeDetails datanodeDetails, long size) { SCMNodeStat stat = this.nodeMetricMap.get(datanodeDetails); if (stat != null) { aggregateStat.subtract(stat); - stat.getCapacity().subtract(size); + stat.getScmUsed().subtract(size); + stat.getRemaining().add(size); aggregateStat.add(stat); nodeMetricMap.put(datanodeDetails, stat); } diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementCapacity.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementCapacity.java index ae304028fce6..bc88e9763fbd 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementCapacity.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementCapacity.java @@ -148,10 +148,10 @@ public void chooseDatanodes() throws SCMException { } - //datanode 4 has less space. Should be selected less times. - Assert.assertTrue(selectedCount.get(datanodes.get(3)) > selectedCount + //datanode 6 has more space than datanode 3 and datanode 4. + Assert.assertTrue(selectedCount.get(datanodes.get(3)) < selectedCount .get(datanodes.get(6))); - Assert.assertTrue(selectedCount.get(datanodes.get(4)) > selectedCount + Assert.assertTrue(selectedCount.get(datanodes.get(4)) < selectedCount .get(datanodes.get(6))); } } \ No newline at end of file diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/placement/TestContainerPlacement.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/placement/TestContainerPlacement.java index 5ec7db635f51..f1870e03976c 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/placement/TestContainerPlacement.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/placement/TestContainerPlacement.java @@ -85,8 +85,8 @@ public void testCapacityPlacementYieldsBetterDataDistribution() throws null, true, null); for (int x = 0; x < opsCount; x++) { - long containerSize = random.nextInt(100) * OzoneConsts.GB; - long metadataSize = random.nextInt(100) * OzoneConsts.GB; + long containerSize = random.nextInt(10) * OzoneConsts.GB; + long metadataSize = random.nextInt(10) * OzoneConsts.GB; List nodesCapacity = capacityPlacer.chooseDatanodes(new ArrayList<>(), null, nodesRequired, metadataSize, containerSize);