[
https://issues.apache.org/jira/browse/KAFKA-10243?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rajini Sivaram resolved KAFKA-10243.
------------------------------------
Reviewer: Rajini Sivaram
Resolution: Fixed
> 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
> Priority: Major
> 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)