On Thu, 2 Mar 2023 08:18:03 GMT, Alan Bateman <al...@openjdk.org> wrote:

>> 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

Looks good to me.

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

Marked as reviewed by pchilanomate (Reviewer).

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

Reply via email to