This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new ae7f5d3dd39 branch-4.0: [feat](ObjectStorage)Relax endpoint validation 
for private object storage #56579 (#56642)
ae7f5d3dd39 is described below

commit ae7f5d3dd399f28ffc4daca096d69d26a35c5750
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Sep 30 22:24:36 2025 +0800

    branch-4.0: [feat](ObjectStorage)Relax endpoint validation for private 
object storage #56579 (#56642)
    
    Cherry-picked from #56579
    
    Co-authored-by: Calvin Kirs <[email protected]>
---
 .../storage/AbstractS3CompatibleProperties.java    | 37 ++++++++++-----------
 .../datasource/property/storage/OSSProperties.java | 10 +++---
 .../datasource/property/storage/S3Properties.java  |  5 +++
 .../IcebergS3TablesMetaStorePropertiesTest.java    |  8 ++---
 .../property/storage/COSPropertiesTest.java        |  6 ++--
 .../property/storage/OBSPropertyTest.java          |  2 +-
 .../property/storage/OSSPropertiesTest.java        | 30 +++++++++++++++--
 .../property/storage/S3PropertiesTest.java         | 38 ++++++++++------------
 ...t_domain_connection_and_ak_sk_correction.groovy |  2 +-
 9 files changed, 80 insertions(+), 58 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/AbstractS3CompatibleProperties.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/AbstractS3CompatibleProperties.java
index 65d42077951..844454b4a73 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/AbstractS3CompatibleProperties.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/AbstractS3CompatibleProperties.java
@@ -19,6 +19,7 @@ package org.apache.doris.datasource.property.storage;
 
 import org.apache.doris.common.UserException;
 
+import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.conf.Configuration;
@@ -131,15 +132,25 @@ public abstract class AbstractS3CompatibleProperties 
extends StorageProperties i
     public void initNormalizeAndCheckProps() {
         super.initNormalizeAndCheckProps();
         setEndpointIfPossible();
-        if (!isValidEndpoint(getEndpoint())) {
-            throw new IllegalArgumentException("Invalid endpoint: " + 
getEndpoint());
-        }
         setRegionIfPossible();
         //Allow anonymous access if both access_key and secret_key are empty
         //But not recommended for production use.
         if (StringUtils.isBlank(getAccessKey()) != 
StringUtils.isBlank(getSecretKey())) {
             throw new IllegalArgumentException("Both the access key and the 
secret key must be set.");
         }
+        if (StringUtils.isBlank(getRegion())) {
+            throw new IllegalArgumentException("Region is not set. If you are 
using a standard endpoint, the region "
+                    + "will be detected automatically. Otherwise, please 
specify it explicitly."
+            );
+        }
+        if (StringUtils.isBlank(getEndpoint())) {
+            throw new IllegalArgumentException("Endpoint is not set. Please 
specify it explicitly."
+            );
+        }
+    }
+
+    boolean isEndpointCheckRequired() {
+        return true;
     }
 
     /**
@@ -217,23 +228,6 @@ public abstract class AbstractS3CompatibleProperties 
extends StorageProperties i
 
     protected abstract Set<Pattern> endpointPatterns();
 
-    private boolean isValidEndpoint(String endpoint) {
-        if (StringUtils.isBlank(endpoint)) {
-            // Endpoint is not required, so we consider it valid if empty.
-            return true;
-        }
-        if (endpointPatterns().isEmpty()) {
-            return true;
-        }
-        for (Pattern pattern : endpointPatterns()) {
-            Matcher matcher = pattern.matcher(endpoint.toLowerCase());
-            if (matcher.matches()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
     // This method should be overridden by subclasses to provide a default 
endpoint based on the region.
     // Because for aws s3, only region is needed, the endpoint can be 
constructed from the region.
     // But for other s3 compatible storage, the endpoint may need to be 
specified explicitly.
@@ -264,7 +258,10 @@ public abstract class AbstractS3CompatibleProperties 
extends StorageProperties i
     private void appendS3HdfsProperties(Configuration hadoopStorageConfig) {
         hadoopStorageConfig.set("fs.s3.impl", 
"org.apache.hadoop.fs.s3a.S3AFileSystem");
         hadoopStorageConfig.set("fs.s3a.impl", 
"org.apache.hadoop.fs.s3a.S3AFileSystem");
+        // use google assert not null
+        Preconditions.checkNotNull(getEndpoint(), "endpoint is null");
         hadoopStorageConfig.set("fs.s3a.endpoint", getEndpoint());
+        Preconditions.checkNotNull(getRegion(), "region is null");
         hadoopStorageConfig.set("fs.s3a.endpoint.region", getRegion());
         hadoopStorageConfig.set("fs.s3.impl.disable.cache", "true");
         hadoopStorageConfig.set("fs.s3a.impl.disable.cache", "true");
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/OSSProperties.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/OSSProperties.java
index 1239cf6181d..23e38f4676d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/OSSProperties.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/OSSProperties.java
@@ -123,6 +123,9 @@ public class OSSProperties extends 
AbstractS3CompatibleProperties {
     @Getter
     protected String forceParsingByStandardUrl = "false";
 
+    private static final Pattern STANDARD_ENDPOINT_PATTERN = Pattern
+            
.compile("^(?:https?://)?(?:s3\\.)?oss-([a-z0-9-]+?)(?:-internal)?\\.aliyuncs\\.com$");
+
     /**
      * Pattern to extract the region from an Alibaba Cloud OSS endpoint.
      * <p>
@@ -139,10 +142,9 @@ public class OSSProperties extends 
AbstractS3CompatibleProperties {
      * - s3.cn-hangzhou.aliyuncs.com              => region = cn-hangzhou
      * <p>
      * 
https://help.aliyun.com/zh/dlf/dlf-1-0/developer-reference/api-datalake-2020-07-10-endpoint
-     * - detalake.cn-hangzhou.aliyuncs.com          => region = cn-hangzhou
+     * - datalake.cn-hangzhou.aliyuncs.com          => region = cn-hangzhou
      */
-    public static final Set<Pattern> ENDPOINT_PATTERN = ImmutableSet.of(Pattern
-                    
.compile("^(?:https?://)?(?:s3\\.)?oss-([a-z0-9-]+?)(?:-internal)?\\.aliyuncs\\.com$"),
+    public static final Set<Pattern> ENDPOINT_PATTERN = 
ImmutableSet.of(STANDARD_ENDPOINT_PATTERN,
             
Pattern.compile("(?:https?://)?([a-z]{2}-[a-z0-9-]+)\\.oss-dls\\.aliyuncs\\.com"),
             
Pattern.compile("^(?:https?://)?dlf(?:-vpc)?\\.([a-z0-9-]+)\\.aliyuncs\\.com(?:/.*)?$"),
             
Pattern.compile("^(?:https?://)?datalake(?:-vpc)?\\.([a-z0-9-]+)\\.aliyuncs\\.com(?:/.*)?$"));
@@ -247,7 +249,7 @@ public class OSSProperties extends 
AbstractS3CompatibleProperties {
     @Override
     public void initNormalizeAndCheckProps() {
         super.initNormalizeAndCheckProps();
-        if (endpoint.contains("dlf") || endpoint.contains("oss-dls")) {
+        if (StringUtils.isBlank(endpoint) || 
!STANDARD_ENDPOINT_PATTERN.matcher(endpoint).matches()) {
             this.endpoint = getOssEndpoint(region, 
BooleanUtils.toBoolean(dlfAccessPublic));
         }
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/S3Properties.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/S3Properties.java
index c9b922f0d19..8233c6bf500 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/S3Properties.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/property/storage/S3Properties.java
@@ -213,6 +213,11 @@ public class S3Properties extends 
AbstractS3CompatibleProperties {
         convertGlueToS3EndpointIfNeeded();
     }
 
+    @Override
+    boolean isEndpointCheckRequired() {
+        return false;
+    }
+
     /**
      * Guess if the storage properties is for this storage type.
      * Subclass should override this method to provide the correct 
implementation.
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/metastore/IcebergS3TablesMetaStorePropertiesTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/metastore/IcebergS3TablesMetaStorePropertiesTest.java
index 81d1f004040..423f74856c7 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/metastore/IcebergS3TablesMetaStorePropertiesTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/metastore/IcebergS3TablesMetaStorePropertiesTest.java
@@ -41,12 +41,8 @@ public class IcebergS3TablesMetaStorePropertiesTest {
                 "s3.access_key", "AK",
                 "s3.secret_key", "SK",
                 "s3.endpoint", "https://s3.us-west-2.amazonaws.com";);
-        IcebergS3TablesMetaStoreProperties failedProperties = 
(IcebergS3TablesMetaStoreProperties) MetastoreProperties.create(baseProps);
-        Assertions.assertEquals("s3tables", 
failedProperties.getIcebergCatalogType());
-        RuntimeException exception = 
Assertions.assertThrows(RuntimeException.class, () -> {
-            failedProperties.initializeCatalog("iceberg_catalog", 
StorageProperties.createAll(baseProps));
-        });
-        Assertions.assertTrue(exception.getMessage().contains("region must not 
be blank or empty."));
+        RuntimeException exception = 
Assertions.assertThrows(RuntimeException.class, () -> 
MetastoreProperties.create(baseProps));
+        Assertions.assertTrue(exception.getMessage().contains("Region is not 
set."));
         Map<String, String> allProps = ImmutableMap.<String, String>builder()
                 .putAll(baseProps)
                 .putAll(s3Props)
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/COSPropertiesTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/COSPropertiesTest.java
index bd3c091ef37..aadecf63c3f 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/COSPropertiesTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/COSPropertiesTest.java
@@ -53,7 +53,7 @@ public class COSPropertiesTest {
         origProps.put("cos.use_path_style", "true");
         origProps.put(StorageProperties.FS_COS_SUPPORT, "true");
         origProps.put("test_non_storage_param", "6000");
-        Assertions.assertThrowsExactly(IllegalArgumentException.class, () -> 
StorageProperties.createAll(origProps), "Invalid endpoint format: 
https://cos.example.com";);
+        Assertions.assertDoesNotThrow(() -> 
StorageProperties.createAll(origProps));
         origProps.put("cos.endpoint", "cos.ap-beijing-1.myqcloud.com");
         COSProperties cosProperties = (COSProperties) 
StorageProperties.createAll(origProps).get(0);
         Map<String, String> cosConfig = cosProperties.getMatchedProperties();
@@ -151,7 +151,7 @@ public class COSPropertiesTest {
         origProps.put("cos.endpoint", "cos.ap-beijing.myqcloud.com");
         origProps.put("cos.secret_key", "myCOSSecretKey");
         Assertions.assertThrows(IllegalArgumentException.class, () -> 
StorageProperties.createPrimary(origProps),
-                 "Please set access_key and secret_key or omit both for 
anonymous access to public bucket.");
+                "Please set access_key and secret_key or omit both for 
anonymous access to public bucket.");
     }
 
     @Test
@@ -159,7 +159,7 @@ public class COSPropertiesTest {
         origProps.put("cos.endpoint", "cos.ap-beijing.myqcloud.com");
         origProps.put("cos.access_key", "myCOSAccessKey");
         Assertions.assertThrows(IllegalArgumentException.class, () -> 
StorageProperties.createPrimary(origProps),
-                 "Both the access key and the secret key must be set.");
+                "Both the access key and the secret key must be set.");
         origProps.remove("cos.access_key");
         Assertions.assertDoesNotThrow(() -> 
StorageProperties.createPrimary(origProps));
     }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/OBSPropertyTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/OBSPropertyTest.java
index acaa21ab9bc..1d9fee06e19 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/OBSPropertyTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/OBSPropertyTest.java
@@ -39,7 +39,7 @@ public class OBSPropertyTest {
         origProps.put("obs.secret_key", "myOBSSecretKey");
         origProps.put(StorageProperties.FS_OBS_SUPPORT, "true");
         ExceptionChecker.expectThrowsWithMsg(IllegalArgumentException.class,
-                "Invalid endpoint: https://obs.example.com";, () -> 
StorageProperties.createAll(origProps));
+                "Region is not set. If you are using a standard endpoint, the 
region will be detected automatically. Otherwise, please specify it 
explicitly.", () -> StorageProperties.createAll(origProps));
 
         // Test creation without additional properties
         origProps = new HashMap<>();
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/OSSPropertiesTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/OSSPropertiesTest.java
index d9c08c5bae7..7a0460f3153 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/OSSPropertiesTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/OSSPropertiesTest.java
@@ -43,7 +43,7 @@ public class OSSPropertiesTest {
         origProps.put(StorageProperties.FS_OSS_SUPPORT, "true");
         Map<String, String> finalOrigProps = origProps;
         ExceptionChecker.expectThrowsWithMsg(IllegalArgumentException.class,
-                "Invalid endpoint: https://oss.aliyuncs.com";, () -> 
StorageProperties.createPrimary(finalOrigProps));
+                "Region is not set. If you are using a standard endpoint, the 
region will be detected automatically. Otherwise, please specify it 
explicitly.", () -> StorageProperties.createPrimary(finalOrigProps));
         origProps.put("oss.endpoint", 
"oss-cn-shenzhen-finance-1-internal.aliyuncs.com");
         Map<String, String> finalOrigProps1 = origProps;
         OSSProperties ossProperties = (OSSProperties) 
StorageProperties.createPrimary(finalOrigProps1);
@@ -145,7 +145,7 @@ public class OSSPropertiesTest {
         ossNoEndpointProps.put("oss.region", "cn-hangzhou");
         origProps.put("uri", "s3://examplebucket-1250000000/test/file.txt");
         // oss support without endpoint
-        ExceptionChecker.expectThrowsNoException(() -> 
StorageProperties.createPrimary(ossNoEndpointProps));
+        ExceptionChecker.expectThrowsWithMsg(IllegalArgumentException.class, 
"Endpoint is not set. Please specify it explicitly.", () -> 
StorageProperties.createPrimary(ossNoEndpointProps));
     }
 
     @Test
@@ -182,6 +182,32 @@ public class OSSPropertiesTest {
         Assertions.assertDoesNotThrow(() -> 
StorageProperties.createPrimary(origProps));
     }
 
+    @Test
+    public void testDlfPropertiesEndpoint() {
+        Map<String, String> origProps = new HashMap<>();
+        origProps.put("type", "iceberg");
+        origProps.put("warehouse", 
"oss://bucket/hive-dlf-oss-warehouse/iceberg/dlf-oss/");
+        origProps.put("dlf.region", "cn-beijing");
+        origProps.put("dlf.endpoint", "datalake-vpc.cn-beijing.aliyuncs.com");
+        origProps.put("dlf.uid", "12345");
+        origProps.put("dlf.catalog.id", "p2_regression_case");
+        origProps.put("dlf.access_key", "ACCESS_KEY");
+        origProps.put("dlf.secret_key", "SECERT_KET");
+        origProps.put("dlf.access.public", "true");
+        OSSProperties ossProperties = OSSProperties.of(origProps);
+        Assertions.assertEquals("oss-cn-beijing.aliyuncs.com", 
ossProperties.getEndpoint());
+        origProps.remove("dlf.access.public");
+        ossProperties = OSSProperties.of(origProps);
+        Assertions.assertEquals("oss-cn-beijing-internal.aliyuncs.com", 
ossProperties.getEndpoint());
+        origProps.put("oss.endpoint", "dlf.cn-beijing.aliyuncs.com");
+        ossProperties = OSSProperties.of(origProps);
+        Assertions.assertEquals("oss-cn-beijing-internal.aliyuncs.com", 
ossProperties.getEndpoint());
+        origProps.put("oss.endpoint", "dlf-vpc.cn-beijing.aliyuncs.com");
+        ossProperties = OSSProperties.of(origProps);
+        Assertions.assertEquals("oss-cn-beijing-internal.aliyuncs.com", 
ossProperties.getEndpoint());
+    }
+
+
     @Test
     public void testNotEndpoint() throws UserException {
         Map<String, String> origProps = new HashMap<>();
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/S3PropertiesTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/S3PropertiesTest.java
index 70ffa2bd0c9..248f9de506f 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/S3PropertiesTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/storage/S3PropertiesTest.java
@@ -59,8 +59,7 @@ public class S3PropertiesTest {
         origProps.put("s3.secret_key", "myS3SecretKey");
         origProps.put("s3.region", "us-west-1");
         origProps.put(StorageProperties.FS_S3_SUPPORT, "true");
-        ExceptionChecker.expectThrowsWithMsg(IllegalArgumentException.class,
-                "Invalid endpoint: https://cos.example.com";, () -> 
StorageProperties.createAll(origProps));
+        Assertions.assertDoesNotThrow(() -> 
StorageProperties.createAll(origProps));
         origProps = new HashMap<>();
         origProps.put("s3.endpoint", 
"s3-fips.dualstack.us-east-2.amazonaws.com");
         origProps.put(StorageProperties.FS_S3_SUPPORT, "true");
@@ -120,7 +119,6 @@ public class S3PropertiesTest {
 
     @Test
     public void testToNativeS3Configuration() throws UserException {
-        origProps.put("s3.endpoint", "https://cos.example.com";);
         origProps.put("s3.access_key", "myS3AccessKey");
         origProps.put("s3.secret_key", "myS3SecretKey");
         origProps.put("s3.region", "us-west-1");
@@ -129,11 +127,6 @@ public class S3PropertiesTest {
         origProps.put("s3.connection.maximum", "88");
         origProps.put("s3.connection.timeout", "6000");
         origProps.put("test_non_storage_param", "6000");
-
-        ExceptionChecker.expectThrowsWithMsg(IllegalArgumentException.class,
-                "Invalid endpoint: https://cos.example.com";, () -> {
-                    StorageProperties.createAll(origProps).get(1);
-                });
         origProps.put("s3.endpoint", "s3.us-west-1.amazonaws.com");
         S3Properties s3Properties = (S3Properties) 
StorageProperties.createAll(origProps).get(0);
         Map<String, String> s3Props = 
s3Properties.getBackendConfigProperties();
@@ -206,8 +199,7 @@ public class S3PropertiesTest {
         s3EndpointProps.put("oss.secret_key", "myCOSSecretKey");
         s3EndpointProps.put("oss.region", "cn-hangzhou");
         origProps.put("uri", "s3://examplebucket-1250000000/test/file.txt");
-        // not support
-        ExceptionChecker.expectThrowsNoException(() -> 
StorageProperties.createPrimary(s3EndpointProps));
+        ExceptionChecker.expectThrowsWithMsg(IllegalArgumentException.class, 
"Endpoint is not set. Please specify it explicitly.", () -> 
StorageProperties.createPrimary(s3EndpointProps));
     }
 
     @Test
@@ -230,7 +222,7 @@ public class S3PropertiesTest {
 
     @Test
     public void testGetAwsCredentialsProviderWithIamRoleAndExternalId(@Mocked 
StsClientBuilder mockBuilder,
-            @Mocked StsClient mockStsClient, @Mocked 
InstanceProfileCredentialsProvider mockInstanceCreds) {
+                                                                      @Mocked 
StsClient mockStsClient, @Mocked InstanceProfileCredentialsProvider 
mockInstanceCreds) {
 
         new Expectations() {
             {
@@ -317,21 +309,25 @@ public class S3PropertiesTest {
         String invalidEndpoint1 = "s3.amazonaws.com";
         origProps.put("s3.endpoint", invalidEndpoint1);
         ExceptionChecker.expectThrowsWithMsg(IllegalArgumentException.class,
-                "Invalid endpoint: s3.amazonaws.com", () -> 
StorageProperties.createPrimary(origProps));
-
+                "Region is not set. If you are using a standard endpoint, the 
region will be detected automatically. Otherwise, please specify it 
explicitly.", () -> StorageProperties.createPrimary(origProps));
+        origProps.put("s3.region", "us-west-2");
+        Assertions.assertDoesNotThrow(() -> 
StorageProperties.createPrimary(origProps));
         // Fails because it contains 'amazonaws.com' but doesn't match the 
strict S3 endpoint pattern (invalid subdomain).
         String invalidEndpoint2 = "my-s3-service.amazonaws.com";
         origProps.put("s3.endpoint", invalidEndpoint2);
-        ExceptionChecker.expectThrowsWithMsg(IllegalArgumentException.class,
-                "Invalid endpoint: my-s3-service.amazonaws.com",
-                () -> StorageProperties.createPrimary(origProps));
-
-        // Fails because it contains 'amazonaws.com' but doesn't match the 
strict S3 endpoint pattern (invalid TLD).
+        Assertions.assertDoesNotThrow(() -> 
StorageProperties.createPrimary(origProps));
         String invalidEndpoint3 = "http://s3.us-west-2.amazonaws.com.cn";;
         origProps.put("s3.endpoint", invalidEndpoint3);
-        ExceptionChecker.expectThrowsWithMsg(IllegalArgumentException.class,
-                "Invalid endpoint: http://s3.us-west-2.amazonaws.com.cn";,
-                () -> StorageProperties.createPrimary(origProps));
+        StorageProperties storageProperties = 
StorageProperties.createPrimary(origProps);
+        Assertions.assertEquals("us-west-2", 
storageProperties.getHadoopStorageConfig().get("fs.s3a.endpoint.region"));
+        Assertions.assertEquals("http://s3.us-west-2.amazonaws.com.cn";, 
storageProperties.getHadoopStorageConfig().get("fs.s3a.endpoint"));
+        origProps.remove("s3.endpoint");
+        storageProperties = StorageProperties.createPrimary(origProps);
+        Assertions.assertEquals("us-west-2", 
storageProperties.getHadoopStorageConfig().get("fs.s3a.endpoint.region"));
+        Assertions.assertEquals("https://s3.us-west-2.amazonaws.com";, 
storageProperties.getHadoopStorageConfig().get("fs.s3a.endpoint"));
+        origProps.put("s3.endpoint", "s3.us-west-2.supervise.com");
+        origProps.put("s3.region", "us-west-2");
+        Assertions.assertDoesNotThrow(() -> 
StorageProperties.createPrimary(origProps));
     }
 
     @Test
diff --git 
a/regression-test/suites/load_p0/broker_load/test_domain_connection_and_ak_sk_correction.groovy
 
b/regression-test/suites/load_p0/broker_load/test_domain_connection_and_ak_sk_correction.groovy
index 927c267718b..786baaf2681 100644
--- 
a/regression-test/suites/load_p0/broker_load/test_domain_connection_and_ak_sk_correction.groovy
+++ 
b/regression-test/suites/load_p0/broker_load/test_domain_connection_and_ak_sk_correction.groovy
@@ -102,7 +102,7 @@ suite("test_domain_connection_and_ak_sk_correction",  
"load_p0") {
         assertTrue(false. "The endpoint is wrong, so the connection test 
should fale")
     } catch (Exception e) {
         logger.info("the second sql exception result is {}", e.getMessage())
-        assertTrue(e.getMessage().contains("Invalid endpoint"), e.getMessage())
+        assertTrue(e.getMessage().contains("Failed to access object storage"), 
e.getMessage())
     }
 
     sql """ DROP TABLE IF EXISTS ${tableName} FORCE"""


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to