RFR: 8308310: HttpClient: Avoid logging or locking from within synchronized blocks [v2]
Andrey Turbanov
aturbanov at openjdk.org
Thu May 18 12:35:51 UTC 2023
On Thu, 18 May 2023 10:04:10 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:
>> Please find here a change that revisits usage of monitors in the HttpClient.
>>
>> With Virtual Threads now part of the platform it should be possible to pass a newVirtualThreadPerTaskExecutor to the HttpClient. Logging, when enabled, and when called from a synchronized block, can cause the carrier thread to get pinned in case of contention when printing through the underlying PrintStream.
>>
>> This change aims at avoiding situations where the carrier threads might get pinned.
>
> Daniel Fuchs has updated the pull request incrementally with three additional commits since the last revision:
>
> - Update src/java.net.http/share/classes/jdk/internal/net/http/Http1Response.java
>
> Co-authored-by: Andrey Turbanov <turbanoff at gmail.com>
> - Update src/java.net.http/share/classes/jdk/internal/net/http/ConnectionPool.java
>
> Co-authored-by: Andrey Turbanov <turbanoff at gmail.com>
> - Update test/jdk/java/net/httpclient/AuthFilterCacheTest.java
>
> Co-authored-by: Andrey Turbanov <turbanoff at gmail.com>
src/java.net.http/share/classes/jdk/internal/net/http/Http1Exchange.java line 72:
> 70: /** Records a possible cancellation raised before any operation
> 71: * has been initiated, or an error received while sending the request. */
> 72: private AtomicReference<Throwable> failedRef = new AtomicReference<>();
Seems it's only modified under lock. Can we use `volatile` instead?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14038#discussion_r1197759798
More information about the net-dev
mailing list