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