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

etudenhoefner pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git


The following commit(s) were added to refs/heads/main by this push:
     new 745e819f37 AWS: Make sure overridden configurations are applied 
(#11274)
745e819f37 is described below

commit 745e819f372fe9ba6bebf2f7edaa27197cd0dd0b
Author: hsiang-c <[email protected]>
AuthorDate: Mon Oct 7 14:48:53 2024 +0800

    AWS: Make sure overridden configurations are applied (#11274)
---
 .../java/org/apache/iceberg/aws/s3/S3FileIOProperties.java   | 12 +++++++++---
 .../java/org/apache/iceberg/aws/TestS3FileIOProperties.java  |  7 ++++++-
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git 
a/aws/src/main/java/org/apache/iceberg/aws/s3/S3FileIOProperties.java 
b/aws/src/main/java/org/apache/iceberg/aws/s3/S3FileIOProperties.java
index 6813913a4d..4ab1514a22 100644
--- a/aws/src/main/java/org/apache/iceberg/aws/s3/S3FileIOProperties.java
+++ b/aws/src/main/java/org/apache/iceberg/aws/s3/S3FileIOProperties.java
@@ -899,9 +899,14 @@ public class S3FileIOProperties implements Serializable {
    * </pre>
    */
   public <T extends S3ClientBuilder> void applyRetryConfigurations(T builder) {
+    ClientOverrideConfiguration.Builder configBuilder =
+        null != builder.overrideConfiguration()
+            ? builder.overrideConfiguration().toBuilder()
+            : ClientOverrideConfiguration.builder();
+
     builder.overrideConfiguration(
-        config ->
-            config.retryPolicy(
+        configBuilder
+            .retryPolicy(
                 // Use a retry strategy which will persistently retry 
throttled exceptions with
                 // exponential backoff, to give S3 a chance to autoscale.
                 // LEGACY mode works best here, as it will allow throttled 
exceptions to use all of
@@ -945,7 +950,8 @@ public class S3FileIOProperties implements Serializable {
                                   return 5;
                                 })
                             .build())
-                    .build()));
+                    .build())
+            .build());
   }
 
   /**
diff --git 
a/aws/src/test/java/org/apache/iceberg/aws/TestS3FileIOProperties.java 
b/aws/src/test/java/org/apache/iceberg/aws/TestS3FileIOProperties.java
index 92ed3648bc..e2499e9476 100644
--- a/aws/src/test/java/org/apache/iceberg/aws/TestS3FileIOProperties.java
+++ b/aws/src/test/java/org/apache/iceberg/aws/TestS3FileIOProperties.java
@@ -36,6 +36,7 @@ import 
software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
 import software.amazon.awssdk.auth.credentials.AwsSessionCredentials;
 import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
 import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption;
+import software.amazon.awssdk.core.retry.RetryPolicy;
 import software.amazon.awssdk.core.signer.Signer;
 import software.amazon.awssdk.services.s3.S3Client;
 import software.amazon.awssdk.services.s3.S3ClientBuilder;
@@ -239,7 +240,7 @@ public class TestS3FileIOProperties {
   }
 
   @Test
-  public void s3RemoteSigningEnabledWithUserAgent() {
+  public void s3RemoteSigningEnabledWithUserAgentAndRetryPolicy() {
     String uri = "http://localhost:12345";;
     Map<String, String> properties =
         ImmutableMap.of(
@@ -249,6 +250,7 @@ public class TestS3FileIOProperties {
 
     s3Properties.applySignerConfiguration(builder);
     s3Properties.applyUserAgentConfigurations(builder);
+    s3Properties.applyRetryConfigurations(builder);
 
     Optional<String> userAgent =
         
builder.overrideConfiguration().advancedOption(SdkAdvancedClientOption.USER_AGENT_PREFIX);
@@ -260,6 +262,9 @@ public class TestS3FileIOProperties {
     S3V4RestSignerClient signerClient = (S3V4RestSignerClient) signer.get();
     assertThat(signerClient.baseSignerUri()).isEqualTo(uri);
     assertThat(signerClient.properties()).isEqualTo(properties);
+
+    Optional<RetryPolicy> retryPolicy = 
builder.overrideConfiguration().retryPolicy();
+    assertThat(retryPolicy).isPresent().get().isInstanceOf(RetryPolicy.class);
   }
 
   @Test

Reply via email to