@@ -1125,6 +1125,7 @@ func TestRegionLabelIsolationLevel(t *testing.T) {
1125
1125
opt .SetReplicationConfig (cfg )
1126
1126
re .NoError (err )
1127
1127
cluster := newTestRaftCluster (ctx , mockid .NewIDAllocator (), opt , storage .NewStorageWithMemoryBackend ())
1128
+ cluster .coordinator = schedule .NewCoordinator (ctx , cluster , nil )
1128
1129
1129
1130
for i := uint64 (1 ); i <= 4 ; i ++ {
1130
1131
var labels []* metapb.StoreLabel
@@ -1159,13 +1160,42 @@ func TestRegionLabelIsolationLevel(t *testing.T) {
1159
1160
StartKey : []byte {byte (1 )},
1160
1161
EndKey : []byte {byte (2 )},
1161
1162
}
1162
- r := core .NewRegionInfo (region , peers [0 ])
1163
- re .NoError (cluster .putRegion (r ))
1163
+ r1 := core .NewRegionInfo (region , peers [0 ])
1164
+ re .NoError (cluster .putRegion (r1 ))
1164
1165
1165
- cluster .UpdateRegionsLabelLevelStats ([]* core.RegionInfo {r })
1166
+ cluster .UpdateRegionsLabelLevelStats ([]* core.RegionInfo {r1 })
1166
1167
counter := cluster .labelStats .GetLabelCounter ()
1167
1168
re .Equal (0 , counter ["none" ])
1168
1169
re .Equal (1 , counter ["zone" ])
1170
+
1171
+ region = & metapb.Region {
1172
+ Id : 10 ,
1173
+ Peers : peers ,
1174
+ StartKey : []byte {byte (2 )},
1175
+ EndKey : []byte {byte (3 )},
1176
+ }
1177
+ r2 := core .NewRegionInfo (region , peers [0 ])
1178
+ re .NoError (cluster .putRegion (r2 ))
1179
+
1180
+ cluster .UpdateRegionsLabelLevelStats ([]* core.RegionInfo {r2 })
1181
+ counter = cluster .labelStats .GetLabelCounter ()
1182
+ re .Equal (0 , counter ["none" ])
1183
+ re .Equal (2 , counter ["zone" ])
1184
+
1185
+ // issue: https://github.com/tikv/pd/issues/8700
1186
+ // step1: heartbeat a overlap region, which is used to simulate the case that the region is merged.
1187
+ // step2: update region 9 and region 10, which is used to simulate the case that patrol is triggered.
1188
+ // We should only count region 9.
1189
+ overlapRegion := r1 .Clone (
1190
+ core .WithStartKey (r1 .GetStartKey ()),
1191
+ core .WithEndKey (r2 .GetEndKey ()),
1192
+ core .WithLeader (r2 .GetPeer (8 )),
1193
+ )
1194
+ re .NoError (cluster .HandleRegionHeartbeat (overlapRegion ))
1195
+ cluster .UpdateRegionsLabelLevelStats ([]* core.RegionInfo {r1 , r2 })
1196
+ counter = cluster .labelStats .GetLabelCounter ()
1197
+ re .Equal (0 , counter ["none" ])
1198
+ re .Equal (1 , counter ["zone" ])
1169
1199
}
1170
1200
1171
1201
func heartbeatRegions (re * require.Assertions , cluster * RaftCluster , regions []* core.RegionInfo ) {
0 commit comments