On Fri, 18 Aug 2023 08:18:24 GMT, Viktor Klang <d...@openjdk.org> wrote:
>> The usual tiny improvements, with no guarantee that the intermittent test >> failure is actually fixed. > > test/jdk/java/util/concurrent/SynchronousQueue/Fairness.java line 70: > >> 68: fair, i, threadCount, j)); >> 69: } >> 70: for (Thread t : ts) t.join(); > > @Martin-Buchholz Makes a lot of sense to make sure that all threads have > terminated before exiting the test 👍 There's a lot of infrastructure in JSR166TestCase.java to address this. Some of it could be librarified for use by other openjdk tests. * <li>All code not running in the main test thread (manually spawned threads * or the common fork join pool) must be checked for failure (and completion!). * Mechanisms that can be used to ensure this are: * <ol> * <li>Signalling via a synchronizer like AtomicInteger or CountDownLatch * that the task completed normally, which is checked before returning from * the test method in the main thread. * <li>Using the forms {@link #threadFail}, {@link #threadAssertTrue}, * or {@link #threadAssertNull}, (not {@code fail}, {@code assertTrue}, etc.) * Only the most typically used JUnit assertion methods are defined * this way, but enough to live with. * <li>Recording failure explicitly using {@link #threadUnexpectedException} * or {@link #threadRecordFailure}. * <li>Using a wrapper like CheckedRunnable that uses one the mechanisms above. * </ol> ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/15337#discussion_r1299029889