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:
parent
52f5c70330
commit
07295260b1
|
@ -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
|
||||||
|
|
|
@ -74,6 +74,7 @@ import org.apache.hadoop.security.token.Token;
|
||||||
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 @@ 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++;
|
i++;
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -453,6 +453,39 @@ public class TestBalancer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue