@@ -290,7 +290,7 @@ impl TurboPersistence {
290290 }
291291
292292 sst_files. retain ( |seq| !deleted_files. contains ( seq) ) ;
293- sst_files. sort ( ) ;
293+ sst_files. sort_unstable ( ) ;
294294 let sst_files = sst_files
295295 . into_iter ( )
296296 . map ( |seq| self . open_sst ( seq) )
@@ -407,11 +407,13 @@ impl TurboPersistence {
407407 /// new files.
408408 fn commit (
409409 & self ,
410- new_sst_files : Vec < ( u32 , File ) > ,
410+ mut new_sst_files : Vec < ( u32 , File ) > ,
411411 new_blob_files : Vec < File > ,
412412 mut indicies_to_delete : Vec < usize > ,
413413 mut seq : u32 ,
414414 ) -> Result < ( ) , anyhow:: Error > {
415+ new_sst_files. sort_unstable_by_key ( |( seq, _) | * seq) ;
416+
415417 let mut new_sst_files = new_sst_files
416418 . into_iter ( )
417419 . map ( |( seq, file) | {
@@ -433,7 +435,7 @@ impl TurboPersistence {
433435 {
434436 let mut inner = self . inner . write ( ) ;
435437 inner. current_sequence_number = seq;
436- indicies_to_delete. sort ( ) ;
438+ indicies_to_delete. sort_unstable ( ) ;
437439 removed_ssts = remove_indicies ( & mut inner. static_sorted_files , & indicies_to_delete) ;
438440 inner. static_sorted_files . append ( & mut new_sst_files) ;
439441 }
@@ -442,7 +444,7 @@ impl TurboPersistence {
442444 . into_iter ( )
443445 . map ( |sst| sst. sequence_number ( ) )
444446 . collect :: < Vec < _ > > ( ) ;
445- removed_ssts. sort ( ) ;
447+ removed_ssts. sort_unstable ( ) ;
446448
447449 if !indicies_to_delete. is_empty ( ) {
448450 // Write *.del file, marking the selected files as to delete
@@ -747,14 +749,21 @@ impl TurboPersistence {
747749 } )
748750 . collect :: < Result < Vec < _ > > > ( ) ?;
749751
752+ let move_jobs = move_jobs
753+ . into_iter ( )
754+ . map ( |index| {
755+ let seq = sequence_number. fetch_add ( 1 , Ordering :: SeqCst ) + 1 ;
756+ ( index, seq)
757+ } )
758+ . collect :: < Vec < _ > > ( ) ;
759+
750760 // Move SST files
751761 let mut new_sst_files = move_jobs
752762 . into_par_iter ( )
753763 . with_min_len ( 1 )
754- . map ( |index| {
764+ . map ( |( index, seq ) | {
755765 let index = ssts_with_ranges[ index] . index ;
756766 let sst = & static_sorted_files[ index] ;
757- let seq = sequence_number. fetch_add ( 1 , Ordering :: SeqCst ) + 1 ;
758767 let src_path = self . path . join ( format ! ( "{:08}.sst" , sst. sequence_number( ) ) ) ;
759768 let dst_path = self . path . join ( format ! ( "{:08}.sst" , seq) ) ;
760769 if fs:: hard_link ( & src_path, & dst_path) . is_err ( ) {
0 commit comments