You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by yi...@apache.org on 2022/07/29 03:04:20 UTC
[hudi] branch master updated: [HUDI-4495] Fix handling of S3 paths incompatible with java URI standards (#6237)
This is an automated email from the ASF dual-hosted git repository.
yihua pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new c39e88dcf0 [HUDI-4495] Fix handling of S3 paths incompatible with java URI standards (#6237)
c39e88dcf0 is described below
commit c39e88dcf0c196bca08aced6e16d47fc72f5e83e
Author: Udit Mehrotra <ud...@amazon.com>
AuthorDate: Thu Jul 28 20:04:14 2022 -0700
[HUDI-4495] Fix handling of S3 paths incompatible with java URI standards (#6237)
---
.../apache/hudi/common/fs/HoodieWrapperFileSystem.java | 7 +++++--
.../org/apache/hudi/common/fs/TestStorageSchemes.java | 17 +++++++++++++++++
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/hudi-common/src/main/java/org/apache/hudi/common/fs/HoodieWrapperFileSystem.java b/hudi-common/src/main/java/org/apache/hudi/common/fs/HoodieWrapperFileSystem.java
index bceea8e367..2979696be7 100644
--- a/hudi-common/src/main/java/org/apache/hudi/common/fs/HoodieWrapperFileSystem.java
+++ b/hudi-common/src/main/java/org/apache/hudi/common/fs/HoodieWrapperFileSystem.java
@@ -145,8 +145,11 @@ public class HoodieWrapperFileSystem extends FileSystem {
URI oldURI = oldPath.toUri();
URI newURI;
try {
- newURI = new URI(newScheme, oldURI.getUserInfo(), oldURI.getHost(), oldURI.getPort(), oldURI.getPath(),
- oldURI.getQuery(), oldURI.getFragment());
+ newURI = new URI(newScheme,
+ oldURI.getAuthority(),
+ oldURI.getPath(),
+ oldURI.getQuery(),
+ oldURI.getFragment());
return new CachingPath(newURI);
} catch (URISyntaxException e) {
// TODO - Better Exception handling
diff --git a/hudi-common/src/test/java/org/apache/hudi/common/fs/TestStorageSchemes.java b/hudi-common/src/test/java/org/apache/hudi/common/fs/TestStorageSchemes.java
index 85f3ce65ec..9b173254ac 100644
--- a/hudi-common/src/test/java/org/apache/hudi/common/fs/TestStorageSchemes.java
+++ b/hudi-common/src/test/java/org/apache/hudi/common/fs/TestStorageSchemes.java
@@ -18,8 +18,10 @@
package org.apache.hudi.common.fs;
+import org.apache.hadoop.fs.Path;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -54,4 +56,19 @@ public class TestStorageSchemes {
StorageSchemes.isAppendSupported("s2");
}, "Should throw exception for unsupported schemes");
}
+
+ @Test
+ public void testConversionToNewSchema() {
+ Path s3TablePath1 = new Path("s3://test.1234/table1");
+ assertEquals(s3TablePath1, HoodieWrapperFileSystem.convertPathWithScheme(s3TablePath1, "s3"));
+
+ Path s3TablePath2 = new Path("s3://1234.test/table1");
+ assertEquals(s3TablePath2, HoodieWrapperFileSystem.convertPathWithScheme(s3TablePath2, "s3"));
+
+ Path s3TablePath3 = new Path("s3://test1234/table1");
+ assertEquals(s3TablePath3, HoodieWrapperFileSystem.convertPathWithScheme(s3TablePath3, "s3"));
+
+ Path hdfsTablePath = new Path("hdfs://sandbox.foo.com:8020/test.1234/table1");
+ System.out.println(HoodieWrapperFileSystem.convertPathWithScheme(hdfsTablePath, "hdfs"));
+ }
}