RFR: 8267140: Support closing the HttpClient by making it auto-closable [v11]

Jaikiran Pai jpai at openjdk.org
Thu Mar 23 07:07:46 UTC 2023


On Wed, 22 Mar 2023 11:15:38 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:

>> Please find here an RFE that makes the `java.net.HttpClient` auto-closeable.
>> 
>> The API has been modeled on `ExecutorService`.
>> 
>> HttpClient::close() is a graceful shutdown and will wait until all operations are terminated before returning.
>> If a request is in progress, and the caller doesn't pull the corresponding data (for instance, the request was sent with a BodyHandler.ofInputStream(), but the caller stopped reading the input stream) then close() may never return.
>> 
>> Therefore, additional methods similar to those present in `ExecutorService` are also proposed. In summary:
>> 
>> - `shutdown()`: initiate a graceful shutdown, but doesn't wait for termination. 
>> - `shutdownNow()`:  initiate an immediate shutdown, attempting to cancel all operations in progress. Doesn't wait for termination.
>> - `awaitTermination(Duration)`: await for termination within the given delay
>> - `isTerminated()` tells whether the client is terminated
>> 
>> New tests have been added to test the proposed behaviors.
>> 
>> HttpClient tests (new and old) are still stable.
>
> Daniel Fuchs has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Minor updates. Added some links
>  - Define operations. Clarify some of the things that may stall an orderly shutdown

test/jdk/java/net/httpclient/AsyncShutdownNow.java line 249:

> 247:         try {
> 248:             try {
> 249:                 if (client.awaitTermination(Duration.ofMillis(2000))) {

Hello Daniel, given our past experience of such timeouts leading to intermittent failures (on slow systems), do you think we should perhaps use a timeout duration of one day here? That way we don't have to guess the right timeout value and the jtreg test framework can timeout this test if it executes past the configured test timeout.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/13019#discussion_r1145762960


More information about the net-dev mailing list