Skip to content

Commit

Permalink
tikv: fix infinite follower/learner retry when network partition only…
Browse files Browse the repository at this point in the history
… between leader and follower/learner (#17441) (#17443)
  • Loading branch information
sre-bot authored May 30, 2020
1 parent 689a6b6 commit abe3e72
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions store/tikv/region_cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -521,9 +521,11 @@ func (c *RegionCache) OnSendFail(bo *Backoffer, ctx *RPCContext, scheduleReload
rs := r.getStore()
if err != nil {
s := rs.stores[ctx.PeerIdx]
followerRead := int(rs.workTiKVIdx) != ctx.PeerIdx

// send fail but store is reachable, keep retry current peer.
if s.requestLiveness(bo) == reachable {
// send fail but store is reachable, keep retry current peer for replica leader request.
// but we still need switch peer for follower-read or learner-read(i.e. tiflash)
if ctx.Store.storeType == kv.TiKV && !followerRead && s.requestLiveness(bo) == reachable {
return
}

Expand Down

0 comments on commit abe3e72

Please sign in to comment.