Skip to content

Commit 694394c

Browse files
committed
HTTPCLIENT-2391: improved GRACEGUL shutdown of ExecutorService used internally by async clients
1 parent 038b74f commit 694394c

1 file changed

Lines changed: 13 additions & 1 deletion

File tree

httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/AbstractHttpAsyncClientBase.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.concurrent.Executors;
3232
import java.util.concurrent.Future;
3333
import java.util.concurrent.ThreadFactory;
34+
import java.util.concurrent.TimeUnit;
3435
import java.util.concurrent.atomic.AtomicReference;
3536

3637
import org.apache.hc.core5.concurrent.FutureCallback;
@@ -133,7 +134,18 @@ public final void close(final CloseMode closeMode) {
133134
}
134135
ioReactor.initiateShutdown();
135136
ioReactor.close(closeMode);
136-
executorService.shutdownNow();
137+
if (closeMode == CloseMode.GRACEFUL) {
138+
executorService.shutdown();
139+
try {
140+
if (!executorService.awaitTermination(1, TimeUnit.SECONDS)) {
141+
executorService.shutdownNow();
142+
}
143+
} catch (final InterruptedException ignore) {
144+
Thread.currentThread().interrupt();
145+
}
146+
} else {
147+
executorService.shutdownNow();
148+
}
137149
internalClose(closeMode);
138150
}
139151

0 commit comments

Comments
 (0)