From 9a449ac0758a87ff7028b04afcc226f800571e39 Mon Sep 17 00:00:00 2001 From: David Mollitor Date: Fri, 22 Mar 2019 10:27:17 +0000 Subject: [PATCH] HADOOP-16196. Path Parameterize Comparable. Author: David Mollitor (cherry picked from commit 246ab77f281614b2206bfb1dae70a8dec62147a7) --- .../src/main/java/org/apache/hadoop/fs/Path.java | 10 +++++----- .../mapreduce/task/reduce/MergeManagerImpl.java | 13 ++++++------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Path.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Path.java index b6244d6a365..b48a3513f71 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Path.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Path.java @@ -40,7 +40,8 @@ import org.apache.hadoop.conf.Configuration; @Stringable @InterfaceAudience.Public @InterfaceStability.Stable -public class Path implements Comparable, Serializable, ObjectInputValidation { +public class Path + implements Comparable, Serializable, ObjectInputValidation { /** * The directory separator, a slash. @@ -490,11 +491,10 @@ public class Path implements Comparable, Serializable, ObjectInputValidation { } @Override - public int compareTo(Object o) { - Path that = (Path)o; - return this.uri.compareTo(that.uri); + public int compareTo(Path o) { + return this.uri.compareTo(o.uri); } - + /** * Returns the number of elements in this path. * @return the number of elements in this path diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/task/reduce/MergeManagerImpl.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/task/reduce/MergeManagerImpl.java index f01b24cc1e7..58c2686b279 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/task/reduce/MergeManagerImpl.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/task/reduce/MergeManagerImpl.java @@ -860,16 +860,15 @@ public class MergeManagerImpl implements MergeManager { } @Override - public int compareTo(Object obj) { - if(obj instanceof CompressAwarePath) { + public int compareTo(Path obj) { + if (obj instanceof CompressAwarePath) { CompressAwarePath compPath = (CompressAwarePath) obj; - if(this.compressedSize < compPath.getCompressedSize()) { - return -1; - } else if (this.getCompressedSize() > compPath.getCompressedSize()) { - return 1; - } + int c = Long.compare(this.compressedSize, compPath.compressedSize); // Not returning 0 here so that objects with the same size (but // different paths) are still added to the TreeSet. + if (c != 0) { + return c; + } } return super.compareTo(obj); }