On Sat, 20 Jan 2024 15:05:09 GMT, Andrey Turbanov <aturba...@openjdk.org> wrote:
>> Suggested fix [JDK-8307091](https://bugs.openjdk.org/browse/JDK-8307091) >> also created concurrent exception intermittently (monthly once/quarterly >> once) on CI system. The issue was not able to be reproduced yet, hence >> proposing an alternative fix which uses iterators to compare the List. >> CI testing shows green. > > src/java.desktop/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java > line 417: > >> 415: } >> 416: >> 417: private synchronized <T> boolean compareIterators(Iterator<T> >> iterator1, Iterator<T> iterator2) { > > I'm not sure I understand, how this `synchronized` helps to avoid the issue. Since concurrent modification exception is thrown, it is clear that the List is being modified while comparing two list. Hence instead of copying the list locally, I have used iterators and comparing element by element in a `synchronized` method which ensures single thread is accessing the iterators. Without `synchronized` I guess it would again cause `concurrentModificationException`. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/17462#discussion_r1461412618