[ https://issues.apache.org/jira/browse/KAFKA-4443?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15705851#comment-15705851 ]
Jun Rao commented on KAFKA-4443: -------------------------------- [~lindong], thanks for filing the jira. A couple of questions. (1) I am not sure that I understand the description in the jira "However, if a broker right after controller election,". Could you clarify that? (2) Is this the same issue as reported in https://issues.apache.org/jira/browse/KAFKA-3042 and is the fix the same? If so, it would be useful to mark the other one as duplicate. > Controller should send UpdateMetadataRequest prior to LeaderAndIsrRequest > during failover > ----------------------------------------------------------------------------------------- > > Key: KAFKA-4443 > URL: https://issues.apache.org/jira/browse/KAFKA-4443 > Project: Kafka > Issue Type: Bug > Reporter: Dong Lin > Assignee: Dong Lin > > Currently in onControllerFailover(), controller will startup > replicaStatemachine and partitionStateMachine before invoking > sendUpdateMetadataRequest(controllerContext.liveOrShuttingDownBrokerIds.toSeq). > However, if a broker right after controller election, the > LeaderAndIsrRequest sent to follower partitions on this broker will all be > ignored because broker doesn't know the leaders are alive. > To fix this problem, in onControllerFailover(), controller should send > UpdateMetadataRequest to brokers after initializeControllerContext() but > before it starts replicaStatemachine and partitionStateMachine. The first > MetadatUpdateRequest will include list of live broker. Although it will not > include partition leader information, it is OK because we will always send > MetadataUpdateRequest again when we send LeaderAndIsrRequest during > replicaStateMachine.startup() and partitionStateMachine.startup(). -- This message was sent by Atlassian JIRA (v6.3.4#6332)