RFR: 8305186: Reference.waitForReferenceProcessing should be more accessible to tests

Brent Christian bchristi at openjdk.org
Tue Apr 8 22:58:30 UTC 2025


On Tue, 8 Apr 2025 21:19:06 GMT, Roger Riggs <rriggs at openjdk.org> wrote:

>> Certain specific types of tests involving GC and reference processing need to account for the delay between a GC completing (during which the GC clears a Reference), and the Reference being added to its associated queue. At present, ad hoc mechanisms (with delays/timeout) are used, but can lead to intermittent test failures ([JDK-8298783](https://bugs.openjdk.org/browse/JDK-8298783)  is a recent example).
>> 
>> A better mechanism already exists in the private `Reference.waitForReferenceProcessing()` method. This PR makes `waitForReferenceProcessing()` available to tests via the `WhiteBox` and `ForceGC` test libraries.
>
> test/lib/jdk/test/whitebox/WhiteBox.java line 569:
> 
>> 567:    * This method should usually be called after a call to WhiteBox.fullGC().
>> 568:    */
>> 569:   public static void waitForReferenceProcessing() {
> 
> Can the code duplication be avoided?

That would be nice.
A primary goal here is to not disrupt existing tests that use `WhiteBox` or `ForceGC`, (e.g. by necessitating additional tags, `@run` arguments, etc).
I don't think there's a way for `WhiteBox.java` and `ForceGC.java` to both refer to code at some shared location without tests having to add a new tag - `@build`, I think.
However I will look into it a bit further.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24527#discussion_r2034139841


More information about the core-libs-dev mailing list