On Wed, 1 Mar 2023 12:39:52 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 incrementally with one additional 
> commit since the last revision:
> 
>   Update isXXXThreadCpuTimeSupported descriptions

Marked as reviewed by mchung (Reviewer).

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

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

Reply via email to