Skip to content

Commit bae5ee9

Browse files
Fix get the error ranges in group_ranges_by_region (#394)
* Fix get the error ranges in group_ranges_by_region Signed-off-by: joker53-1 <1205637346@qq.com> * fix error Signed-off-by: Andy Lok <andylokandy@hotmail.com> --------- Signed-off-by: joker53-1 <1205637346@qq.com> Signed-off-by: Andy Lok andylokandy@hotmail.com Signed-off-by: Andy Lok <andylokandy@hotmail.com> Co-authored-by: Andy Lok <andylokandy@hotmail.com>
1 parent 9ae3e4f commit bae5ee9

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

src/pd/client.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ pub trait PdClient: Send + Sync + 'static {
168168
while let Some(range) = ranges.pop() {
169169
let start_key: Key = range.start_key.clone().into();
170170
let end_key: Key = range.end_key.clone().into();
171-
if start_key < region_start {
171+
if start_key < region_start || start_key > region_end {
172172
ranges.push(range);
173173
break;
174174
}
@@ -415,13 +415,15 @@ pub mod test {
415415
let k2 = vec![5, 2];
416416
let k3 = vec![11, 4];
417417
let k4 = vec![16, 4];
418+
let k5 = vec![250, 251];
419+
let k6 = vec![255, 251];
418420
let k_split = vec![10];
419421
let range1 = make_key_range(k1.clone(), k2.clone());
420422
let range2 = make_key_range(k1.clone(), k3.clone());
421423
let range3 = make_key_range(k2.clone(), k4.clone());
422424
let ranges = vec![range1, range2, range3];
423425

424-
let mut stream = executor::block_on_stream(client.group_ranges_by_region(ranges));
426+
let mut stream = executor::block_on_stream(client.clone().group_ranges_by_region(ranges));
425427
let ranges1 = stream.next().unwrap().unwrap();
426428
let ranges2 = stream.next().unwrap().unwrap();
427429
let ranges3 = stream.next().unwrap().unwrap();
@@ -430,14 +432,29 @@ pub mod test {
430432
assert_eq!(ranges1.0.id(), 1);
431433
assert_eq!(ranges1.1, vec![
432434
make_key_range(k1.clone(), k2.clone()),
433-
make_key_range(k1, k_split.clone()),
435+
make_key_range(k1.clone(), k_split.clone()),
434436
]);
435437
assert_eq!(ranges2.0.id(), 2);
436-
assert_eq!(ranges2.1, vec![make_key_range(k_split.clone(), k3)]);
438+
assert_eq!(ranges2.1, vec![make_key_range(k_split.clone(), k3.clone())]);
437439
assert_eq!(ranges3.0.id(), 1);
438-
assert_eq!(ranges3.1, vec![make_key_range(k2, k_split.clone())]);
440+
assert_eq!(ranges3.1, vec![make_key_range(k2.clone(), k_split.clone())]);
439441
assert_eq!(ranges4.0.id(), 2);
440-
assert_eq!(ranges4.1, vec![make_key_range(k_split, k4)]);
442+
assert_eq!(ranges4.1, vec![make_key_range(k_split, k4.clone())]);
441443
assert!(stream.next().is_none());
444+
445+
let range1 = make_key_range(k1.clone(), k2.clone());
446+
let range2 = make_key_range(k3.clone(), k4.clone());
447+
let range3 = make_key_range(k5.clone(), k6.clone());
448+
let ranges = vec![range1, range2, range3];
449+
stream = executor::block_on_stream(client.group_ranges_by_region(ranges));
450+
let ranges1 = stream.next().unwrap().unwrap();
451+
let ranges2 = stream.next().unwrap().unwrap();
452+
let ranges3 = stream.next().unwrap().unwrap();
453+
assert_eq!(ranges1.0.id(), 1);
454+
assert_eq!(ranges1.1, vec![make_key_range(k1, k2)]);
455+
assert_eq!(ranges2.0.id(), 2);
456+
assert_eq!(ranges2.1, vec![make_key_range(k3, k4)]);
457+
assert_eq!(ranges3.0.id(), 3);
458+
assert_eq!(ranges3.1, vec![make_key_range(k5, k6)]);
442459
}
443460
}

0 commit comments

Comments
 (0)