HADOOP-12772. NetworkTopologyWithNodeGroup.getNodeGroup() can loop infinitely for invalid 'loc' values. Contributed by Kuhu Shukla.
This commit is contained in:
parent
9086dd58c3
commit
49e176c29f
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue