Attempt to deflake DBWALTestWithEnrichedEnv.SkipDeletedWALs (#11537)

Summary:
Calling `Flush` (even with `wait==true`) does not guarantee that obsolete WAL files are physically deleted before the call returns. The patch attempts to fix the resulting flakiness by using `SyncPoint`s to make sure `PurgeObsoleteFiles` finishes before checking for WAL deletions.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/11537

Test Plan:
```
gtest-parallel --repeat=1000 ./db_wal_test --gtest_filter="*SkipDeletedWALs*"
```

Reviewed By: pdillinger

Differential Revision: D46736050

Pulled By: ltamasi

fbshipit-source-id: 47a931b7a3a03ef681fbf4adb5a0b223d452703e
oxigraph-main
Levi Tamasi 1 year ago committed by Facebook GitHub Bot
parent b3edb87341
commit 022d89549d
  1. 9
      db/db_wal_test.cc

@ -146,6 +146,11 @@ TEST_F(DBWALTestWithEnrichedEnv, SkipDeletedWALs) {
options.write_buffer_size = 128; options.write_buffer_size = 128;
Reopen(options); Reopen(options);
SyncPoint::GetInstance()->LoadDependency(
{{"DBImpl::PurgeObsoleteFiles:End",
"DBWALTestWithEnrichedEnv.SkipDeletedWALs:AfterFlush"}});
SyncPoint::GetInstance()->EnableProcessing();
WriteOptions writeOpt = WriteOptions(); WriteOptions writeOpt = WriteOptions();
for (int i = 0; i < 128 * 5; i++) { for (int i = 0; i < 128 * 5; i++) {
ASSERT_OK(dbfull()->Put(writeOpt, "foo", "v1")); ASSERT_OK(dbfull()->Put(writeOpt, "foo", "v1"));
@ -154,6 +159,8 @@ TEST_F(DBWALTestWithEnrichedEnv, SkipDeletedWALs) {
fo.wait = true; fo.wait = true;
ASSERT_OK(db_->Flush(fo)); ASSERT_OK(db_->Flush(fo));
TEST_SYNC_POINT("DBWALTestWithEnrichedEnv.SkipDeletedWALs:AfterFlush");
// some wals are deleted // some wals are deleted
ASSERT_NE(0, enriched_env_->deleted_wal_cnt); ASSERT_NE(0, enriched_env_->deleted_wal_cnt);
// but not the first one // but not the first one
@ -164,6 +171,8 @@ TEST_F(DBWALTestWithEnrichedEnv, SkipDeletedWALs) {
Reopen(options); Reopen(options);
ASSERT_FALSE(enriched_env_->deleted_wal_reopened); ASSERT_FALSE(enriched_env_->deleted_wal_reopened);
ASSERT_FALSE(enriched_env_->gap_in_wals); ASSERT_FALSE(enriched_env_->gap_in_wals);
SyncPoint::GetInstance()->DisableProcessing();
} }
TEST_F(DBWALTest, WAL) { TEST_F(DBWALTest, WAL) {

Loading…
Cancel
Save