On Mon, 19 Aug 2024 16:30:09 GMT, Daniel D. Daugherty <dcu...@openjdk.org> 
wrote:

>> The `ClassLoadingMXBean` and `MemoryMXBean` APIs have `setVerbose` methods 
>> to control verbose mode and `isVerbose` methods to query it. Some JCK tests 
>> expect `setVerbose(false)` to disable verbose mode and, subsequently, 
>> `isVerbose()` to return false. However, if logging to a file is enabled by 
>> using -Xlog on the java launcher command line then `isVerbose()` returns 
>> true even after calling `setVerbose(false)`.
>> 
>> The proposed patch solves this by introducing two changes:
>> 
>> 1) The previous implementation used the `log_is_enabled` functionality to 
>> check if logging was enabled for the given tag set. This returns true if 
>> logging has been turned on for *any* output. The patch changes this so that 
>> `isVerbose` only checks what has been configured for stdout, which is the 
>> output that `setVerbose` configures.
>> 
>> 2) The previous implementation of `setVerbose` turned on `class+load*` 
>> (notice the star) but then `isVerbose` only checked `class+load` (without 
>> the star). The patch changes this so that the `isVerbose` in-effect checks 
>> `class+load*`. (The `gc` part of the patch did not have this problem)
>> 
>> The main focus on this patch is to fix the JCK failure, with an 
>> implementation that follows the API documentation. While looking at this 
>> area of the code it is clear that there are other problems that we might 
>> want to addressed in the future, but we're intentionally keeping this patch 
>> limited in scope so that it can be backported to JDK 23.
>> 
>> A CSR for this change has been created.
>> 
>> Testing:
>> * The newly implemented tests
>> * The failing JCK tests with the corresponding -Xlog lines
>> * Tier1-7 (running)
>> 
>> The patch is co-authored by me and David Holmes
>
> src/hotspot/share/services/memoryService.cpp line 218:
> 
>> 216: 
>> 217:   return false;
>> 218: }
> 
> If we have `-Xlog:gc` and `-Xlog:gc+foo` set I think this version of
> `MemoryService::get_verbose()` will return `false`. Is that really
> what we want?

Update: Looks like the CSR says that's exactly what we want.

> test/jdk/java/lang/management/ClassLoadingMXBean/TestVerboseClassLoading.java 
> line 36:
> 
>> 34:  * @run main/othervm -Xlog:class+load=trace TestVerboseClassLoading false
>> 35:  * @run main/othervm -Xlog:class+load=debug TestVerboseClassLoading false
>> 36:  * @run main/othervm -Xlog:class+load=info TestVerboseClassLoading false
> 
> Hmm... I was expecting these to be `true`. What am I missing?

Update: The CSR makes it clear that it is `-Xlog:class+load*` so all have to be 
set.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20628#discussion_r1722075468
PR Review Comment: https://git.openjdk.org/jdk/pull/20628#discussion_r1722069521

Reply via email to