> This PR covers a number of issues with j.l.management.ThreadMXBean, and the 
> JDK-specific extension c.s.management.ThreadMXBean, when there are virtual 
> threads in use.
> 
> As background, ThreadMXBean was re-specified in Java 19 to support the 
> monitoring and management of platform threads. It does not support virtual 
> threads as their potential number, and the need to find a thread by id, does 
> not make sense for this API. At the same time, JDK 19 introduced an 
> alternative implementation of virtual threads for Zero and ports without 
> continuations support in the VM. This alternative implementation of virtual 
> threads means a JavaThread per virtual thread and so requires filtering to 
> ensure that the API behaves as specified. For the initial implementation, the 
> filtering was done in the ThreadMXBean implementation. That works for most 
> functions but not for getThreadXXXTime(long[]) and 
> getThreadAllocatedBytes(long[]) where the filtering needs to be pushed down 
> to the management code.
> 
> The changes in this PR move the filtering to the management functions 
> (jmm_XXX) so they only return information about platform threads. It also 
> fixes ThreadMXBean.getCurrentThreadCpuTime and getCurrentThreadUserTime to 
> not throw UOE when CPU time measurement from a platform thread is supported. 
> There are some small adjustments to the API docs (see linked CSR). Test 
> coverage is expanded as we didn't include tests for 
> c.s.management.ThreadMXBean with virtual threads in JDK 19.
> 
> Testing tier1-3 (jdk_management test group is in test/jdk/:tier3), plus 
> sanity checking that --with-jvm-variants=minimal builds as some of this code 
> is not compiled in with minimal VM builds.

Alan Bateman has updated the pull request with a new target base due to a merge 
or a rebase. The incremental webrev excludes the unrelated changes brought in 
by the merge/rebase. The pull request contains eight additional commits since 
the last revision:

 - Tweak javadoc to avoid listing too many conditions in @return description
 - Merge
 - Update isXXXThreadCpuTimeSupported descriptions
 - Clarify Thread CPU time seciton of spec
 - Merge
 - Fix minimal build
 - Fix minimal build
 - Initial commit

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/12762/files
  - new: https://git.openjdk.org/jdk/pull/12762/files/956a1e0d..dd212cdb

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=12762&range=03
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=12762&range=02-03

  Stats: 1256 lines in 50 files changed: 999 ins; 156 del; 101 mod
  Patch: https://git.openjdk.org/jdk/pull/12762.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12762/head:pull/12762

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

Reply via email to