From: Andrew Kryczka Date: Tue, 22 Nov 2022 00:14:03 +0000 (-0800) Subject: Fix CompactionIterator flag for penultimate level output (#10967) X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=442b6b80487f2df8b19af242dce670ca816026e6;p=rocksdb.git Fix CompactionIterator flag for penultimate level output (#10967) Summary: We were not resetting it in non-debug mode so it could be true once and then stay true for future keys where it should be false. This PR adds the reset logic. Pull Request resolved: https://github.com/facebook/rocksdb/pull/10967 Test Plan: - built `db_bench` with DEBUG_LEVEL=0 - ran benchmark: `TEST_TMPDIR=/dev/shm/prefix ./db_bench -benchmarks=fillrandom -compaction_style=1 -preserve_internal_time_seconds=100 -preclude_last_level_data_seconds=10 -write_buffer_size=1048576 -target_file_size_base=1048576 -subcompactions=8 -duration=120` - compared "output_to_penultimate_level: X bytes + last: Y bytes" lines in LOG output - Before this fix, Y was always zero - After this fix, Y gradually increased throughout the benchmark Reviewed By: riversand963 Differential Revision: D41417726 Pulled By: ajkr fbshipit-source-id: ace1e9a289e751a5b0c2fbaa8addd4eda5525329 --- diff --git a/HISTORY.md b/HISTORY.md index 3b4f8190..3b4a0aba 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,6 +2,7 @@ ## Unreleased ### Bug Fixes * Fix failed memtable flush retry bug that could cause wrongly ordered updates, which would surface to writers as `Status::Corruption` in case of `force_consistency_checks=true` (default). It affects use cases that enable both parallel flush (`max_background_flushes > 1` or `max_background_jobs >= 8`) and non-default memtable count (`max_write_buffer_number > 2`). +* Tiered Storage: fixed excessive keys written to penultimate level in non-debug builds. ## 7.8.2 (11/23/2022) ### Behavior changes diff --git a/db/compaction/compaction_iterator.cc b/db/compaction/compaction_iterator.cc index b7238d85..c37e4f6e 100644 --- a/db/compaction/compaction_iterator.cc +++ b/db/compaction/compaction_iterator.cc @@ -1100,7 +1100,9 @@ void CompactionIterator::DecideOutputLevel() { TEST_SYNC_POINT_CALLBACK("CompactionIterator::PrepareOutput.context", &context); output_to_penultimate_level_ = context.output_to_penultimate_level; -#endif /* !NDEBUG */ +#else + output_to_penultimate_level_ = false; +#endif // NDEBUG // if the key is newer than the cutoff sequence or within the earliest // snapshot, it should output to the penultimate level.