From 430325f98f1ec8524f8a8d1338fb6887cb9fe436 Mon Sep 17 00:00:00 2001 From: TieweiFang Date: Mon, 28 Oct 2024 15:32:52 +0800 Subject: [PATCH 1/2] fix --- .../doris/common/util/LocationPath.java | 14 +++++++++++++- .../paimon/PaimonFileExternalCatalog.java | 19 +++++++++++++------ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/LocationPath.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/LocationPath.java index 267e20a1f959bc..767e1705ec0c53 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/LocationPath.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/LocationPath.java @@ -131,7 +131,19 @@ private LocationPath(String originLocation, Map props, boolean c tmpLocation = convertPath ? convertToS3(tmpLocation) : tmpLocation; break; case FeConstants.FS_PREFIX_OSS: - if (isHdfsOnOssEndpoint(tmpLocation)) { + String endpoint = ""; + if (props.containsKey(OssProperties.ENDPOINT)) { + endpoint = props.get(OssProperties.ENDPOINT); + if (endpoint.startsWith(OssProperties.OSS_PREFIX)) { + // may use oss.oss-cn-beijing.aliyuncs.com + endpoint = endpoint.replace(OssProperties.OSS_PREFIX, ""); + } + } else if (props.containsKey(S3Properties.ENDPOINT)) { + endpoint = props.get(S3Properties.ENDPOINT); + } else if (props.containsKey(S3Properties.Env.ENDPOINT)) { + endpoint = props.get(S3Properties.Env.ENDPOINT); + } + if (isHdfsOnOssEndpoint(endpoint)) { this.scheme = Scheme.OSS_HDFS; } else { if (useS3EndPoint(props)) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonFileExternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonFileExternalCatalog.java index 9b956a551d5b93..e74f3deeaf501e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonFileExternalCatalog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonFileExternalCatalog.java @@ -17,9 +17,11 @@ package org.apache.doris.datasource.paimon; +import org.apache.doris.common.util.LocationPath; import org.apache.doris.datasource.property.PropertyConverter; import org.apache.doris.datasource.property.constants.CosProperties; import org.apache.doris.datasource.property.constants.ObsProperties; +import org.apache.doris.datasource.property.constants.OssProperties; import org.apache.doris.datasource.property.constants.PaimonProperties; import org.apache.logging.log4j.LogManager; @@ -53,12 +55,17 @@ protected void setPaimonCatalogOptions(Map properties, Map Date: Fri, 1 Nov 2024 16:48:28 +0800 Subject: [PATCH 2/2] fix 2 --- .../main/java/org/apache/doris/common/util/LocationPath.java | 2 +- .../java/org/apache/doris/common/util/LocationPathTest.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/LocationPath.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/LocationPath.java index 767e1705ec0c53..4604e4deabb2b7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/LocationPath.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/LocationPath.java @@ -410,7 +410,7 @@ private static String normalizedLakefsPath(String location) { } } - private FileSystemType getFileSystemType() { + public FileSystemType getFileSystemType() { FileSystemType fsType; switch (scheme) { case S3: diff --git a/fe/fe-core/src/test/java/org/apache/doris/common/util/LocationPathTest.java b/fe/fe-core/src/test/java/org/apache/doris/common/util/LocationPathTest.java index 23f052d61312b5..9d1edadd919b59 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/common/util/LocationPathTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/common/util/LocationPathTest.java @@ -19,6 +19,7 @@ import org.apache.doris.catalog.HdfsResource; import org.apache.doris.common.util.LocationPath.Scheme; +import org.apache.doris.datasource.property.constants.OssProperties; import org.apache.doris.fs.FileSystemType; import org.junit.jupiter.api.Assertions; @@ -119,13 +120,14 @@ public void testOSSLocationConvert() { Assertions.assertTrue(beLocation.startsWith("s3://")); Assertions.assertEquals(LocationPath.getFSIdentity(beLocation, null).first, FileSystemType.S3); + rangeProps.put(OssProperties.ENDPOINT, "oss-dls.aliyuncs.com"); locationPath = new LocationPath("oss://test.oss-dls.aliyuncs.com/path", rangeProps); // FE Assertions.assertTrue(locationPath.get().startsWith("oss://test.oss-dls.aliyuncs")); // BE beLocation = locationPath.toStorageLocation().toString(); Assertions.assertTrue(beLocation.startsWith("oss://test.oss-dls.aliyuncs")); - Assertions.assertEquals(LocationPath.getFSIdentity(beLocation, null).first, FileSystemType.DFS); + Assertions.assertEquals(locationPath.getFileSystemType(), FileSystemType.DFS); }