mirror of https://github.com/facebook/rocksdb.git
Fix race between test and recovery flush switch memtable (#12884)
Summary: As titled, to fix this type of data race: https://github.com/facebook/rocksdb/actions/runs/10066814221/job/27829003372?pr=12882 Pull Request resolved: https://github.com/facebook/rocksdb/pull/12884 Test Plan: COMPILE_WITH_TSAN=1 make -j10 db_wal_test ./db_wal_test --gtest_filter=DBWALTest.RecoveryFlushSwitchWALOnEmptyMemtable --gtest_repeat=100 Reviewed By: anand1976 Differential Revision: D60197834 Pulled By: jowlyzhang fbshipit-source-id: 89524cdb4d17a1b647295bcccf5eb2d7d425bc6a
This commit is contained in:
parent
086849aa4f
commit
05c9c9aeed
|
@ -2765,6 +2765,13 @@ TEST_F(DBWALTest, RecoveryFlushSwitchWALOnEmptyMemtable) {
|
|||
options.avoid_flush_during_shutdown = true;
|
||||
DestroyAndReopen(options);
|
||||
|
||||
// Make sure the memtable switch in recovery flush happened after test checks
|
||||
// the memtable is empty.
|
||||
SyncPoint::GetInstance()->LoadDependency(
|
||||
{{"DBWALTest.RecoveryFlushSwitchWALOnEmptyMemtable:"
|
||||
"AfterCheckMemtableEmpty",
|
||||
"RecoverFromRetryableBGIOError:BeforeStart"}});
|
||||
SyncPoint::GetInstance()->EnableProcessing();
|
||||
fault_fs->SetThreadLocalErrorContext(
|
||||
FaultInjectionIOType::kMetadataWrite, 7 /* seed*/, 1 /* one_in */,
|
||||
true /* retryable */, false /* has_data_loss*/);
|
||||
|
@ -2781,6 +2788,10 @@ TEST_F(DBWALTest, RecoveryFlushSwitchWALOnEmptyMemtable) {
|
|||
->mem()
|
||||
->IsEmpty());
|
||||
ASSERT_EQ("NOT_FOUND", Get("k"));
|
||||
TEST_SYNC_POINT(
|
||||
"DBWALTest.RecoveryFlushSwitchWALOnEmptyMemtable:"
|
||||
"AfterCheckMemtableEmpty");
|
||||
SyncPoint::GetInstance()->DisableProcessing();
|
||||
|
||||
fault_fs->DisableThreadLocalErrorInjection(
|
||||
FaultInjectionIOType::kMetadataWrite);
|
||||
|
|
Loading…
Reference in New Issue