Author: bobby Date: Mon Oct 1 18:59:55 2012 New Revision: 1392519 URL: http://svn.apache.org/viewvc?rev=1392519&view=rev Log: svn merge -c 1382119 FIXES: HADOOP-8775. MR2 distcp permits non-positive value to -bandwidth option which causes job never to complete. Contributed by Sandy Ryza. Modified: hadoop/common/branches/branch-0.23/hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/OptionsParser.java hadoop/common/branches/branch-0.23/hadoop-tools/hadoop-distcp/src/test/java/org/apache/hadoop/tools/TestOptionsParser.java Modified: hadoop/common/branches/branch-0.23/hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/OptionsParser.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/OptionsParser.java?rev=1392519&r1=1392518&r2=1392519&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/OptionsParser.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/OptionsParser.java Mon Oct 1 18:59:55 2012 @@ -156,6 +156,10 @@ public class OptionsParser { try { Integer mapBandwidth = Integer.parseInt( getVal(command, DistCpOptionSwitch.BANDWIDTH.getSwitch()).trim()); + if (mapBandwidth.intValue() <= 0) { + throw new IllegalArgumentException("Bandwidth specified is not positive: " + + mapBandwidth); + } option.setMapBandwidth(mapBandwidth); } catch (NumberFormatException e) { throw new IllegalArgumentException("Bandwidth specified is invalid: " + Modified: hadoop/common/branches/branch-0.23/hadoop-tools/hadoop-distcp/src/test/java/org/apache/hadoop/tools/TestOptionsParser.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-tools/hadoop-distcp/src/test/java/org/apache/hadoop/tools/TestOptionsParser.java?rev=1392519&r1=1392518&r2=1392519&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-tools/hadoop-distcp/src/test/java/org/apache/hadoop/tools/TestOptionsParser.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-tools/hadoop-distcp/src/test/java/org/apache/hadoop/tools/TestOptionsParser.java Mon Oct 1 18:59:55 2012 @@ -110,6 +110,24 @@ public class TestOptionsParser { "hdfs://localhost:8020/target/"}); Assert.assertEquals(options.getMapBandwidth(), 11); } + + @Test(expected=IllegalArgumentException.class) + public void testParseNonPositiveBandwidth() { + OptionsParser.parse(new String[] { + "-bandwidth", + "-11", + "hdfs://localhost:8020/source/first", + "hdfs://localhost:8020/target/"}); + } + + @Test(expected=IllegalArgumentException.class) + public void testParseZeroBandwidth() { + OptionsParser.parse(new String[] { + "-bandwidth", + "0", + "hdfs://localhost:8020/source/first", + "hdfs://localhost:8020/target/"}); + } @Test public void testParseSkipCRC() {