@@ -3429,7 +3429,7 @@ TEST_F(DBCompactionTest, WaitForCompactContinueAfterPauseNotAborted) {
34293429 ASSERT_OK (dbfull ()->ContinueBackgroundWork ());
34303430
34313431 WaitForCompactOptions waitForCompactOptions = WaitForCompactOptions ();
3432- waitForCompactOptions.abort_on_pause = false ;
3432+ waitForCompactOptions.abort_on_pause = true ;
34333433 ASSERT_OK (dbfull ()->WaitForCompact (waitForCompactOptions));
34343434}
34353435
@@ -3458,23 +3458,34 @@ TEST_F(DBCompactionTest, WaitForCompactShutdownWhileWaiting) {
34583458 }
34593459 ASSERT_OK (dbfull ()->WaitForCompact (WaitForCompactOptions ()));
34603460
3461- ROCKSDB_NAMESPACE::SyncPoint::GetInstance ()->LoadDependency (
3462- {{" DBCompactionTest::WaitForCompactShutdownWhileWaiting" ,
3463- " CompactionJob::Run():Start" }});
3461+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance ()->LoadDependency ({
3462+ {" CompactionJob::Run():Start" ,
3463+ " DBCompactionTest::WaitForCompactShutdownWhileWaiting:0" },
3464+ {" DBImpl::WaitForCompact:Start" ,
3465+ " DBCompactionTest::WaitForCompactShutdownWhileWaiting:1" },
3466+ {" DBImpl::~DBImpl:WaitJob" , " CompactionJob::Run():End" },
3467+ });
3468+
34643469 ROCKSDB_NAMESPACE::SyncPoint::GetInstance ()->EnableProcessing ();
34653470
34663471 // Now trigger L0 compaction by adding a file
34673472 GenerateNewRandomFile (&rnd, /* nowait */ true );
34683473 ASSERT_OK (Flush ());
3474+ // Wait for compaction to start
3475+ TEST_SYNC_POINT (" DBCompactionTest::WaitForCompactShutdownWhileWaiting:0" );
3476+
3477+ // Wait for Compaction in another thread
3478+ auto waiting_for_compaction_thread = port::Thread ([this ]() {
3479+ Status s = dbfull ()->WaitForCompact (WaitForCompactOptions ());
3480+ ASSERT_NOK (s);
3481+ ASSERT_TRUE (s.IsShutdownInProgress ());
3482+ });
3483+ TEST_SYNC_POINT (" DBCompactionTest::WaitForCompactShutdownWhileWaiting:1" );
3484+ // Shutdown after wait started, but before the compaction finishes
3485+ auto closing_thread = port::Thread ([this ]() { Close (); });
34693486
3470- // Shutdown before the compaction finishes
3471- dbfull ()->CancelAllBackgroundWork (false /* wait */ );
3472-
3473- TEST_SYNC_POINT (" DBCompactionTest::WaitForCompactShutdownWhileWaiting" );
3474-
3475- Status s = dbfull ()->WaitForCompact (WaitForCompactOptions ());
3476- ASSERT_NOK (s);
3477- ASSERT_TRUE (s.IsShutdownInProgress ());
3487+ waiting_for_compaction_thread.join ();
3488+ closing_thread.join ();
34783489
34793490 ROCKSDB_NAMESPACE::SyncPoint::GetInstance ()->DisableProcessing ();
34803491}
0 commit comments