tikv: skip 0 when call `getMinSafeTSByStores` (#615)

Signed-off-by: Hangjie Mo <mohangjie1995@gmail.com>
This commit is contained in:
Hangjie Mo 2022-11-03 16:45:28 +08:00 committed by GitHub
parent 8f35d3a669
commit ec1202a9d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 7 deletions

View File

@ -487,12 +487,12 @@ func (s *KVStore) GetClusterID() uint64 {
return s.clusterID
}
func (s *KVStore) getSafeTS(storeID uint64) uint64 {
func (s *KVStore) getSafeTS(storeID uint64) (bool, uint64) {
safeTS, ok := s.safeTSMap.Load(storeID)
if !ok {
return 0
return false, 0
}
return safeTS.(uint64)
return true, safeTS.(uint64)
}
// setSafeTS sets safeTs for store storeID, export for testing
@ -511,10 +511,14 @@ func (s *KVStore) getMinSafeTSByStores(stores []*locate.Store) uint64 {
return 0
}
for _, store := range stores {
safeTS := s.getSafeTS(store.StoreID())
if safeTS < minSafeTS {
ok, safeTS := s.getSafeTS(store.StoreID())
if ok {
if safeTS != 0 && safeTS < minSafeTS {
minSafeTS = safeTS
}
} else {
minSafeTS = 0
}
}
return minSafeTS
}
@ -559,7 +563,7 @@ func (s *KVStore) updateSafeTS(ctx context.Context) {
return
}
safeTS := resp.Resp.(*kvrpcpb.StoreSafeTSResponse).GetSafeTs()
preSafeTS := s.getSafeTS(storeID)
_, preSafeTS := s.getSafeTS(storeID)
if preSafeTS > safeTS {
metrics.TiKVSafeTSUpdateCounter.WithLabelValues("skip", storeIDStr).Inc()
preSafeTSTime := oracle.GetTimeFromTS(preSafeTS)