@@ -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