On Tue, 12 Nov 2024 16:12:36 GMT, kabutz <d...@openjdk.org> wrote:

>> Since Java 10, spliterators for the ConcurrentSkipListMap were pointing to 
>> the head, which has item == null, rather than to the first element. The 
>> trySplit() method no longer worked, and always returned null. Therefore, 
>> parallel streams have not worked for ConcurrentSkipListMap and 
>> ConcurrentSkipListSet since Java 10. It worked correctly in Java 8 and 9.
>> 
>> The problem lies in the constructor calls for the various spliterators. In 
>> Java 9, we pass in head.node.next as "origin" into the  constructor. In Java 
>> 10, this was changed to just head.node as "origin". Since the "item" field 
>> is always null on head.node, we never enter the first if() statement in the 
>> trySplit() method and thus it always returns null.
>
> kabutz has updated the pull request incrementally with one additional commit 
> since the last revision:
> 
>   Removed NPE when set is empty and added TCK test

Nice catch, @kabutz !

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

Marked as reviewed by vklang (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/21820#pullrequestreview-2433824217

Reply via email to