Rajini Sivaram created KAFKA-10243: -------------------------------------- Summary: ConcurrentModificationException while processing connection setup timeouts Key: KAFKA-10243 URL: https://issues.apache.org/jira/browse/KAFKA-10243 Project: Kafka Issue Type: Bug Components: network Reporter: Rajini Sivaram Assignee: David Jacot Fix For: 2.7
>From [~guozhang] in [https://github.com/apache/kafka/pull/8683:] {quote} java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445) at java.util.HashMap$KeyIterator.next(HashMap.java:1469) at org.apache.kafka.clients.NetworkClient.handleTimedOutConnections(NetworkClient.java:822) at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:574) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:265) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:236) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:215) at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.joinGroupIfNeeded(AbstractCoordinator.java:419) at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureActiveGroup(AbstractCoordinator.java:359) {quote} While processing connection set up timeouts, we are iterating through the connecting nodes to process timeouts and we disconnect within the loop, removing the entry from the set in the loop that it iterating over the set: {code} for (String nodeId : connectingNodes) { if (connectionStates.isConnectionSetupTimeout(nodeId, now)) { this.selector.close(nodeId); log.debug( "Disconnecting from node {} due to socket connection setup timeout. " + "The timeout value is {} ms.", nodeId, connectionStates.connectionSetupTimeoutMs(nodeId)); processDisconnection(responses, nodeId, now, ChannelState.LOCAL_CLOSE); } } {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)