MAPREDUCE-4272. SortedRanges.Range#compareTo is not spec compliant. (Yu Gao via llu)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1425179 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Luke Lu 2012-12-21 23:08:54 +00:00
parent 043fd00a30
commit 307a46f6be
2 changed files with 9 additions and 5 deletions

View File

@ -30,6 +30,9 @@ Release 2.0.3-alpha - Unreleased
BUG FIXES
MAPREDUCE-4272. SortedRanges.Range#compareTo is not spec compliant.
(Yu Gao via llu)
MAPREDUCE-4607. Race condition in ReduceTask completion can result in Task
being incorrectly failed. (Bikas Saha via tomwhite)

View File

@ -271,7 +271,7 @@ class SortedRanges implements Writable{
}
public boolean equals(Object o) {
if(o!=null && o instanceof Range) {
if (o instanceof Range) {
Range range = (Range)o;
return startIndex==range.startIndex &&
length==range.length;
@ -285,10 +285,11 @@ class SortedRanges implements Writable{
}
public int compareTo(Range o) {
if(this.equals(o)) {
return 0;
}
return (this.startIndex > o.startIndex) ? 1:-1;
// Ensure sgn(x.compareTo(y) == -sgn(y.compareTo(x))
return this.startIndex < o.startIndex ? -1 :
(this.startIndex > o.startIndex ? 1 :
(this.length < o.length ? -1 :
(this.length > o.length ? 1 : 0)));
}
public void readFields(DataInput in) throws IOException {