> 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 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/21820/files - new: https://git.openjdk.org/jdk/pull/21820/files/7edb48c8..d167b88f Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=21820&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=21820&range=01-02 Stats: 43 lines in 2 files changed: 31 ins; 0 del; 12 mod Patch: https://git.openjdk.org/jdk/pull/21820.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/21820/head:pull/21820 PR: https://git.openjdk.org/jdk/pull/21820