kehu created KAFKA-8171:
---------------------------
Summary: callback needs to be null when
addStopReplicaRequestForBrokers when replica state transits to offline
Key: KAFKA-8171
URL: https://issues.apache.org/jira/browse/KAFKA-8171
Project: Kafka
Issue Type: Bug
Components: controller
Reporter: kehu
Problem:
In ControllerChannelManager.sendRequestsToBrokers, for STOP_REPLICA requests,
it will try to group the requests based on deletePartition flag and callback:
val (replicasToGroup, replicasToNotGroup) = replicaInfoList.partition(r =>
!r.deletePartition && r.callback == null)
When both conditions meet, controller is expected to send only one request to
destination broker. However, when adding the requests in ReplicaStateMachine,
it's putting in non-null callback (_,_)=>(). Therefore, replicasToGroup is
always empty and controller will always first sends an empty request followed
by #partitions requests.
Fix: set the callback to null in addStopReplicaRequestForBrokers when replica
state transits to offline.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)