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

   Provide the exact record offset to QuorumController.replay() in all cases. 
There are several situations where this is useful, such as logging, 
implementing metadata transactions, or handling broker registration records.
   
   In the case where the QC is inactive, and simply replaying records, it is 
easy to compute the exact record offset from the batch base offset and the 
record index.
   
   The active QC case is more difficult. Technically, when we submit records to 
the Raft layer, it can choose a batch end offset later than the one we expect, 
if someone else is also adding records. While the QC is the only entity 
submitting data records, control records may be added at any time. In the 
current implementation, these are really only used for leadership elections. 
However, this could change with the addition of quorum reconfiguration or 
similar features.
   
   Therefore, this PR allows the QC to tell the Raft layer that a record append 
should fail if it would have resulted in a batch end offset other than what was 
expected. This in turn will trigger a controller failover. In the future, if 
automatically added control records become more common, we may wish to have a 
more sophisticated system than this simple optimistic concurrency mechanism. 
But for now, this will allow us to rely on the offset as correct.
   
   *More detailed description of your change,
   if necessary. The PR title and PR message become
   the squashed commit message, so use a separate
   comment to ping reviewers.*
   
   *Summary of testing strategy (including rationale)
   for the feature or bug fix. Unit and/or integration
   tests are expected for any behaviour change and
   system tests should be considered for larger changes.*
   
   ### 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