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

   KAFKA-14379: consumer should refresh preferred read replica on update 
metadata
       
   The consumer (fetcher) used to refresh the preferred read replica on
   three conditions:
       
   1. the consumer receives an OFFSET_OUT_OF_RANGE error
   2. the follower does not exist in the client's metadata (i.e., offline)
   3. after metadata.max.age.ms (5 min default)
       
   For other errors, it will continue to reach to the possibly unavailable
   follower and only after 5 minutes will it refresh the preferred read
   replica and go back to the leader.
       
   Another problem is that the client might have stale metadata and not
   send fetches to preferred replica, even after the leader redirects to
   the preferred replica.
       
   A specific example is when a partition is reassigned. the consumer will
   get NOT_LEADER_OR_FOLLOWER which triggers a metadata update but the
   preferred read replica will not be refreshed as the follower is still
   online. it will continue to reach out to the old follower until the
   preferred read replica expires.
       
   The consumer can instead refresh its preferred read replica whenever it
   makes a metadata update request, so when the consumer receives i.e.
   NOT_LEADER_OR_FOLLOWER it can find the new preferred read replica without
   waiting for the expiration.
       
   Generally, we will rely on the leader to choose the correct preferred
   read replica and have the consumer fail fast (clear preferred read replica
   cache) on errors and reach out to the leader.
   
   ### 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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to