[ https://issues.apache.org/jira/browse/MAPREDUCE-2538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13060562#comment-13060562 ]
Hadoop QA commented on MAPREDUCE-2538: -------------------------------------- -1 overall. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12485400/MAPREDUCE-2538.patch against trunk revision 1143252. +1 @author. The patch does not contain any @author tags. +1 tests included. The patch appears to include 3 new or modified tests. +1 javadoc. The javadoc tool did not generate any warning messages. +1 javac. The applied patch does not increase the total number of javac compiler warnings. +1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings. +1 release audit. The applied patch does not increase the total number of release audit warnings. -1 core tests. The patch failed these core unit tests: org.apache.hadoop.cli.TestMRCLI org.apache.hadoop.fs.TestFileSystem org.apache.hadoop.mapred.TestDebugScript -1 contrib tests. The patch failed contrib unit tests. +1 system test framework. The patch passed system test framework compile. Test results: https://builds.apache.org/job/PreCommit-MAPREDUCE-Build/436//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-MAPREDUCE-Build/436//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html Console output: https://builds.apache.org/job/PreCommit-MAPREDUCE-Build/436//console This message is automatically generated. > InputSampler.writePartitionFile() may write duplicate keys > ---------------------------------------------------------- > > Key: MAPREDUCE-2538 > URL: https://issues.apache.org/jira/browse/MAPREDUCE-2538 > Project: Hadoop Map/Reduce > Issue Type: Bug > Affects Versions: 0.20.2 > Environment: EMR. > Reporter: Michael White > Priority: Minor > Fix For: 0.23.0 > > Attachments: MAPREDUCE-2538.patch > > > InputSampler.writePartitionFile() outputs the same key multiple times if the > input samples have enough of a given key to span multiple partitions. There > is logic in the code that appears to try to avoid this, but seems incorrect: > for(int i = 1; i < numPartitions; ++i) { > int k = Math.round(stepSize * i); > while (last >= k && comparator.compare(samples[last], samples[k]) == 0) { > ++k; > } > writer.append(samples[k], nullValue); > last = k; > } > The while loop condition "last >= k" is always false. The sample comparison > after the && never occurs. > It's not entirely clear what the correct fix is. The current behavior is > arguably correct mathematically, though the while loop could be elided for > clarity. If bug MAPREDUCE-1987 were fixed, it would be less of a problem > (for me at least), since that is where the non-uniqueness causes me problems. > Alternatively, changing the while to: > "if( last >= 0) { > while (comparator.compare(samples[last], samples[k]) >= 0)) {" > or, optimized for skipping over many duplicates (but arguably less clear): > "if (last >= 0) { > while (last >= k || comparator.compare(samples[last], samples[k]) >= 0)) {" > would probably achieve what the original author intended. > Perhaps the behavior could be selected by a parameter, e.g. "boolean unique". -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira