Rajini Sivaram created KAFKA-7280: ------------------------------------- Summary: ConcurrentModificationException in FetchSessionHandler in heartbeat thread Key: KAFKA-7280 URL: https://issues.apache.org/jira/browse/KAFKA-7280 Project: Kafka Issue Type: Bug Components: consumer Affects Versions: 2.0.0, 1.1.1 Reporter: Rajini Sivaram Assignee: Rajini Sivaram Fix For: 1.1.2, 2.0.1, 2.1.0
Request/response handling in FetchSessionHandler is not thread-safe. But we are using it in Kafka consumer without any synchronization even though poll() from heartbeat thread can process responses. Heartbeat thread holds the coordinator lock while processing its poll and responses, making other operations involving the group coordinator safe. We also need to lock FetchSessionHandler for the operations that update or read FetchSessionHandler#sessionPartitions. This exception is from a system test run on trunk of TestSecurityRollingUpgrade.test_rolling_upgrade_sasl_mechanism_phase_two: {quote} [2018-08-12 06:13:22,316] ERROR [Consumer clientId=console-consumer, groupId=group] Heartbeat thread failed due to unexpected error (org.apache.kafka.clients.consumer.internals.AbstractCoordinator) java.util.ConcurrentModificationException at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719) at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:742) at org.apache.kafka.clients.FetchSessionHandler.responseDataToLogString(FetchSessionHandler.java:362) at org.apache.kafka.clients.FetchSessionHandler.handleResponse(FetchSessionHandler.java:424) at org.apache.kafka.clients.consumer.internals.Fetcher$1.onSuccess(Fetcher.java:216) at org.apache.kafka.clients.consumer.internals.Fetcher$1.onSuccess(Fetcher.java:206) at org.apache.kafka.clients.consumer.internals.RequestFuture.fireSuccess(RequestFuture.java:167) at org.apache.kafka.clients.consumer.internals.RequestFuture.complete(RequestFuture.java:127) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient$RequestFutureCompletionHandler.fireCompletion(ConsumerNetworkClient.java:575) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.firePendingCompletedRequests(ConsumerNetworkClient.java:389) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:297) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.pollNoWakeup(ConsumerNetworkClient.java:304) at org.apache.kafka.clients.consumer.internals.AbstractCoordinator$HeartbeatThread.run(AbstractCoordinator.java:996) {quote} -- This message was sent by Atlassian JIRA (v7.6.3#76005)