From a88c7b75bb4934672e015fb9e2d50f5c85a7e98d Mon Sep 17 00:00:00 2001 From: yibole Date: Mon, 6 Jan 2025 13:36:56 -0800 Subject: [PATCH 01/10] expose connectionAqusitionTimeout in crtHttpClient --- .../amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java | 7 +++++++ .../software/amazon/awssdk/http/crt/AwsCrtHttpClient.java | 7 +++++++ .../amazon/awssdk/http/crt/AwsCrtHttpClientBase.java | 6 +++++- .../awssdk/http/crt/internal/AwsCrtClientBuilderBase.java | 6 ++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java b/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java index 981c387465a8..042d1bc8c08f 100644 --- a/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java +++ b/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java @@ -182,6 +182,13 @@ AwsCrtAsyncHttpClient.Builder connectionHealthConfiguration(Consumer Date: Tue, 28 Jan 2025 14:55:57 -0800 Subject: [PATCH 02/10] dependency version changed --- .../software/amazon/awssdk/http/crt/AwsCrtHttpClientBase.java | 3 +-- pom.xml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientBase.java b/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientBase.java index 9b6899c68da1..7842b29cda74 100644 --- a/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientBase.java +++ b/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientBase.java @@ -21,7 +21,6 @@ import static software.amazon.awssdk.http.crt.internal.AwsCrtConfigurationUtils.buildSocketOptions; import static software.amazon.awssdk.http.crt.internal.AwsCrtConfigurationUtils.resolveCipherPreference; import static software.amazon.awssdk.utils.FunctionalUtils.invokeSafely; -import static software.amazon.awssdk.utils.NumericUtils.saturatedCast; import java.net.URI; import java.util.LinkedList; @@ -130,7 +129,7 @@ private HttpClientConnectionManager createConnectionPool(URI uri) { .withProxyOptions(proxyOptions) .withMonitoringOptions(monitoringOptions) .withMaxConnectionIdleInMilliseconds(maxConnectionIdleInMilliseconds) - .withConnectionAcquisitionTimeoutInMilliseconds(saturatedCast(connectionAcquisitionTimeout)); + .withConnectionAcquisitionTimeoutInMilliseconds(connectionAcquisitionTimeout); return HttpClientConnectionManager.create(options); } diff --git a/pom.xml b/pom.xml index 43092e1f8e3a..f1b53e4e82df 100644 --- a/pom.xml +++ b/pom.xml @@ -124,7 +124,7 @@ 2.2.21 1.17.1 1.37 - 0.33.6 + 0.33.9 5.10.0 From e2a129b30a2a81652377c6022a1870f7a122b017 Mon Sep 17 00:00:00 2001 From: yibole Date: Tue, 28 Jan 2025 15:20:49 -0800 Subject: [PATCH 03/10] changelog added --- .../feature-AwsCrtHttpClientforJavav2-c8d7d24.json | 6 ++++++ scripts/new-change | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .changes/next-release/feature-AwsCrtHttpClientforJavav2-c8d7d24.json diff --git a/.changes/next-release/feature-AwsCrtHttpClientforJavav2-c8d7d24.json b/.changes/next-release/feature-AwsCrtHttpClientforJavav2-c8d7d24.json new file mode 100644 index 000000000000..4f22a0a86ae5 --- /dev/null +++ b/.changes/next-release/feature-AwsCrtHttpClientforJavav2-c8d7d24.json @@ -0,0 +1,6 @@ +{ + "type": "feature", + "category": "Aws Crt Http Client for Java v2", + "contributor": "", + "description": "Exposed the connectionAcquisitionTimeout field in AwsCrtHttpClient and AwsCrtAsyncHttpClient and pass it through" +} diff --git a/scripts/new-change b/scripts/new-change index cfe8801319e3..093a9edafaea 100755 --- a/scripts/new-change +++ b/scripts/new-change @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # This file is borrowed from the aws/aws-cli project with the following modifications: # - Add a 'deprecation' category, and validation for the category value # - Modify the 'linkify' method to use Markdown syntax instead of reStructuredText (rst) From 65e9f944d00776d96779b6bdf9acd249e0d89fbf Mon Sep 17 00:00:00 2001 From: yibole Date: Thu, 30 Jan 2025 14:23:48 -0800 Subject: [PATCH 04/10] rollback to test --- .../amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java | 7 ------- .../software/amazon/awssdk/http/crt/AwsCrtHttpClient.java | 7 ------- .../amazon/awssdk/http/crt/AwsCrtHttpClientBase.java | 5 +---- .../awssdk/http/crt/internal/AwsCrtClientBuilderBase.java | 6 ------ 4 files changed, 1 insertion(+), 24 deletions(-) diff --git a/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java b/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java index 042d1bc8c08f..981c387465a8 100644 --- a/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java +++ b/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java @@ -182,13 +182,6 @@ AwsCrtAsyncHttpClient.Builder connectionHealthConfiguration(Consumer Date: Thu, 30 Jan 2025 15:24:26 -0800 Subject: [PATCH 05/10] change added back --- .../amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java | 7 +++++++ .../software/amazon/awssdk/http/crt/AwsCrtHttpClient.java | 7 +++++++ .../amazon/awssdk/http/crt/AwsCrtHttpClientBase.java | 5 ++++- .../awssdk/http/crt/internal/AwsCrtClientBuilderBase.java | 6 ++++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java b/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java index 981c387465a8..042d1bc8c08f 100644 --- a/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java +++ b/http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java @@ -182,6 +182,13 @@ AwsCrtAsyncHttpClient.Builder connectionHealthConfiguration(Consumer Date: Fri, 31 Jan 2025 11:12:38 -0800 Subject: [PATCH 06/10] changed the default connectionacquiretimeout value --- .../software/amazon/awssdk/http/SdkHttpConfigurationOption.java | 2 +- scripts/new-change | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/http-client-spi/src/main/java/software/amazon/awssdk/http/SdkHttpConfigurationOption.java b/http-client-spi/src/main/java/software/amazon/awssdk/http/SdkHttpConfigurationOption.java index e9efa8b1814b..133dc4aac73a 100644 --- a/http-client-spi/src/main/java/software/amazon/awssdk/http/SdkHttpConfigurationOption.java +++ b/http-client-spi/src/main/java/software/amazon/awssdk/http/SdkHttpConfigurationOption.java @@ -140,7 +140,7 @@ public final class SdkHttpConfigurationOption extends AttributeMap.Key { private static final Duration DEFAULT_SOCKET_READ_TIMEOUT = Duration.ofSeconds(30); private static final Duration DEFAULT_SOCKET_WRITE_TIMEOUT = Duration.ofSeconds(30); private static final Duration DEFAULT_CONNECTION_TIMEOUT = Duration.ofSeconds(2); - private static final Duration DEFAULT_CONNECTION_ACQUIRE_TIMEOUT = Duration.ofSeconds(10); + private static final Duration DEFAULT_CONNECTION_ACQUIRE_TIMEOUT = Duration.ofSeconds(50); private static final Duration DEFAULT_CONNECTION_MAX_IDLE_TIMEOUT = Duration.ofSeconds(60); private static final Duration DEFAULT_CONNECTION_TIME_TO_LIVE = Duration.ZERO; /** diff --git a/scripts/new-change b/scripts/new-change index 093a9edafaea..cfe8801319e3 100755 --- a/scripts/new-change +++ b/scripts/new-change @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python # This file is borrowed from the aws/aws-cli project with the following modifications: # - Add a 'deprecation' category, and validation for the category value # - Modify the 'linkify' method to use Markdown syntax instead of reStructuredText (rst) From 45959d8c358a2102df887e6be860e36a65410416 Mon Sep 17 00:00:00 2001 From: yibole Date: Fri, 31 Jan 2025 16:02:37 -0800 Subject: [PATCH 07/10] changed value back --- .../software/amazon/awssdk/http/SdkHttpConfigurationOption.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/http-client-spi/src/main/java/software/amazon/awssdk/http/SdkHttpConfigurationOption.java b/http-client-spi/src/main/java/software/amazon/awssdk/http/SdkHttpConfigurationOption.java index 133dc4aac73a..e9efa8b1814b 100644 --- a/http-client-spi/src/main/java/software/amazon/awssdk/http/SdkHttpConfigurationOption.java +++ b/http-client-spi/src/main/java/software/amazon/awssdk/http/SdkHttpConfigurationOption.java @@ -140,7 +140,7 @@ public final class SdkHttpConfigurationOption extends AttributeMap.Key { private static final Duration DEFAULT_SOCKET_READ_TIMEOUT = Duration.ofSeconds(30); private static final Duration DEFAULT_SOCKET_WRITE_TIMEOUT = Duration.ofSeconds(30); private static final Duration DEFAULT_CONNECTION_TIMEOUT = Duration.ofSeconds(2); - private static final Duration DEFAULT_CONNECTION_ACQUIRE_TIMEOUT = Duration.ofSeconds(50); + private static final Duration DEFAULT_CONNECTION_ACQUIRE_TIMEOUT = Duration.ofSeconds(10); private static final Duration DEFAULT_CONNECTION_MAX_IDLE_TIMEOUT = Duration.ofSeconds(60); private static final Duration DEFAULT_CONNECTION_TIME_TO_LIVE = Duration.ZERO; /** From ed620993518faa5ab4bdec8c5a44d8a5e9710536 Mon Sep 17 00:00:00 2001 From: yibole Date: Mon, 3 Feb 2025 17:16:42 -0800 Subject: [PATCH 08/10] test case config changed --- .../amazon/awssdk/http/crt/AwsCrtHttpClientTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/http-clients/aws-crt-client/src/test/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientTest.java b/http-clients/aws-crt-client/src/test/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientTest.java index b77a7f1acdb2..d1a266fb4363 100644 --- a/http-clients/aws-crt-client/src/test/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientTest.java +++ b/http-clients/aws-crt-client/src/test/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientTest.java @@ -18,6 +18,7 @@ import static software.amazon.awssdk.http.SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES; +import java.time.Duration; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import software.amazon.awssdk.crt.CrtResource; @@ -42,10 +43,14 @@ public static void afterAll() { CrtResource.waitForNoResources(); } + /** + * default value of connectionAcquisitionTimeout of 10 will fail validatesHttpsCertificateIssuer() test + * */ @Override protected SdkHttpClient createSdkHttpClient(SdkHttpClientOptions options) { boolean trustAllCerts = options.trustAll(); return AwsCrtHttpClient.builder() + .connectionAcquisitionTimeout(Duration.ofSeconds(40)) .buildWithDefaults(AttributeMap.builder().put(TRUST_ALL_CERTIFICATES, trustAllCerts).build()); } From 5b00a9c773d74c56c284787a4cd5785916adee33 Mon Sep 17 00:00:00 2001 From: yibole Date: Wed, 5 Feb 2025 10:11:53 -0800 Subject: [PATCH 09/10] invalid input testcases added --- .../awssdk/http/crt/AwsCrtHttpClientTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/http-clients/aws-crt-client/src/test/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientTest.java b/http-clients/aws-crt-client/src/test/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientTest.java index d1a266fb4363..653f97163934 100644 --- a/http-clients/aws-crt-client/src/test/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientTest.java +++ b/http-clients/aws-crt-client/src/test/java/software/amazon/awssdk/http/crt/AwsCrtHttpClientTest.java @@ -15,12 +15,15 @@ package software.amazon.awssdk.http.crt; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static software.amazon.awssdk.http.SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES; import java.time.Duration; +import org.junit.Test; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; + import software.amazon.awssdk.crt.CrtResource; import software.amazon.awssdk.crt.Log; import software.amazon.awssdk.http.SdkHttpClient; @@ -54,6 +57,16 @@ protected SdkHttpClient createSdkHttpClient(SdkHttpClientOptions options) { .buildWithDefaults(AttributeMap.builder().put(TRUST_ALL_CERTIFICATES, trustAllCerts).build()); } + @Test + public void negativeConnectionAcquisitionTimeout_shouldFail() { + assertThatThrownBy(() -> { + SdkHttpClient client = AwsCrtHttpClient.builder() + .connectionAcquisitionTimeout(Duration.ofSeconds(-1)) + .build(); + client.close(); + }).hasMessage("connectionAcquisitionTimeout must be positive"); + } + // Empty test; behavior not supported when using custom factory @Override public void testCustomTlsTrustManagerAndTrustAllFails() { From 8d37457546707ac14f9b05295a50a30be0e12258 Mon Sep 17 00:00:00 2001 From: yibole Date: Wed, 5 Feb 2025 13:10:09 -0800 Subject: [PATCH 10/10] changelog modified --- .../feature-AwsCrtHttpClientforJavav2-c8d7d24.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changes/next-release/feature-AwsCrtHttpClientforJavav2-c8d7d24.json b/.changes/next-release/feature-AwsCrtHttpClientforJavav2-c8d7d24.json index 4f22a0a86ae5..f72eb4a1340f 100644 --- a/.changes/next-release/feature-AwsCrtHttpClientforJavav2-c8d7d24.json +++ b/.changes/next-release/feature-AwsCrtHttpClientforJavav2-c8d7d24.json @@ -1,6 +1,6 @@ { "type": "feature", - "category": "Aws Crt Http Client for Java v2", + "category": "AWS CRT HTTP Client", "contributor": "", - "description": "Exposed the connectionAcquisitionTimeout field in AwsCrtHttpClient and AwsCrtAsyncHttpClient and pass it through" + "description": "Allow users to configure connectionAcquisitionTimeout for AwsCrtHttpClient and AwsCrtAsyncHttpClient" }