HADOOP-8775. MR2 distcp permits non-positive value to -bandwidth option which causes job never to complete. Contributed by Sandy Ryza.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1382119 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Aaron Myers 2012-09-07 18:40:30 +00:00
parent a7998921a7
commit 6ba9ff9177
3 changed files with 25 additions and 0 deletions

View File

@ -482,6 +482,9 @@ Branch-2 ( Unreleased changes )
HADOOP-8431. Running distcp wo args throws IllegalArgumentException. HADOOP-8431. Running distcp wo args throws IllegalArgumentException.
(Sandy Ryza via eli) (Sandy Ryza via eli)
HADOOP-8775. MR2 distcp permits non-positive value to -bandwidth option
which causes job never to complete. (Sandy Ryza via atm)
BREAKDOWN OF HDFS-3042 SUBTASKS BREAKDOWN OF HDFS-3042 SUBTASKS
HADOOP-8220. ZKFailoverController doesn't handle failure to become active HADOOP-8220. ZKFailoverController doesn't handle failure to become active

View File

@ -156,6 +156,10 @@ public static DistCpOptions parse(String args[]) throws IllegalArgumentException
try { try {
Integer mapBandwidth = Integer.parseInt( Integer mapBandwidth = Integer.parseInt(
getVal(command, DistCpOptionSwitch.BANDWIDTH.getSwitch()).trim()); getVal(command, DistCpOptionSwitch.BANDWIDTH.getSwitch()).trim());
if (mapBandwidth.intValue() <= 0) {
throw new IllegalArgumentException("Bandwidth specified is not positive: " +
mapBandwidth);
}
option.setMapBandwidth(mapBandwidth); option.setMapBandwidth(mapBandwidth);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
throw new IllegalArgumentException("Bandwidth specified is invalid: " + throw new IllegalArgumentException("Bandwidth specified is invalid: " +

View File

@ -111,6 +111,24 @@ public void testParsebandwidth() {
Assert.assertEquals(options.getMapBandwidth(), 11); 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 @Test
public void testParseSkipCRC() { public void testParseSkipCRC() {
DistCpOptions options = OptionsParser.parse(new String[] { DistCpOptions options = OptionsParser.parse(new String[] {