Author: umamahesh
Date: Sun Jul 8 18:39:09 2012
New Revision: 1358812
URL: http://svn.apache.org/viewvc?rev=1358812&view=rev
Log:
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.
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1358812&r1=1358811&r2=1358812&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Sun Jul 8
18:39:09 2012
@@ -177,6 +177,9 @@ Trunk (unreleased changes)
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 )
INCOMPATIBLE CHANGES
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java?rev=1358812&r1=1358811&r2=1358812&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java
(original)
+++
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java
Sun Jul 8 18:39:09 2012
@@ -74,6 +74,7 @@ import org.apache.hadoop.security.token.
import org.apache.hadoop.util.StringUtils;
import org.apache.hadoop.util.Tool;
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
* when some datanodes become full or when new empty nodes join the cluster.
@@ -1501,6 +1502,7 @@ public class Balancer {
if (args != null) {
try {
for(int i = 0; i < args.length; i++) {
+ checkArgument(args.length >= 2, "args = " +
Arrays.toString(args));
if ("-threshold".equalsIgnoreCase(args[i])) {
i++;
try {
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java?rev=1358812&r1=1358811&r2=1358812&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java
(original)
+++
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java
Sun Jul 8 18:39:09 2012
@@ -454,6 +454,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
*/
public static void main(String[] args) throws Exception {