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)
  • Loading branch information
lysu authored May 27, 2020
1 parent 572bba0 commit 322c55a
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 @@ -502,9 +502,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 322c55a

Please sign in to comment.