@@ -62,14 +62,17 @@ type regionTree struct {
6262 totalSize int64
6363 totalWriteBytesRate float64
6464 totalWriteKeysRate float64
65+ // count the number of regions that not loaded from storage.
66+ notFromStorageRegionsCnt int
6567}
6668
6769func newRegionTree () * regionTree {
6870 return & regionTree {
69- tree : btree.NewG [* regionItem ](defaultBTreeDegree ),
70- totalSize : 0 ,
71- totalWriteBytesRate : 0 ,
72- totalWriteKeysRate : 0 ,
71+ tree : btree.NewG [* regionItem ](defaultBTreeDegree ),
72+ totalSize : 0 ,
73+ totalWriteBytesRate : 0 ,
74+ totalWriteKeysRate : 0 ,
75+ notFromStorageRegionsCnt : 0 ,
7376 }
7477}
7578
@@ -124,6 +127,9 @@ func (t *regionTree) update(item *regionItem) []*RegionInfo {
124127 regionWriteBytesRate , regionWriteKeysRate := region .GetWriteRate ()
125128 t .totalWriteBytesRate += regionWriteBytesRate
126129 t .totalWriteKeysRate += regionWriteKeysRate
130+ if ! region .LoadedFromStorage () {
131+ t .notFromStorageRegionsCnt ++
132+ }
127133
128134 overlaps := t .overlaps (item )
129135 for _ , old := range overlaps {
@@ -142,6 +148,9 @@ func (t *regionTree) update(item *regionItem) []*RegionInfo {
142148 regionWriteBytesRate , regionWriteKeysRate = old .GetWriteRate ()
143149 t .totalWriteBytesRate -= regionWriteBytesRate
144150 t .totalWriteKeysRate -= regionWriteKeysRate
151+ if ! old .LoadedFromStorage () {
152+ t .notFromStorageRegionsCnt --
153+ }
145154 }
146155
147156 return result
@@ -158,6 +167,15 @@ func (t *regionTree) updateStat(origin *RegionInfo, region *RegionInfo) {
158167 regionWriteBytesRate , regionWriteKeysRate = origin .GetWriteRate ()
159168 t .totalWriteBytesRate -= regionWriteBytesRate
160169 t .totalWriteKeysRate -= regionWriteKeysRate
170+
171+ // If the region meta information not loaded from storage anymore, decrease the counter.
172+ if origin .LoadedFromStorage () && ! region .LoadedFromStorage () {
173+ t .notFromStorageRegionsCnt ++
174+ }
175+ // If the region meta information updated to load from storage, increase the counter.
176+ if ! origin .LoadedFromStorage () && region .LoadedFromStorage () {
177+ t .notFromStorageRegionsCnt --
178+ }
161179}
162180
163181// remove removes a region if the region is in the tree.
@@ -177,6 +195,9 @@ func (t *regionTree) remove(region *RegionInfo) {
177195 regionWriteBytesRate , regionWriteKeysRate := result .GetWriteRate ()
178196 t .totalWriteBytesRate -= regionWriteBytesRate
179197 t .totalWriteKeysRate -= regionWriteKeysRate
198+ if ! region .LoadedFromStorage () {
199+ t .notFromStorageRegionsCnt --
200+ }
180201 t .tree .Delete (item )
181202}
182203
0 commit comments