This is an automated email from the ASF dual-hosted git repository. yihua pushed a commit to branch branch-0.x in repository https://gitbox.apache.org/repos/asf/hudi.git
commit 8bc56c52d6c71f125dd00acc695d0e065141188e Author: Y Ethan Guo <[email protected]> AuthorDate: Thu Apr 18 05:51:23 2024 -0700 [HUDI-7637] Make StoragePathInfo Comparable (#11050) --- .../main/java/org/apache/hudi/storage/StoragePathInfo.java | 7 ++++++- .../org/apache/hudi/io/storage/TestStoragePathInfo.java | 13 +++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/hudi-io/src/main/java/org/apache/hudi/storage/StoragePathInfo.java b/hudi-io/src/main/java/org/apache/hudi/storage/StoragePathInfo.java index e4711bf72dd..1c1ebc32a2f 100644 --- a/hudi-io/src/main/java/org/apache/hudi/storage/StoragePathInfo.java +++ b/hudi-io/src/main/java/org/apache/hudi/storage/StoragePathInfo.java @@ -31,7 +31,7 @@ import java.io.Serializable; * with simplification based on what Hudi needs. */ @PublicAPIClass(maturity = ApiMaturityLevel.EVOLVING) -public class StoragePathInfo implements Serializable { +public class StoragePathInfo implements Serializable, Comparable<StoragePathInfo> { private final StoragePath path; private final long length; private final boolean isDirectory; @@ -109,6 +109,11 @@ public class StoragePathInfo implements Serializable { return modificationTime; } + @Override + public int compareTo(StoragePathInfo o) { + return this.getPath().compareTo(o.getPath()); + } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/hudi-io/src/test/java/org/apache/hudi/io/storage/TestStoragePathInfo.java b/hudi-io/src/test/java/org/apache/hudi/io/storage/TestStoragePathInfo.java index 72640c5e3df..95cf4d798a4 100644 --- a/hudi-io/src/test/java/org/apache/hudi/io/storage/TestStoragePathInfo.java +++ b/hudi-io/src/test/java/org/apache/hudi/io/storage/TestStoragePathInfo.java @@ -71,6 +71,19 @@ public class TestStoragePathInfo { } } + @Test + public void testCompareTo() { + StoragePathInfo pathInfo1 = new StoragePathInfo( + new StoragePath(PATH1), LENGTH, false, BLOCK_REPLICATION, BLOCK_SIZE, MODIFICATION_TIME); + StoragePathInfo pathInfo2 = new StoragePathInfo( + new StoragePath(PATH1), LENGTH + 2, false, BLOCK_REPLICATION, BLOCK_SIZE, MODIFICATION_TIME + 2L); + StoragePathInfo pathInfo3 = new StoragePathInfo( + new StoragePath(PATH2), LENGTH, false, BLOCK_REPLICATION, BLOCK_SIZE, MODIFICATION_TIME); + + assertEquals(0, pathInfo1.compareTo(pathInfo2)); + assertEquals(-1, pathInfo1.compareTo(pathInfo3)); + } + @Test public void testEquals() { StoragePathInfo pathInfo1 = new StoragePathInfo(
