You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by as...@apache.org on 2016/02/11 08:59:41 UTC

[07/50] hadoop git commit: HADOOP-12772. NetworkTopologyWithNodeGroup.getNodeGroup() can loop infinitely for invalid 'loc' values. Contributed by Kuhu Shukla.

HADOOP-12772. NetworkTopologyWithNodeGroup.getNodeGroup() can loop infinitely for invalid 'loc' values. Contributed by Kuhu Shukla.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/49e176c2
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/49e176c2
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/49e176c2

Branch: refs/heads/yarn-2877
Commit: 49e176c29f95c179c0f6b07d4d582e6a771a96bd
Parents: 9086dd5
Author: Kihwal Lee <ki...@apache.org>
Authored: Fri Feb 5 15:46:25 2016 -0600
Committer: Kihwal Lee <ki...@apache.org>
Committed: Fri Feb 5 15:47:14 2016 -0600

----------------------------------------------------------------------
 hadoop-common-project/hadoop-common/CHANGES.txt      |  3 +++
 .../hadoop/net/NetworkTopologyWithNodeGroup.java     |  7 ++++++-
 .../main/java/org/apache/hadoop/net/NodeBase.java    |  9 ++++++++-
 .../hadoop/net/TestNetworkTopologyWithNodeGroup.java | 15 ++++++++++++++-
 4 files changed, 31 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/49e176c2/hadoop-common-project/hadoop-common/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt
index b1514d7..13568e2 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -1718,6 +1718,9 @@ Release 2.7.3 - UNRELEASED
 
     HADOOP-12761. incremental maven build is not really incremental (sjlee)
 
+    HADOOP-12772. NetworkTopologyWithNodeGroup.getNodeGroup() can loop
+    infinitely for invalid 'loc' values (Kuhu Shukla via kihwal)
+
 Release 2.7.2 - 2016-01-25
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/49e176c2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopologyWithNodeGroup.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopologyWithNodeGroup.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopologyWithNodeGroup.java
index 72031aa..8ebe846 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopologyWithNodeGroup.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetworkTopologyWithNodeGroup.java
@@ -101,7 +101,12 @@ public class NetworkTopologyWithNodeGroup extends NetworkTopology {
           return null;
         } else {
           // may be a leaf node
-          return getNodeGroup(node.getNetworkLocation());
+          if(!(node.getNetworkLocation() == null ||
+              node.getNetworkLocation().isEmpty())) {
+            return getNodeGroup(node.getNetworkLocation());
+          } else {
+            return NodeBase.ROOT;
+          }
         }
       } else {
         // not in cluster map, don't handle it

http://git-wip-us.apache.org/repos/asf/hadoop/blob/49e176c2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NodeBase.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NodeBase.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NodeBase.java
index 9f40eea..b136297 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NodeBase.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NodeBase.java
@@ -127,7 +127,14 @@ public class NodeBase implements Node {
    * is not {@link #PATH_SEPARATOR}
    */
   public static String normalize(String path) {
-    if (path == null || path.length() == 0) return ROOT;
+    if (path == null) {
+      throw new IllegalArgumentException(
+          "Network Location is null ");
+    }
+
+    if (path.length() == 0) {
+      return ROOT;
+    }
     
     if (path.charAt(0) != PATH_SEPARATOR) {
       throw new IllegalArgumentException(

http://git-wip-us.apache.org/repos/asf/hadoop/blob/49e176c2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetworkTopologyWithNodeGroup.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetworkTopologyWithNodeGroup.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetworkTopologyWithNodeGroup.java
index 15bd9fe..c2c528a 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetworkTopologyWithNodeGroup.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetworkTopologyWithNodeGroup.java
@@ -178,7 +178,20 @@ public class TestNetworkTopologyWithNodeGroup {
       assertTrue(frequency.get(key) > 0 || key == dataNodes[0]);
     }
   }
-  
+
+  @Test
+  public void testNodeGroup() throws Exception {
+    String res = cluster.getNodeGroup("");
+    assertTrue("NodeGroup should be NodeBase.ROOT for empty location",
+        res.equals(NodeBase.ROOT));
+    try {
+      cluster.getNodeGroup(null);
+    } catch (IllegalArgumentException e) {
+      assertTrue("Null Network Location should throw exception!",
+          e.getMessage().contains("Network Location is null"));
+    }
+  }
+
   /**
    * This test checks that adding a node with invalid topology will be failed 
    * with an exception to show topology is invalid.