@@ -61,14 +61,17 @@ type regionTree struct {
6161 totalSize int64
6262 totalWriteBytesRate float64
6363 totalWriteKeysRate float64
64+ // count the number of regions that not loaded from storage.
65+ notFromStorageRegionsCnt int
6466}
6567
6668func newRegionTree () * regionTree {
6769 return & regionTree {
68- tree : btree.NewG [* regionItem ](defaultBTreeDegree ),
69- totalSize : 0 ,
70- totalWriteBytesRate : 0 ,
71- totalWriteKeysRate : 0 ,
70+ tree : btree.NewG [* regionItem ](defaultBTreeDegree ),
71+ totalSize : 0 ,
72+ totalWriteBytesRate : 0 ,
73+ totalWriteKeysRate : 0 ,
74+ notFromStorageRegionsCnt : 0 ,
7275 }
7376}
7477
@@ -112,6 +115,9 @@ func (t *regionTree) update(item *regionItem, withOverlaps bool, overlaps ...*re
112115 regionWriteBytesRate , regionWriteKeysRate := region .GetWriteRate ()
113116 t .totalWriteBytesRate += regionWriteBytesRate
114117 t .totalWriteKeysRate += regionWriteKeysRate
118+ if ! region .LoadedFromStorage () {
119+ t .notFromStorageRegionsCnt ++
120+ }
115121
116122 if ! withOverlaps {
117123 overlaps = t .overlaps (item )
@@ -133,6 +139,9 @@ func (t *regionTree) update(item *regionItem, withOverlaps bool, overlaps ...*re
133139 regionWriteBytesRate , regionWriteKeysRate = old .GetWriteRate ()
134140 t .totalWriteBytesRate -= regionWriteBytesRate
135141 t .totalWriteKeysRate -= regionWriteKeysRate
142+ if ! old .LoadedFromStorage () {
143+ t .notFromStorageRegionsCnt --
144+ }
136145 }
137146
138147 return result
@@ -149,6 +158,15 @@ func (t *regionTree) updateStat(origin *RegionInfo, region *RegionInfo) {
149158 regionWriteBytesRate , regionWriteKeysRate = origin .GetWriteRate ()
150159 t .totalWriteBytesRate -= regionWriteBytesRate
151160 t .totalWriteKeysRate -= regionWriteKeysRate
161+
162+ // If the region meta information not loaded from storage anymore, decrease the counter.
163+ if origin .LoadedFromStorage () && ! region .LoadedFromStorage () {
164+ t .notFromStorageRegionsCnt ++
165+ }
166+ // If the region meta information updated to load from storage, increase the counter.
167+ if ! origin .LoadedFromStorage () && region .LoadedFromStorage () {
168+ t .notFromStorageRegionsCnt --
169+ }
152170}
153171
154172// remove removes a region if the region is in the tree.
@@ -168,6 +186,9 @@ func (t *regionTree) remove(region *RegionInfo) {
168186 regionWriteBytesRate , regionWriteKeysRate := result .GetWriteRate ()
169187 t .totalWriteBytesRate -= regionWriteBytesRate
170188 t .totalWriteKeysRate -= regionWriteKeysRate
189+ if ! region .LoadedFromStorage () {
190+ t .notFromStorageRegionsCnt --
191+ }
171192 t .tree .Delete (item )
172193}
173194
0 commit comments