Skip to content

Commit f096fac

Browse files
committed
server/cluster: keep full range preparing size current
Signed-off-by: lhy1024 <19542290+lhy1024@users.noreply.github.com>
1 parent a155668 commit f096fac

2 files changed

Lines changed: 30 additions & 1 deletion

File tree

server/cluster/cluster.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1946,12 +1946,19 @@ func (c regionSizeCache) getRegionSize(startKey, endKey []byte) int64 {
19461946
return size
19471947
}
19481948

1949+
func (c *RaftCluster) getPreparingRegionSize(startKey, endKey []byte) int64 {
1950+
if len(startKey) == 0 && len(endKey) == 0 {
1951+
return c.GetRegionSizeByRange(startKey, endKey)
1952+
}
1953+
return c.GetRegionSizeByRangeFromSubTree(startKey, endKey)
1954+
}
1955+
19491956
func (c *RaftCluster) checkStores() {
19501957
var (
19511958
offlineStores []*metapb.Store
19521959
upStoreCount int
19531960
stores = c.GetStores()
1954-
regionSizes = newRegionSizeCache(c.GetRegionSizeByRangeFromSubTree)
1961+
regionSizes = newRegionSizeCache(c.getPreparingRegionSize)
19551962
)
19561963

19571964
for _, store := range stores {

server/cluster/cluster_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1941,6 +1941,28 @@ func TestRegionSizeCacheAcrossStoresAndRules(t *testing.T) {
19411941
re.Equal(2, loadCounts[regionSizeCacheKey{startKey: "a", endKey: "m"}])
19421942
}
19431943

1944+
func TestPreparingRegionSizeUsesRootForFullRange(t *testing.T) {
1945+
re := require.New(t)
1946+
cluster := &RaftCluster{BasicCluster: core.NewBasicCluster()}
1947+
peer := &metapb.Peer{Id: 1, StoreId: 1}
1948+
region := core.NewRegionInfo(&metapb.Region{
1949+
Id: 1,
1950+
StartKey: []byte("a"),
1951+
EndKey: []byte("z"),
1952+
Peers: []*metapb.Peer{peer},
1953+
}, peer, core.SetApproximateSize(10))
1954+
cluster.PutRegion(region)
1955+
1956+
updated := region.Clone(core.SetApproximateSize(40))
1957+
_, err := cluster.CheckAndPutRootTree(core.ContextTODO(), updated)
1958+
re.NoError(err)
1959+
re.Equal(int64(40), cluster.GetRegionSizeByRange(nil, nil))
1960+
re.Equal(int64(10), cluster.GetRegionSizeByRangeFromSubTree(nil, nil))
1961+
1962+
re.Equal(int64(40), cluster.getPreparingRegionSize(nil, nil))
1963+
re.Equal(int64(10), cluster.getPreparingRegionSize([]byte("a"), []byte("z")))
1964+
}
1965+
19441966
func TestStatsRegions(t *testing.T) {
19451967
re := require.New(t)
19461968
ctx, cancel := context.WithCancel(context.Background())

0 commit comments

Comments
 (0)