This patch contains the broker-side support for the fencing improvements from 
KIP-320. This includes the leader epoch validation in the ListOffsets, 
OffsetsForLeaderEpoch, and Fetch APIs as well as the changes needed in the 
fetcher threads to maintain and use the current leader epoch. The client 
changes from KIP-320 will be left for a follow-up, but the new error codes have 
been added to the error handling inside `Fetcher`.

One notable change worth mentioning is that we now require the read lock in 
`Partition` in order to read from the log or to query offsets. This is 
necessary to ensure the safety of the leader epoch validation. Additionally, we 
forward all leader epoch changes to the replica fetcher thread and go through 
the truncation phase. This is needed to ensure the fetcher always has the 
latest epoch and to guarantee that we cannot miss needed truncation if we 
missed an epoch change.

### Committer Checklist (excluded from commit message)
- [ ] Verify design and implementation 
- [ ] Verify test coverage and CI build status
- [ ] Verify documentation (including upgrade notes)


[ Full content available at: https://github.com/apache/kafka/pull/5661 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to