Skip to content

Commit 2d980b7

Browse files
committed
Make default async future completion executor a true multithread executor
1 parent 1164d1b commit 2d980b7

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"category": "AWS SDK for Java v2",
3+
"type": "bugfix",
4+
"description": "Make default `asyncFutureCompletionExeuctor` a true multi-threads executor. See [#968](https://github.com/aws/aws-sdk-java-v2/issues/968)"
5+
}

core/sdk-core/src/main/java/software/amazon/awssdk/core/client/builder/SdkDefaultClientBuilder.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -267,11 +267,17 @@ protected AttributeMap childHttpConfig() {
267267
* Finalize which async executor service will be used for the created client.
268268
*/
269269
private Executor resolveAsyncFutureCompletionExecutor(SdkClientConfiguration config) {
270-
Supplier<Executor> defaultExecutor = () ->
271-
new ThreadPoolExecutor(0, 50,
272-
10, TimeUnit.SECONDS,
273-
new LinkedBlockingQueue<>(10_000),
274-
new ThreadFactoryBuilder().threadNamePrefix("sdk-async-response").build());
270+
Supplier<Executor> defaultExecutor = () -> {
271+
ThreadPoolExecutor executor = new ThreadPoolExecutor(50, 50,
272+
10, TimeUnit.SECONDS,
273+
new LinkedBlockingQueue<>(10_000),
274+
new ThreadFactoryBuilder()
275+
.threadNamePrefix("sdk-async-response").build());
276+
277+
// Allow idle core threads to time out
278+
executor.allowCoreThreadTimeOut(true);
279+
return executor;
280+
};
275281

276282
return Optional.ofNullable(config.option(FUTURE_COMPLETION_EXECUTOR))
277283
.orElseGet(defaultExecutor);

0 commit comments

Comments
 (0)