浏览代码

HADOOP-16385. Namenode crashes with 'RedundancyMonitor thread received Runtime exception'. Contributed by Ayush Saxena.

Inigo Goiri 5 年之前
父节点
当前提交
aa9f0850e8

+ 5 - 4
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopology.java

@@ -569,10 +569,11 @@ public class NetworkTopology {
   private Node chooseRandom(final InnerNode parentNode,
   private Node chooseRandom(final InnerNode parentNode,
       final Node excludedScopeNode, final Collection<Node> excludedNodes,
       final Node excludedScopeNode, final Collection<Node> excludedNodes,
       final int totalInScopeNodes, final int availableNodes) {
       final int totalInScopeNodes, final int availableNodes) {
-    Preconditions.checkArgument(
-        totalInScopeNodes >= availableNodes && availableNodes > 0, String
-            .format("%d should >= %d, and both should be positive.",
-                totalInScopeNodes, availableNodes));
+    if (totalInScopeNodes < availableNodes) {
+      LOG.warn("Total Nodes in scope : {} are less than Available Nodes : {}",
+          totalInScopeNodes, availableNodes);
+      return null;
+    }
     if (excludedNodes == null || excludedNodes.isEmpty()) {
     if (excludedNodes == null || excludedNodes.isEmpty()) {
       // if there are no excludedNodes, randomly choose a node
       // if there are no excludedNodes, randomly choose a node
       final int index = r.nextInt(totalInScopeNodes);
       final int index = r.nextInt(totalInScopeNodes);