diff --git a/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollEventLoop.java b/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollEventLoop.java index 909088fde4..2607615117 100644 --- a/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollEventLoop.java +++ b/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollEventLoop.java @@ -350,6 +350,8 @@ final class EpollEventLoop extends SingleThreadEventLoop { } catch (IOException ignore) { // ignore on close } + // Using the intermediate collection to prevent ConcurrentModificationException. + // In the `close()` method, the channel is deleted from `channels` map. Collection array = new ArrayList(channels.size()); for (AbstractEpollChannel channel: channels.values()) {