HDFS-3482. hdfs balancer throws ArrayIndexOutOfBoundsException if option is specified without values. Contributed by Madhukara Phatak.

Submitted by:	Madhukara Phatak.
Reviewed by:	Uma Maheswara Rao G.


git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1358812 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Uma Maheswara Rao G 2012-07-08 18:39:09 +00:00
parent 52f5c70330
commit 07295260b1
3 changed files with 38 additions and 0 deletions

View File

@ -177,6 +177,9 @@ Trunk (unreleased changes)
HDFS-3541. Deadlock between recovery, xceiver and packet responder (Vinay via umamahesh) HDFS-3541. Deadlock between recovery, xceiver and packet responder (Vinay via umamahesh)
HDFS-3482. hdfs balancer throws ArrayIndexOutOfBoundsException
if option is specified without values. ( Madhukara Phatak via umamahesh)
Branch-2 ( Unreleased changes ) Branch-2 ( Unreleased changes )
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -74,6 +74,7 @@
import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.util.StringUtils;
import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner; import org.apache.hadoop.util.ToolRunner;
import static com.google.common.base.Preconditions.checkArgument;
/** <p>The balancer is a tool that balances disk space usage on an HDFS cluster /** <p>The balancer is a tool that balances disk space usage on an HDFS cluster
* when some datanodes become full or when new empty nodes join the cluster. * when some datanodes become full or when new empty nodes join the cluster.
@ -1501,6 +1502,7 @@ static Parameters parse(String[] args) {
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++; i++;
try { try {

View File

@ -453,6 +453,39 @@ private void testBalancerDefaultConstructor(Configuration conf,
} }
} }
/**
* Test parse method in Balancer#Cli class with wrong number of params
*/
@Test
public void testBalancerCliParseWithWrongParams() {
String parameters[] = new String[] { "-threshold" };
String reason =
"IllegalArgumentException is expected when value is not specified";
try {
Balancer.Cli.parse(parameters);
fail(reason);
} catch (IllegalArgumentException e) {
}
parameters = new String[] { "-policy" };
try {
Balancer.Cli.parse(parameters);
fail(reason);
} catch (IllegalArgumentException e) {
}
parameters = new String[] { "-threshold 1 -policy" };
try {
Balancer.Cli.parse(parameters);
fail(reason);
} catch (IllegalArgumentException e) {
}
}
/** /**
* @param args * @param args
*/ */