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

Jaikiran Pai jpai at openjdk.org
Thu Mar 23 07:49:47 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

The latest updated wording to the specification in `HttpClient` looks good to me. It adds more clarity on what kind of work might happen (internally in the background) when the client is closed. The implementation changes too look good to me. I've added some test specific comments inline.

Overall, the changes in this PR look good to me and I believe the addition of these new APIs will allow applications to control the lifecycle and resources used by the `HttpClient` in a much more deterministic way.

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

PR Comment: https://git.openjdk.org/jdk/pull/13019#issuecomment-1480730668


More information about the net-dev mailing list