Author: harsh Date: Tue Jan 15 13:47:53 2013 New Revision: 1433412 URL: http://svn.apache.org/viewvc?rev=1433412&view=rev Log: MAPREDUCE-4678. Running the Pentomino example with defaults throws java.lang.NegativeArraySizeException. Contributed by Chris McConnell. (harsh)
Modified: hadoop/common/branches/branch-2/hadoop-mapreduce-project/CHANGES.txt hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/DistributedPentomino.java Modified: hadoop/common/branches/branch-2/hadoop-mapreduce-project/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-mapreduce-project/CHANGES.txt?rev=1433412&r1=1433411&r2=1433412&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-mapreduce-project/CHANGES.txt (original) +++ hadoop/common/branches/branch-2/hadoop-mapreduce-project/CHANGES.txt Tue Jan 15 13:47:53 2013 @@ -539,6 +539,9 @@ Release 0.23.6 - UNRELEASED MAPREDUCE-4934. Maven RAT plugin is not checking all source files (tgraves) + MAPREDUCE-4678. Running the Pentomino example with defaults throws + java.lang.NegativeArraySizeException (Chris McConnell via harsh) + Release 0.23.5 - UNRELEASED INCOMPATIBLE CHANGES Modified: hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/DistributedPentomino.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/DistributedPentomino.java?rev=1433412&r1=1433411&r2=1433412&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/DistributedPentomino.java (original) +++ hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/DistributedPentomino.java Tue Jan 15 13:47:53 2013 @@ -167,16 +167,30 @@ public class DistributedPentomino extend } public int run(String[] args) throws Exception { + Configuration conf = getConf(); if (args.length == 0) { - System.out.println("pentomino <output>"); + System.out.println("Usage: pentomino <output> [-depth #] [-height #] [-width #]"); ToolRunner.printGenericCommandUsage(System.out); return 2; } - - Configuration conf = getConf(); - int width = conf.getInt(Pentomino.WIDTH, PENT_WIDTH); - int height = conf.getInt(Pentomino.HEIGHT, PENT_HEIGHT); - int depth = conf.getInt(Pentomino.DEPTH, PENT_DEPTH); + // check for passed parameters, otherwise use defaults + int width = PENT_WIDTH; + int height = PENT_HEIGHT; + int depth = PENT_DEPTH; + for (int i = 0; i < args.length; i++) { + if (args[i].equalsIgnoreCase("-depth")) { + depth = Integer.parseInt(args[i++].trim()); + } else if (args[i].equalsIgnoreCase("-height")) { + height = Integer.parseInt(args[i++].trim()); + } else if (args[i].equalsIgnoreCase("-width") ) { + width = Integer.parseInt(args[i++].trim()); + } + } + // now set the values within conf for M/R tasks to read, this + // will ensure values are set preventing MAPREDUCE-4678 + conf.setInt(Pentomino.WIDTH, width); + conf.setInt(Pentomino.HEIGHT, height); + conf.setInt(Pentomino.DEPTH, depth); Class<? extends Pentomino> pentClass = conf.getClass(Pentomino.CLASS, OneSidedPentomino.class, Pentomino.class); int numMaps = conf.getInt(MRJobConfig.NUM_MAPS, DEFAULT_MAPS);