hachikuji opened a new pull request, #12499:
URL: https://github.com/apache/kafka/pull/12499

   It is possible currently for a leader to send an `AlterPartition` request to 
a stale controller which does not have the latest leader epoch discovered 
through a `LeaderAndIsr` request. In this case, the stale controller returns 
`FENCED_LEADER_EPOCH`, which causes the partition leader to get stuck. This is 
a change in behavior following https://github.com/apache/kafka/pull/12032. 
Prior to that patch, the request would either be accepted (potentially 
incorrectly) if the `LeaderAndIsr` state matched that on the controller, or it 
would have returned `NOT_CONTROLLER`. 
   
   This patch fixes the problem by ensuring that `AlterPartition` is sent to a 
controller with an epoch which is at least as large as that of the controller 
which sent the `LeaderAndIsr` request. This ensures that the 
`FENCED_LEADER_EPOCH` error from the controller can be trusted.
   
   A more elegant solution to this problem would probably be to include the 
controller epoch in the `AlterPartition` request, but this would require a 
version bump. Alternatively, we considered letting the controller return 
`UNKNOWN_LEADER_EPOCH` instead of `FENCED_LEADER_EPOCH` when the epoch is 
larger than what it has in its context. This too likely would require a version 
bump. Finally, we considered reverting 
https://github.com/apache/kafka/pull/12032, which would restore the looser 
validation logic which allows the controller to accept `AlterPartition` 
requests with larger leader epochs. We rejected this option because we feel it 
can lead to correctness violations.
   
   ### Committer Checklist (excluded from commit message)
   - [ ] Verify design and implementation 
   - [ ] Verify test coverage and CI build status
   - [ ] Verify documentation (including upgrade notes)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to