[
https://issues.apache.org/jira/browse/KAFKA-9594?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Manikumar resolved KAFKA-9594.
------------------------------
Resolution: Fixed
Issue resolved by pull request 8153
[https://github.com/apache/kafka/pull/8153]
> speed up the processing of LeaderAndIsrRequest
> ----------------------------------------------
>
> Key: KAFKA-9594
> URL: https://issues.apache.org/jira/browse/KAFKA-9594
> Project: Kafka
> Issue Type: Improvement
> Reporter: Jun Rao
> Assignee: Manikumar
> Priority: Minor
> Fix For: 2.6.0
>
>
> Observations from [~junrao]
> Currently, Partition.makerFollower() holds a write lock on
> leaderIsrUpdateLock. Partition.doAppendRecordsToFollowerOrFutureReplica()
> holds a read lock on leaderIsrUpdateLock. So, if there is an ongoing log
> append on the follower, the makeFollower() call will be delayed. This path is
> a bit different when serving the Partition.makeLeader() call. Before we make
> a call on Partition.makerLeader(), we first remove the follower from the
> replicaFetcherThread. So, the makerLeader() call won't be delayed because of
> log append. This means that when we change one follower to become leader and
> another follower to follow the new leader during a controlled shutdown, the
> makerLeader() call typically completes faster than the makeFollower() call,
> which can delay the follower fetching from the new leader and cause ISR to
> shrink.
> This only reason that Partition.doAppendRecordsToFollowerOrFutureReplica()
> needs to hold a read lock on leaderIsrUpdateLock is for
> Partiiton.maybeReplaceCurrentWithFutureReplica() to pause the log append
> while checking if the log dir could be replaced. We could potentially add a
> separate lock (sth like futureLogLock) that's synced between
> maybeReplaceCurrentWithFutureReplica() and
> doAppendRecordsToFollowerOrFutureReplica(). Then,
> doAppendRecordsToFollowerOrFutureReplica() doesn't need to hold the lock on
> leaderIsrUpdateLock.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)