Explorar o código

HDFS-17644:Add log when a node selection is rejected by BPP UpgradeDomain (#7109)

Lei Yang hai 6 meses
pai
achega
eb1e30395b

+ 4 - 3
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockPlacementPolicyDefault.java

@@ -80,7 +80,7 @@ public class BlockPlacementPolicyDefault extends BlockPlacementPolicy {
   private static final BlockPlacementStatus ONE_RACK_PLACEMENT =
       new BlockPlacementStatusDefault(1, 1, 1);
 
-  private enum NodeNotChosenReason {
+  protected enum NodeNotChosenReason {
     NOT_IN_SERVICE("the node is not in service"),
     NODE_STALE("the node is stale"),
     NODE_TOO_BUSY("the node is too busy"),
@@ -88,7 +88,8 @@ public class BlockPlacementPolicyDefault extends BlockPlacementPolicy {
     TOO_MANY_NODES_ON_RACK("the rack has too many chosen nodes"),
     NOT_ENOUGH_STORAGE_SPACE("not enough storage space to place the block"),
     NO_REQUIRED_STORAGE_TYPE("required storage types are unavailable"),
-    NODE_SLOW("the node is too slow");
+    NODE_SLOW("the node is too slow"),
+    NODE_NOT_CONFORM_TO_UD("the node doesn't conform to upgrade domain policy");
 
     private final String text;
 
@@ -980,7 +981,7 @@ public class BlockPlacementPolicyDefault extends BlockPlacementPolicy {
     logNodeIsNotChosen(node, reason, null);
   }
 
-  private static void logNodeIsNotChosen(DatanodeDescriptor node,
+  protected static void logNodeIsNotChosen(DatanodeDescriptor node,
       NodeNotChosenReason reason, String reasonDetails) {
     assert reason != null;
     if (LOG.isDebugEnabled()) {

+ 3 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockPlacementPolicyWithUpgradeDomain.java

@@ -74,6 +74,9 @@ public class BlockPlacementPolicyWithUpgradeDomain extends
         Set<String> upgradeDomains = getUpgradeDomains(results);
         if (upgradeDomains.contains(node.getUpgradeDomain())) {
           isGoodTarget = false;
+          logNodeIsNotChosen(node, NodeNotChosenReason.NODE_NOT_CONFORM_TO_UD,
+              "(The node's upgrade domain: " + node.getUpgradeDomain() +
+                  " is already chosen)");
         }
       }
     }