RFR: 8308310: HttpClient: Avoid logging or locking from within synchronized blocks [v8]

Daniel Fuchs dfuchs at openjdk.org
Tue May 23 15:11:10 UTC 2023


> 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 with a new target base due to a merge or a rebase. The pull request now contains 11 commits:

 - Merge branch 'master' into HttpClient-Logging-8308310
 - Merge branch 'master' into HttpClient-Logging-8308310
 - Fix whitespace
 - make stateLock final
 - Add debug traces to ExpectContinueTest.java
 - failedRef should be final
 - Align parameters
 - 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>
 - ... and 1 more: https://git.openjdk.org/jdk/compare/c0c4d771...c5d2f1f2

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

Changes: https://git.openjdk.org/jdk/pull/14038/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14038&range=07
  Stats: 891 lines in 32 files changed: 519 ins; 113 del; 259 mod
  Patch: https://git.openjdk.org/jdk/pull/14038.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14038/head:pull/14038

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


More information about the net-dev mailing list