HDFS-6796. Improve the argument check during balancer command line parsing. Contributed by Benoy Antony
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1615107 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
397c882362
commit
7e12b1912f
|
@ -340,6 +340,9 @@ Release 2.6.0 - UNRELEASED
|
||||||
HDFS-6798. Add test case for incorrect data node condition during
|
HDFS-6798. Add test case for incorrect data node condition during
|
||||||
balancing. (Benoy Antony via Arpit Agarwal)
|
balancing. (Benoy Antony via Arpit Agarwal)
|
||||||
|
|
||||||
|
HDFS-6796. Improve the argument check during balancer command line parsing.
|
||||||
|
(Benoy Antony via szetszwo)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
HDFS-6690. Deduplicate xattr names in memory. (wang)
|
HDFS-6690. Deduplicate xattr names in memory. (wang)
|
||||||
|
|
|
@ -1761,9 +1761,9 @@ public class Balancer {
|
||||||
if (args != null) {
|
if (args != null) {
|
||||||
try {
|
try {
|
||||||
for(int i = 0; i < args.length; i++) {
|
for(int i = 0; i < args.length; i++) {
|
||||||
checkArgument(args.length >= 2, "args = " + Arrays.toString(args));
|
|
||||||
if ("-threshold".equalsIgnoreCase(args[i])) {
|
if ("-threshold".equalsIgnoreCase(args[i])) {
|
||||||
i++;
|
checkArgument(++i < args.length,
|
||||||
|
"Threshold value is missing: args = " + Arrays.toString(args));
|
||||||
try {
|
try {
|
||||||
threshold = Double.parseDouble(args[i]);
|
threshold = Double.parseDouble(args[i]);
|
||||||
if (threshold < 1 || threshold > 100) {
|
if (threshold < 1 || threshold > 100) {
|
||||||
|
@ -1778,7 +1778,8 @@ public class Balancer {
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
} else if ("-policy".equalsIgnoreCase(args[i])) {
|
} else if ("-policy".equalsIgnoreCase(args[i])) {
|
||||||
i++;
|
checkArgument(++i < args.length,
|
||||||
|
"Policy value is missing: args = " + Arrays.toString(args));
|
||||||
try {
|
try {
|
||||||
policy = BalancingPolicy.parse(args[i]);
|
policy = BalancingPolicy.parse(args[i]);
|
||||||
} catch(IllegalArgumentException e) {
|
} catch(IllegalArgumentException e) {
|
||||||
|
@ -1786,16 +1787,26 @@ public class Balancer {
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
} else if ("-exclude".equalsIgnoreCase(args[i])) {
|
} else if ("-exclude".equalsIgnoreCase(args[i])) {
|
||||||
i++;
|
checkArgument(++i < args.length,
|
||||||
|
"List of nodes to exclude | -f <filename> is missing: args = "
|
||||||
|
+ Arrays.toString(args));
|
||||||
if ("-f".equalsIgnoreCase(args[i])) {
|
if ("-f".equalsIgnoreCase(args[i])) {
|
||||||
nodesTobeExcluded = Util.getHostListFromFile(args[++i]);
|
checkArgument(++i < args.length,
|
||||||
|
"File containing nodes to exclude is not specified: args = "
|
||||||
|
+ Arrays.toString(args));
|
||||||
|
nodesTobeExcluded = Util.getHostListFromFile(args[i]);
|
||||||
} else {
|
} else {
|
||||||
nodesTobeExcluded = Util.parseHostList(args[i]);
|
nodesTobeExcluded = Util.parseHostList(args[i]);
|
||||||
}
|
}
|
||||||
} else if ("-include".equalsIgnoreCase(args[i])) {
|
} else if ("-include".equalsIgnoreCase(args[i])) {
|
||||||
i++;
|
checkArgument(++i < args.length,
|
||||||
|
"List of nodes to include | -f <filename> is missing: args = "
|
||||||
|
+ Arrays.toString(args));
|
||||||
if ("-f".equalsIgnoreCase(args[i])) {
|
if ("-f".equalsIgnoreCase(args[i])) {
|
||||||
nodesTobeIncluded = Util.getHostListFromFile(args[++i]);
|
checkArgument(++i < args.length,
|
||||||
|
"File containing nodes to include is not specified: args = "
|
||||||
|
+ Arrays.toString(args));
|
||||||
|
nodesTobeIncluded = Util.getHostListFromFile(args[i]);
|
||||||
} else {
|
} else {
|
||||||
nodesTobeIncluded = Util.parseHostList(args[i]);
|
nodesTobeIncluded = Util.parseHostList(args[i]);
|
||||||
}
|
}
|
||||||
|
@ -1804,12 +1815,8 @@ public class Balancer {
|
||||||
+ Arrays.toString(args));
|
+ Arrays.toString(args));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!nodesTobeExcluded.isEmpty() && !nodesTobeIncluded.isEmpty()) {
|
checkArgument(nodesTobeExcluded.isEmpty() || nodesTobeIncluded.isEmpty(),
|
||||||
System.err.println(
|
"-exclude and -include options cannot be specified together.");
|
||||||
"-exclude and -include options cannot be specified together.");
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
"-exclude and -include options cannot be specified together.");
|
|
||||||
}
|
|
||||||
} catch(RuntimeException e) {
|
} catch(RuntimeException e) {
|
||||||
printUsage(System.err);
|
printUsage(System.err);
|
||||||
throw e;
|
throw e;
|
||||||
|
|
|
@ -854,13 +854,42 @@ public class TestBalancer {
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
parameters = new String[] { "-threshold 1 -policy" };
|
parameters = new String[] {"-threshold", "1", "-policy"};
|
||||||
try {
|
try {
|
||||||
Balancer.Cli.parse(parameters);
|
Balancer.Cli.parse(parameters);
|
||||||
fail(reason);
|
fail(reason);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
parameters = new String[] {"-threshold", "1", "-include"};
|
||||||
|
try {
|
||||||
|
Balancer.Cli.parse(parameters);
|
||||||
|
fail(reason);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
parameters = new String[] {"-threshold", "1", "-exclude"};
|
||||||
|
try {
|
||||||
|
Balancer.Cli.parse(parameters);
|
||||||
|
fail(reason);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
parameters = new String[] {"-include", "-f"};
|
||||||
|
try {
|
||||||
|
Balancer.Cli.parse(parameters);
|
||||||
|
fail(reason);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
parameters = new String[] {"-exclude", "-f"};
|
||||||
|
try {
|
||||||
|
Balancer.Cli.parse(parameters);
|
||||||
|
fail(reason);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
parameters = new String[] {"-include", "testnode1", "-exclude", "testnode2"};
|
parameters = new String[] {"-include", "testnode1", "-exclude", "testnode2"};
|
||||||
try {
|
try {
|
||||||
Balancer.Cli.parse(parameters);
|
Balancer.Cli.parse(parameters);
|
||||||
|
|
Loading…
Reference in New Issue