Fix unit test `DBRangeDelTest.NonBottommostCompactionDropRangetombstone` (#11512)

Summary:
Fix the test added in https://github.com/facebook/rocksdb/issues/11459 that is failing.

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

Test Plan: `./db_range_del_test --gtest_filter="*NonBottommostCompactionDropRangetombstone"`

Reviewed By: pdillinger

Differential Revision: D46451450

Pulled By: cbi42

fbshipit-source-id: bcad20b8fd21c4f71924cec6cb045ee4b2038b90
oxigraph-main
Changyu Bi 1 year ago committed by Facebook GitHub Bot
parent 4dafa5b220
commit 633c738a98
  1. 24
      db/db_range_del_test.cc

@ -3416,8 +3416,9 @@ TEST_F(DBRangeDelTest, NonBottommostCompactionDropRangetombstone) {
// [4, 5) should be dropped since it does not overlap with any file in lower // [4, 5) should be dropped since it does not overlap with any file in lower
// levels. The range tombstone [8, 9) should not be dropped. // levels. The range tombstone [8, 9) should not be dropped.
Options opts = CurrentOptions(); Options opts = CurrentOptions();
opts.disable_auto_compactions = true; opts.level_compaction_dynamic_level_bytes = false;
opts.num_levels = 7; opts.num_levels = 7;
opts.level0_file_num_compaction_trigger = 3;
DestroyAndReopen(opts); DestroyAndReopen(opts);
Random rnd(301); Random rnd(301);
@ -3447,12 +3448,11 @@ TEST_F(DBRangeDelTest, NonBottommostCompactionDropRangetombstone) {
TableProperties output_tp; TableProperties output_tp;
ParseTablePropertiesString(property, &output_tp); ParseTablePropertiesString(property, &output_tp);
ASSERT_EQ(output_tp.num_range_deletions, 2); ASSERT_EQ(output_tp.num_range_deletions, 2);
// Compact two L0s into L1 // Add one more L0 file to trigger L0->L1 compaction
std::string begin_str = Key(4); ASSERT_OK(Put(Key(1), rnd.RandomString(100)));
std::string end_str = Key(6); ASSERT_OK(Put(Key(9), rnd.RandomString(100)));
Slice begin_slice = begin_str; ASSERT_OK(Flush());
Slice end_slice = end_str; ASSERT_OK(dbfull()->TEST_WaitForCompact());
ASSERT_OK(db_->CompactRange(CompactRangeOptions(), &begin_slice, &end_slice));
ASSERT_EQ(NumTableFilesAtLevel(1), 1); ASSERT_EQ(NumTableFilesAtLevel(1), 1);
db_->GetProperty(DB::Properties::kAggregatedTableProperties, &property); db_->GetProperty(DB::Properties::kAggregatedTableProperties, &property);
ParseTablePropertiesString(property, &output_tp); ParseTablePropertiesString(property, &output_tp);
@ -3460,18 +3460,18 @@ TEST_F(DBRangeDelTest, NonBottommostCompactionDropRangetombstone) {
// Now create a snapshot protected range tombstone [4, 5), it should not // Now create a snapshot protected range tombstone [4, 5), it should not
// be dropped. // be dropped.
ASSERT_OK(Put(Key(4), rnd.RandomString(100)));
const Snapshot* snapshot = db_->GetSnapshot(); const Snapshot* snapshot = db_->GetSnapshot();
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(4), ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(4),
Key(5))); Key(5)));
CompactRangeOptions cro; CompactRangeOptions cro;
cro.bottommost_level_compaction = BottommostLevelCompaction::kForceOptimized; cro.bottommost_level_compaction = BottommostLevelCompaction::kForceOptimized;
end_str = Key(5); ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
end_slice = end_str; // All compacted to L6
ASSERT_OK(db_->CompactRange(cro, &begin_slice, &end_slice)); ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel(0));
ASSERT_EQ(NumTableFilesAtLevel(1), 1);
db_->GetProperty(DB::Properties::kAggregatedTableProperties, &property); db_->GetProperty(DB::Properties::kAggregatedTableProperties, &property);
ParseTablePropertiesString(property, &output_tp); ParseTablePropertiesString(property, &output_tp);
ASSERT_EQ(output_tp.num_range_deletions, 2); ASSERT_EQ(output_tp.num_range_deletions, 1);
db_->ReleaseSnapshot(snapshot); db_->ReleaseSnapshot(snapshot);
} }

Loading…
Cancel
Save