-
Notifications
You must be signed in to change notification settings - Fork 969
Description
Describe the bug
We have noticed that S3AsyncClient does not retry io.netty.handler.timeout.ReadTimeoutException:
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: Caused by: java.util.concurrent.ExecutionException: software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: null (SDK Attempt Count: 1)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at com.drw.xd.objectstorage.S3InputStream$S3InputStreamEnumeration.nextElement(S3InputStream.java:114)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: ... 8 more
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: Caused by: software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: null (SDK Attempt Count: 1)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:130)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:95)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.utils.RetryableStageHelper.retryPolicyDisallowedRetryException(RetryableStageHelper.java:168)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncRetryableStage$RetryingExecutor.maybeAttemptExecute(AsyncRetryableStage.java:139)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncRetryableStage$RetryingExecutor.maybeRetryExecute(AsyncRetryableStage.java:157)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncRetryableStage$RetryingExecutor.lambda$attemptExecute$1(AsyncRetryableStage.java:117)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2162)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.utils.CompletableFutureUtils.lambda$forwardExceptionTo$0(CompletableFutureUtils.java:78)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2162)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.lambda$execute$0(MakeAsyncHttpRequestStage.java:108)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2162)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.completeResponseFuture(MakeAsyncHttpRequestStage.java:255)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.lambda$executeHttpRequest$3(MakeAsyncHttpRequestStage.java:167)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.lang.Thread.run(Thread.java:840)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: Caused by: io.netty.handler.timeout.ReadTimeoutException
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: Caused by: java.util.concurrent.ExecutionException: software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: null (SDK Attempt Count: 1)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at com.drw.xd.objectstorage.S3InputStream$S3InputStreamEnumeration.nextElement(S3InputStream.java:114)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: ... 10 more
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: Caused by: software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: null (SDK Attempt Count: 1)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:130)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:95)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.utils.RetryableStageHelper.retryPolicyDisallowedRetryException(RetryableStageHelper.java:168)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncRetryableStage$RetryingExecutor.maybeAttemptExecute(AsyncRetryableStage.java:139)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncRetryableStage$RetryingExecutor.maybeRetryExecute(AsyncRetryableStage.java:157)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncRetryableStage$RetryingExecutor.lambda$attemptExecute$1(AsyncRetryableStage.java:117)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2162)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.utils.CompletableFutureUtils.lambda$forwardExceptionTo$0(CompletableFutureUtils.java:78)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2162)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.lambda$execute$0(MakeAsyncHttpRequestStage.java:108)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2162)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.completeResponseFuture(MakeAsyncHttpRequestStage.java:255)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.lambda$executeHttpRequest$3(MakeAsyncHttpRequestStage.java:167)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: at java.base/java.lang.Thread.run(Thread.java:840)
[2025-11-22, 08:17:29 UTC] {pod.py:942} INFO - [base] logs: Caused by: [CIRCULAR REFERENCE: io.netty.handler.timeout.ReadTimeoutException]
Regression Issue
- Select this option if this issue appears to be a regression.
Expected Behavior
ReadTimeoutException should be retried.
Current Behavior
ReadTimeoutException is not being retried, but thrown as retryPolicyDisallowedRetryException.
Per #686, ReadTimeoutException should be wrapped as an IOException and retried by RetryStrategy. However, decorateException doesn't appear to be used in the call chain.
Reproduction Steps
Keep firing a lot getObject, until io.netty.handler.timeout.ReadTimeoutException is thrown.
Observe that the error is thrown directly without being retried.
Possible Solution
No response
Additional Information/Context
No response
AWS Java SDK version used
2.35.11
JDK version used
openjdk version "17.0.10" 2024-01-16 LTS OpenJDK Runtime Environment Corretto-17.0.10.7.1 (build 17.0.10+7-LTS) OpenJDK 64-Bit Server VM Corretto-17.0.10.7.1 (build 17.0.10+7-LTS, mixed mode, sharing)
Operating System and version
Amazon Linux 2