From 6d7be9a7b533675b31fd782eee1258d29600c346 Mon Sep 17 00:00:00 2001 From: Ti Chi Robot Date: Mon, 28 Oct 2024 12:02:27 +0800 Subject: [PATCH] statistics: fix the memory leak of region statistics (#8711) (#8747) close tikv/pd#8710 Signed-off-by: Ryan Leung Co-authored-by: Ryan Leung --- server/statistics/region_collection.go | 1 + server/statistics/region_collection_test.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/server/statistics/region_collection.go b/server/statistics/region_collection.go index 7b354ce9f54..8d4d6d1849c 100644 --- a/server/statistics/region_collection.go +++ b/server/statistics/region_collection.go @@ -283,6 +283,7 @@ func (r *RegionStatistics) ClearDefunctRegion(regionID uint64) { } } if oldIndex, ok := r.offlineIndex[regionID]; ok { + delete(r.offlineIndex, regionID) r.deleteOfflineEntry(oldIndex, regionID) } } diff --git a/server/statistics/region_collection_test.go b/server/statistics/region_collection_test.go index 6f27443b24f..aa5a8399ab6 100644 --- a/server/statistics/region_collection_test.go +++ b/server/statistics/region_collection_test.go @@ -129,6 +129,10 @@ func TestRegionStatistics(t *testing.T) { stores[3] = store3 regionStats.Observe(region1, stores) re.Empty(regionStats.stats[OfflinePeer]) + + regionStats.ClearDefunctRegion(1) + re.Equal(1, len(regionStats.index)) + re.Equal(1, len(regionStats.offlineIndex)) } func TestRegionStatisticsWithPlacementRule(t *testing.T) {