On Thu, 26 May 2022 07:17:12 GMT, Jaikiran Pai <j...@openjdk.org> wrote:
> Can I please get a review of this change which addresses the issue noted in > https://bugs.openjdk.java.net/browse/JDK-8287318? > > The `ServerImpl` has a `Dispatcher` thread which uses a `Selector` to select > keys of interested. The selected keys is then iterated over and each key is > removed through the iterator. This is fine as long as the selector isn't then > used to invoke select operation(s) while the iterator is still in use. Doing > so leads to the underlying Set being potentially modified with updates to the > selected keys. As a result any subsequent use of the iterator will lead to > `ConcurrentModificationException` as seen in the linked issue. > > The commit here fixes that by creating a copy of the selected keys and > iterating over it so that any subsequent select operation on the selector > won't have impact on the Set that is being iterated upon. > > No new tests have been added given the intermittent nature of this issue. > Existing tier1, tier2 and tier3 tests passed without any related failures, > after this change. This pull request has now been integrated. Changeset: 3deb58a8 Author: Jaikiran Pai <j...@openjdk.org> URL: https://git.openjdk.java.net/jdk/commit/3deb58a89a79fd562fe0736e753e6a677234c8c7 Stats: 8 lines in 1 file changed: 4 ins; 0 del; 4 mod 8287318: ConcurrentModificationException in sun.net.httpserver.ServerImpl$Dispatcher Reviewed-by: dfuchs ------------- PR: https://git.openjdk.java.net/jdk/pull/8898