RFR: 8314515: java/util/concurrent/SynchronousQueue/Fairness.java failed with "Error: fair=false i=8 j=0"

Viktor Klang vklang at openjdk.org
Wed Jan 10 17:50:23 UTC 2024


On Wed, 10 Jan 2024 17:18:41 GMT, Alan Bateman <alanb at openjdk.org> wrote:

>> While this might not fix 8314515, it should at least make it more exact.
>
> test/jdk/java/util/concurrent/SynchronousQueue/Fairness.java line 42:
> 
>> 40:     private static void testFairness(boolean fair,
>> 41:                                      final SynchronousQueue<Integer> q,
>> 42:                                      final VarHandle underlyingHandle)
> 
> The updated approach to wait until the thread is finished putting seems okay. It might be a bit cleaner for the param to testFariness be the underlying LTQ rather than calling it with a VarHandle, meaning do this in the caller.

I tried that first, but since the SynchronousQueue needs to be the one interfaced with it means passing in a SynchronousQueue and a LinkedTransferQueue pair where there is a silent dependency between the two (the LTQ needs to be the Transferer of the SynchronousQueue) so I found it safer, and more straightforward to obtain it in testFairness.

What might make it cleaner still, would be to move the creation of the MH to a static and not pass that in as an argument, so I'll do that instead. 👍

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

PR Review Comment: https://git.openjdk.org/jdk/pull/17082#discussion_r1447727942


More information about the core-libs-dev mailing list