@@ -168,7 +168,7 @@ pub trait PdClient: Send + Sync + 'static {
168
168
while let Some ( range) = ranges. pop ( ) {
169
169
let start_key: Key = range. start_key . clone ( ) . into ( ) ;
170
170
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 {
172
172
ranges. push ( range) ;
173
173
break ;
174
174
}
@@ -415,13 +415,15 @@ pub mod test {
415
415
let k2 = vec ! [ 5 , 2 ] ;
416
416
let k3 = vec ! [ 11 , 4 ] ;
417
417
let k4 = vec ! [ 16 , 4 ] ;
418
+ let k5 = vec ! [ 250 , 251 ] ;
419
+ let k6 = vec ! [ 255 , 251 ] ;
418
420
let k_split = vec ! [ 10 ] ;
419
421
let range1 = make_key_range ( k1. clone ( ) , k2. clone ( ) ) ;
420
422
let range2 = make_key_range ( k1. clone ( ) , k3. clone ( ) ) ;
421
423
let range3 = make_key_range ( k2. clone ( ) , k4. clone ( ) ) ;
422
424
let ranges = vec ! [ range1, range2, range3] ;
423
425
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) ) ;
425
427
let ranges1 = stream. next ( ) . unwrap ( ) . unwrap ( ) ;
426
428
let ranges2 = stream. next ( ) . unwrap ( ) . unwrap ( ) ;
427
429
let ranges3 = stream. next ( ) . unwrap ( ) . unwrap ( ) ;
@@ -430,14 +432,29 @@ pub mod test {
430
432
assert_eq ! ( ranges1. 0 . id( ) , 1 ) ;
431
433
assert_eq ! ( ranges1. 1 , vec![
432
434
make_key_range( k1. clone( ) , k2. clone( ) ) ,
433
- make_key_range( k1, k_split. clone( ) ) ,
435
+ make_key_range( k1. clone ( ) , k_split. clone( ) ) ,
434
436
] ) ;
435
437
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 ( ) ) ] ) ;
437
439
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( ) ) ] ) ;
439
441
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 ( ) ) ] ) ;
441
443
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) ] ) ;
442
459
}
443
460
}
0 commit comments