On Mon, 20 Jun 2022 14:09:27 GMT, Daniel Fuchs <dfu...@openjdk.org> wrote:

> Hi,
> 
> Please find here a patch that should help the HttpClient's SelectorManager 
> thread to terminate more timely, allowing the resources consumed by the 
> client to be released earlier.
> 
> The idea is to use a Cleaner registered with the HttpClientFacade to wakeup 
> the Selector when the facade is being gc'ed.
> Some tests have been modified to wait for the selector manager thread to 
> shutdown, and some of them have been observed to timeout when the fix is not 
> in place.

If the selector returns a non zero value when being woken up it means that some 
key is selected, which would imply that some operation is still in progress. So 
isReferenced() would return false in that case (since it returns true only if 
both the facade is no longer referenced and the operation count is reduced to 
0). 
However with HTTP/2, because connections remain open, we could unfortunately 
receive some GOAWAY frame from a server at a time where we're trying to 
shutdown the client, which would then keep it alive for another round. So the 
assumption that if there is something to read or write an operation is still in 
progress may not be 100% true. 
Let me think on this.

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

PR: https://git.openjdk.org/jdk/pull/9217

Reply via email to