]> git-server-git.apps.pok.os.sepia.ceph.com Git - rocksdb.git/commitdiff
Fix CompactionIterator flag for penultimate level output (#10967)
authorAndrew Kryczka <andrewkr@fb.com>
Tue, 22 Nov 2022 00:14:03 +0000 (16:14 -0800)
committerAndrew Kryczka <andrewkr@fb.com>
Thu, 24 Nov 2022 21:32:17 +0000 (13:32 -0800)
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

HISTORY.md
db/compaction/compaction_iterator.cc

index ab400dbc1a850b7744769aecd6e6d0a66b1d4547..76fd0c5a98f635d47b4d91430b00ab40e011c161 100644 (file)
@@ -6,6 +6,7 @@
 ## 7.7.7 (11/15/2022)
 ### Bug Fixes
 * Fixed a regression in scan for async_io. During seek, valid buffers were getting cleared causing a regression.
+* Tiered Storage: fixed excessive keys written to penultimate level in non-debug builds.
 
 ## 7.7.6 (11/03/2022)
 ### Bug Fixes
index 0ca9e75f60ce49ee9450f20df9f45766859f7421..cf790ff712c8b4fade01fb47b6f64a22da6b6c97 100644 (file)
@@ -1086,7 +1086,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.