ChenSammi commented on a change in pull request #2591:
URL: https://github.com/apache/ozone/pull/2591#discussion_r698129289
##########
File path:
hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementRackAware.java
##########
@@ -524,4 +527,28 @@ public void
testvalidateContainerPlacementSingleRackCluster() {
assertTrue(stat.isPolicySatisfied());
assertEquals(0, stat.misReplicationCount());
}
+
+ @Test
+ public void testOutOfServiceNodesNotSelected() {
+ // Set all the nodes to out of service
+ for (DatanodeInfo dn : dnInfos) {
+ dn.setNodeStatus(new NodeStatus(DECOMMISSIONED, HEALTHY));
+ }
+
+ for (int i=0; i<10; i++) {
+ // Set a random DN to in_service and ensure it is always picked
+ int index = new Random().nextInt(dnInfos.size());
+ dnInfos.get(index).setNodeStatus(NodeStatus.inServiceHealthy());
+ try {
+ List<DatanodeDetails> datanodeDetails =
+ policy.chooseDatanodes(null, null, 1, 0, 0);
+ Assert.assertEquals(dnInfos.get(index), datanodeDetails.get(0));
+ } catch (SCMException e) {
+ // If we get SCMException: No satisfied datanode to meet the ... this
is
Review comment:
The networkTopology doesn't have the node healthy information currently.
There is chance that chooseDatanodes will throw exception after 3 internal
retries that it cannot find a proper node that is healthy if there are two many
unhealthy nodes in the cluster. One improvement I can think of is add the the
healthy status and storage space full status into the NetworkTopology. And I
agree with @sodonnel , we can discuss it in another JIRA.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]