[
https://issues.apache.org/jira/browse/KAFKA-7152?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dong Lin resolved KAFKA-7152.
-----------------------------
Resolution: Fixed
> replica should be in-sync if its LEO equals leader's LEO
> --------------------------------------------------------
>
> Key: KAFKA-7152
> URL: https://issues.apache.org/jira/browse/KAFKA-7152
> Project: Kafka
> Issue Type: Improvement
> Reporter: Dong Lin
> Assignee: Zhanxiang (Patrick) Huang
> Priority: Major
> Fix For: 2.1.0
>
>
> Currently a replica will be moved out of ISR if follower has not fetched from
> leader for 10 sec (default replica.lag.time.max.ms). This cases problem in
> the following scenario:
> Say follower's ReplicaFetchThread needs to fetch 2k partitions from the
> leader broker. Only 100 out of 2k partitions are actively being produced to
> and therefore the total bytes in rate for those 2k partitions are small. The
> following will happen:
>
> 1) The follower's ReplicaFetcherThread sends FetchRequest for those 2k
> partitions.
> 2) Because the total bytes-in-rate for those 2k partitions is very small,
> follower is able to catch up and leader broker adds these 2k partitions to
> ISR. Follower's lastCaughtUpTimeMs for all partitions are updated to the
> current time T0.
> 3) Since follower has caught up for all 2k partitions, leader updates 2k
> partition znodes to include the follower in the ISR. It may take 20 seconds
> to write 2k partition znodes if each znode write operation takes 10 ms.
> 4) At T0 + 15, maybeShrinkIsr() is invoked on leader broker. Since there is
> no FetchRequet from the follower for more than 10 seconds after T0, all those
> 2k partitions will be considered as out of syn and the follower will be
> removed from ISR.
> 5) The follower receives FetchResponse at least 20 seconds after T0. That
> means the next FetchRequest from follower to leader will be after T0 + 20.
> The sequence of events described above will loop over time. There will be
> constant churn of URP in the cluster even if follower can catch up with
> leader's byte-in-rate. This reduces the cluster availability.
>
> In order to address this problem, one simple approach is to keep follower in
> the ISR as long as follower's LEO equals leader's LEO regardless of
> follower's lastCaughtUpTimeMs. This is particularly useful if there are a lot
> of inactive partitions in the cluster.
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)