Skip to content

Commit

Permalink
This is an automated cherry-pick of tikv#9021
Browse files Browse the repository at this point in the history
close tikv#9020

Signed-off-by: ti-chi-bot <ti-community-prow-bot@tidb.io>
  • Loading branch information
lhy1024 authored and ti-chi-bot committed Feb 11, 2025
1 parent 166f3a9 commit 9fed45d
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions pkg/tso/global_allocator.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,26 @@ func (gta *GlobalTSOAllocator) IsInitialize() bool {
}

// UpdateTSO is used to update the TSO in memory and the time window in etcd.
<<<<<<< HEAD
func (gta *GlobalTSOAllocator) UpdateTSO() error {
return gta.timestampOracle.UpdateTimestamp(gta.member.GetLeadership())
=======
func (gta *GlobalTSOAllocator) UpdateTSO() (err error) {
// When meet network partition, we need to manually retry to update the global tso,
// next request succeeds with the new endpoint, according to https://github.com/etcd-io/etcd/issues/8711
maxRetryCount := 3
for range maxRetryCount {
err = gta.timestampOracle.UpdateTimestamp()
if err == nil {
return nil
}
log.Warn("try to update the global tso but failed", errs.ZapError(err))
// Etcd client retry with roundRobinQuorumBackoff https://github.com/etcd-io/etcd/blob/d62cdeee4863001b09e772ed013eb1342a1d0f89/client/v3/client.go#L488
// And its default interval is 25ms, so we sleep 50ms here. https://github.com/etcd-io/etcd/blob/d62cdeee4863001b09e772ed013eb1342a1d0f89/client/v3/options.go#L53
time.Sleep(50 * time.Millisecond)
}
return
>>>>>>> ac4e640fa (tso: add retry for UpdateTSO (#9021))
}

// SetTSO sets the physical part with given TSO.
Expand Down

0 comments on commit 9fed45d

Please sign in to comment.