Skip to content

Commit

Permalink
scatter: fix incorrect judgment condition (#7111) (#7118)
Browse files Browse the repository at this point in the history
close #7109

Signed-off-by: ti-chi-bot <[email protected]>
Signed-off-by: Cabinfever_B <[email protected]>

Co-authored-by: Yongbo Jiang <[email protected]>
Co-authored-by: Cabinfever_B <[email protected]>
Co-authored-by: ti-chi-bot[bot] <108142056+ti-chi-bot[bot]@users.noreply.github.com>
  • Loading branch information
3 people authored Oct 7, 2023
1 parent ed629e9 commit d499de1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
2 changes: 1 addition & 1 deletion server/schedule/region_scatterer.go
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ func (r *RegionScatterer) selectNewPeer(context engineContext, group string, pee
originStorePickedCount := uint64(math.MaxUint64)
for _, store := range stores {
storeCount := context.selectedPeer.Get(store.GetID(), group)
if store.GetID() == peer.GetId() {
if store.GetID() == peer.GetStoreId() {
originStorePickedCount = storeCount
}
// If storeCount is equal to the maxStoreTotalCount, we should skip this store as candidate.
Expand Down
23 changes: 19 additions & 4 deletions server/schedule/region_scatterer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ func TestScatterRegions(t *testing.T) {
scatter(re, 5, 50, true)
scatter(re, 5, 500, true)
scatter(re, 6, 50, true)
scatter(re, 7, 71, true)
scatter(re, 5, 50, false)
scatterSpecial(re, 3, 6, 50)
scatterSpecial(re, 5, 5, 50)
Expand Down Expand Up @@ -125,19 +126,33 @@ func scatter(re *require.Assertions, numStores, numRegions uint64, useRules bool
}
}
}
maxStorePeerTotalCount := uint64(0)
minStorePeerTotalCount := uint64(math.MaxUint64)

// Each store should have the same number of peers.
for _, count := range countPeers {
re.LessOrEqual(float64(count), 1.1*float64(numRegions*3)/float64(numStores))
re.GreaterOrEqual(float64(count), 0.9*float64(numRegions*3)/float64(numStores))
if count > maxStorePeerTotalCount {
maxStorePeerTotalCount = count
}
if count < minStorePeerTotalCount {
minStorePeerTotalCount = count
}
}
re.LessOrEqual(maxStorePeerTotalCount-minStorePeerTotalCount, uint64(1))

// Each store should have the same number of leaders.
re.Len(countPeers, int(numStores))
re.Len(countLeader, int(numStores))

maxStoreLeaderTotalCount := uint64(0)
minStoreLeaderTotalCount := uint64(math.MaxUint64)
for _, count := range countLeader {
re.LessOrEqual(float64(count), 1.1*float64(numRegions)/float64(numStores))
re.GreaterOrEqual(float64(count), 0.9*float64(numRegions)/float64(numStores))
if count > maxStoreLeaderTotalCount {
maxStoreLeaderTotalCount = count
}
if count < minStoreLeaderTotalCount {
minStoreLeaderTotalCount = count
}
}
}

Expand Down

0 comments on commit d499de1

Please sign in to comment.