RFR: 8298783: java/lang/ref/FinalizerHistogramTest.java failed with "RuntimeException: MyObject is not found in test output"
Mikhail Yankelevich
myankelevich at openjdk.org
Fri Mar 21 14:30:09 UTC 2025
On Thu, 20 Mar 2025 22:35:23 GMT, Brent Christian <bchristi at openjdk.org> wrote:
> I propose some cleanups to `FinalizerHistogramTest.java` to hopefully clear up the intermittent failures:
>
> * run with `othervm`: this test blocks the (global) finalizer thread, and also requires the (global) finalizer thread to enter the test's `finalize()` method
> * The test uses `volatile` ints, but sets them based on their current value, which is not reliable; convert to `AtomicInteger`
> * use `PhantomReference`s to ensure that at least two `MyObject`s have become unreachable. If one is stuck in `finalize()`, at least one is still waiting to be finalized and should show up in the histogram.
test/jdk/java/lang/ref/FinalizerHistogramTest.java line 38:
> 36: * @modules java.base/java.lang.ref:open
> 37: * @library /test/lib
> 38: * @build jdk.test.lib.util.ForceGC
I don't think `@build` is doing anything here
test/jdk/java/lang/ref/FinalizerHistogramTest.java line 45:
> 43: static ReentrantLock lock = new ReentrantLock();
> 44: static final AtomicInteger wasInitialized = new AtomicInteger(0);
> 45: static final AtomicInteger wasTrapped = new AtomicInteger(0);
Minor: Do you think the name might be confusing? May be naming `wasInitialized` and `wasTrapped` as `initialisedCount` and `trappedCount` might be more descriptive, what do you think?
test/jdk/java/lang/ref/FinalizerHistogramTest.java line 72:
> 70: // GC and wait for at least 2 MyObjects to be ready for finalization,
> 71: // and one MyObject to be stuck in finalize().
> 72: ForceGC.wait(() -> { return ref1.refersTo(null) &&
Nitpick: I think you don't need a { return ....} here, it can be a pure lambda afaik. But if you prefer this way, I don't mind in the slightest 😃
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24143#discussion_r2007697872
PR Review Comment: https://git.openjdk.org/jdk/pull/24143#discussion_r2007697994
PR Review Comment: https://git.openjdk.org/jdk/pull/24143#discussion_r2007698178
More information about the core-libs-dev
mailing list