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