Skip to content

Commit aeeef69

Browse files
committed
Add keepalive to responseInputStream timeout scheduler executor to make sure scheduler thread doenst leak
1 parent aca7500 commit aeeef69

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

core/sdk-core/src/main/java/software/amazon/awssdk/core/ResponseInputStream.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.concurrent.Executors;
2222
import java.util.concurrent.ScheduledExecutorService;
2323
import java.util.concurrent.ScheduledFuture;
24+
import java.util.concurrent.ScheduledThreadPoolExecutor;
2425
import java.util.concurrent.TimeUnit;
2526
import software.amazon.awssdk.annotations.SdkPublicApi;
2627
import software.amazon.awssdk.annotations.SdkTestInternalApi;
@@ -140,12 +141,17 @@ private void scheduleTimeoutTask(Duration timeout) {
140141
}
141142

142143
private static final class TimeoutScheduler {
143-
static final ScheduledExecutorService INSTANCE =
144-
Executors.newScheduledThreadPool(1, r -> {
144+
static final ScheduledExecutorService INSTANCE;
145+
static {
146+
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1, r -> {
145147
Thread t = new Thread(r, "response-input-stream-timeout-scheduler");
146148
t.setDaemon(true);
147149
return t;
148150
});
151+
executor.setKeepAliveTime(DEFAULT_TIMEOUT.getSeconds(), TimeUnit.SECONDS);
152+
executor.allowCoreThreadTimeOut(true);
153+
INSTANCE = executor;
154+
}
149155
}
150156

151157
/**

0 commit comments

Comments
 (0)