Skip to content

Commit 1605c52

Browse files
authored
Use WeakHashMap in IdleConenctionReaper (#4087)
* Use WeakHashMap in IdleConenctionReaper to not prevent connection manager from getting GC'd * Checkstyle fix
1 parent a160498 commit 1605c52

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "feature",
3+
"category": "AWS SDK for Java v2",
4+
"contributor": "",
5+
"description": "`IdleConnectionReaper` now does not prevent `HttpClientConnectionManager` from getting GC'd in the case where an SDK client is created per request and not closed."
6+
}

http-clients/apache-client/src/main/java/software/amazon/awssdk/http/apache/internal/conn/IdleConnectionReaper.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
package software.amazon.awssdk.http.apache.internal.conn;
1717

1818
import java.time.Duration;
19+
import java.util.Collections;
1920
import java.util.Map;
20-
import java.util.concurrent.ConcurrentHashMap;
21+
import java.util.WeakHashMap;
2122
import java.util.concurrent.ExecutorService;
2223
import java.util.concurrent.Executors;
2324
import java.util.concurrent.TimeUnit;
@@ -48,7 +49,7 @@ public final class IdleConnectionReaper {
4849
private volatile ReaperTask reaperTask;
4950

5051
private IdleConnectionReaper() {
51-
this.connectionManagers = new ConcurrentHashMap<>();
52+
this.connectionManagers = Collections.synchronizedMap(new WeakHashMap<>());
5253

5354
this.executorServiceSupplier = () -> {
5455
ExecutorService e = Executors.newSingleThreadExecutor(r -> {

0 commit comments

Comments
 (0)