@@ -1324,6 +1324,7 @@ pub(crate) mod tests {
13241324 engine. append ( rid, index, index + 1 , Some ( & data) ) ;
13251325 }
13261326 }
1327+ engine. append ( 11 , 1 , 11 , Some ( & data) ) ;
13271328
13281329 // The engine needs purge, and all old entries should be rewritten.
13291330 assert ! ( engine
@@ -1342,8 +1343,9 @@ pub(crate) mod tests {
13421343 } ) ;
13431344 }
13441345
1345- // Recover with rewrite queue and append queue.
1346+ engine . clean ( 11 ) ;
13461347 let cleaned_region_ids = engine. memtables . cleaned_region_ids ( ) ;
1348+ assert_eq ! ( cleaned_region_ids. len( ) , 1 ) ;
13471349
13481350 let engine = engine. reopen ( ) ;
13491351 assert_eq ! ( engine. memtables. cleaned_region_ids( ) , cleaned_region_ids) ;
@@ -2438,13 +2440,15 @@ pub(crate) mod tests {
24382440 lb. drain ( ) ;
24392441 } ;
24402442 {
2443+ // begin.
24412444 let mut builder = AtomicGroupBuilder :: with_id ( 3 ) ;
24422445 builder. begin ( & mut log_batch) ;
24432446 log_batch. put ( rid, key. clone ( ) , value. clone ( ) ) . unwrap ( ) ;
24442447 flush ( & mut log_batch) ;
24452448 engine. pipe_log . rotate ( LogQueue :: Rewrite ) . unwrap ( ) ;
24462449 }
24472450 {
2451+ // begin - unrelated - end.
24482452 let mut builder = AtomicGroupBuilder :: with_id ( 3 ) ;
24492453 builder. begin ( & mut log_batch) ;
24502454 rid += 1 ;
@@ -2464,6 +2468,7 @@ pub(crate) mod tests {
24642468 engine. pipe_log . rotate ( LogQueue :: Rewrite ) . unwrap ( ) ;
24652469 }
24662470 {
2471+ // begin - middle - middle - end.
24672472 let mut builder = AtomicGroupBuilder :: with_id ( 3 ) ;
24682473 builder. begin ( & mut log_batch) ;
24692474 rid += 1 ;
@@ -2488,6 +2493,7 @@ pub(crate) mod tests {
24882493 engine. pipe_log . rotate ( LogQueue :: Rewrite ) . unwrap ( ) ;
24892494 }
24902495 {
2496+ // begin - begin - end.
24912497 let mut builder = AtomicGroupBuilder :: with_id ( 3 ) ;
24922498 builder. begin ( & mut log_batch) ;
24932499 rid += 1 ;
@@ -2507,6 +2513,7 @@ pub(crate) mod tests {
25072513 engine. pipe_log . rotate ( LogQueue :: Rewrite ) . unwrap ( ) ;
25082514 }
25092515 {
2516+ // end - middle - end.
25102517 // We must change id to avoid getting merged with last group.
25112518 // It is actually not possible in real life to only have "begin" missing.
25122519 let mut builder = AtomicGroupBuilder :: with_id ( 4 ) ;
@@ -2528,6 +2535,7 @@ pub(crate) mod tests {
25282535 engine. pipe_log . rotate ( LogQueue :: Rewrite ) . unwrap ( ) ;
25292536 }
25302537 {
2538+ // end - begin - end
25312539 let mut builder = AtomicGroupBuilder :: with_id ( 5 ) ;
25322540 builder. begin ( & mut LogBatch :: default ( ) ) ;
25332541 builder. end ( & mut log_batch) ;
@@ -2547,6 +2555,26 @@ pub(crate) mod tests {
25472555 flush ( & mut log_batch) ;
25482556 engine. pipe_log . rotate ( LogQueue :: Rewrite ) . unwrap ( ) ;
25492557 }
2558+ {
2559+ // begin - end - begin - end.
2560+ let mut builder = AtomicGroupBuilder :: with_id ( 6 ) ;
2561+ builder. begin ( & mut log_batch) ;
2562+ rid += 1 ;
2563+ log_batch. put ( rid, key. clone ( ) , value. clone ( ) ) . unwrap ( ) ;
2564+ data. insert ( rid) ;
2565+ flush ( & mut log_batch) ;
2566+ builder. end ( & mut log_batch) ;
2567+ flush ( & mut log_batch) ;
2568+ let mut builder = AtomicGroupBuilder :: with_id ( 7 ) ;
2569+ builder. begin ( & mut log_batch) ;
2570+ flush ( & mut log_batch) ;
2571+ builder. end ( & mut log_batch) ;
2572+ rid += 1 ;
2573+ log_batch. put ( rid, key. clone ( ) , value. clone ( ) ) . unwrap ( ) ;
2574+ data. insert ( rid) ;
2575+ flush ( & mut log_batch) ;
2576+ engine. pipe_log . rotate ( LogQueue :: Rewrite ) . unwrap ( ) ;
2577+ }
25502578 engine. pipe_log . sync ( LogQueue :: Rewrite ) . unwrap ( ) ;
25512579
25522580 let engine = engine. reopen ( ) ;
0 commit comments