Skip to content

Commit

Permalink
*: check if GetStore returns nil
Browse files Browse the repository at this point in the history
close tikv#4344

Signed-off-by: disksing <i@disksing.com>
  • Loading branch information
disksing authored and ti-chi-bot committed Nov 24, 2021
1 parent fe6fab9 commit fa56ed5
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 3 deletions.
6 changes: 5 additions & 1 deletion server/schedule/checker/replica_strategy.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,12 @@ func (s *ReplicaStrategy) SelectStoreToFix(coLocationStores []*core.StoreInfo, o
func (s *ReplicaStrategy) SelectStoreToImprove(coLocationStores []*core.StoreInfo, old uint64) uint64 {
// trick to avoid creating a slice with `old` removed.
s.swapStoreToFirst(coLocationStores, old)
oldStore := s.cluster.GetStore(old)
if oldStore == nil {
return 0
}
filters := []filter.Filter{
filter.NewLocationImprover(s.checkerName, s.locationLabels, coLocationStores, s.cluster.GetStore(old)),
filter.NewLocationImprover(s.checkerName, s.locationLabels, coLocationStores, oldStore),
}
if len(s.locationLabels) > 0 && s.isolationLevel != "" {
filters = append(filters, filter.NewIsolationFilter(s.checkerName, s.isolationLevel, s.locationLabels, coLocationStores[1:]))
Expand Down
9 changes: 9 additions & 0 deletions server/schedule/region_scatterer.go
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,9 @@ func (r *RegionScatterer) scatterRegion(region *core.RegionInfo, group string) *
// Group peers by the engine of their stores
for _, peer := range region.GetPeers() {
store := r.cluster.GetStore(peer.GetStoreId())
if store == nil {
return nil
}
if ordinaryFilter.Target(r.cluster.GetOpts(), store) {
ordinaryPeers[peer.GetId()] = peer
} else {
Expand Down Expand Up @@ -426,6 +429,9 @@ func (r *RegionScatterer) selectAvailableLeaderStore(group string, peers map[uin
leaderCandidateStores := make([]uint64, 0)
for storeID := range peers {
store := r.cluster.GetStore(storeID)
if store == nil {
return 0
}
engine := store.GetLabelValue(core.EngineKey)
if len(engine) < 1 {
leaderCandidateStores = append(leaderCandidateStores, storeID)
Expand All @@ -450,6 +456,9 @@ func (r *RegionScatterer) Put(peers map[uint64]*metapb.Peer, leaderStoreID uint6
for _, peer := range peers {
storeID := peer.GetStoreId()
store := r.cluster.GetStore(storeID)
if store == nil {
continue
}
if ordinaryFilter.Target(r.cluster.GetOpts(), store) {
r.ordinaryEngine.selectedPeer.Put(storeID, group)
scatterDistributionCounter.WithLabelValues(
Expand Down
6 changes: 5 additions & 1 deletion server/schedulers/shuffle_region.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,11 @@ func (s *shuffleRegionScheduler) scheduleRemovePeer(cluster opt.Cluster) (*core.
}

func (s *shuffleRegionScheduler) scheduleAddPeer(cluster opt.Cluster, region *core.RegionInfo, oldPeer *metapb.Peer) *metapb.Peer {
scoreGuard := filter.NewPlacementSafeguard(s.GetName(), cluster, region, cluster.GetStore(oldPeer.GetStoreId()))
store := cluster.GetStore(oldPeer.GetStoreId())
if store == nil {
return nil
}
scoreGuard := filter.NewPlacementSafeguard(s.GetName(), cluster, region, store)
excludedFilter := filter.NewExcludedFilter(s.GetName(), nil, region.GetStoreIds())

target := filter.NewCandidates(cluster.GetStores()).
Expand Down
2 changes: 1 addition & 1 deletion server/statistics/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func (s *StoresStats) FilterUnhealthyStore(cluster core.StoreSetInformer) {
defer s.Unlock()
for storeID := range s.rollingStoresStats {
store := cluster.GetStore(storeID)
if store.IsTombstone() || store.IsUnhealthy() || store.IsPhysicallyDestroyed() {
if store == nil || store.IsTombstone() || store.IsUnhealthy() || store.IsPhysicallyDestroyed() {
delete(s.rollingStoresStats, storeID)
}
}
Expand Down

0 comments on commit fa56ed5

Please sign in to comment.