@nxtedition/rocksdb 7.1.20 → 7.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -6
- package/deps/rocksdb/rocksdb/Makefile +1 -1
- package/deps/rocksdb/rocksdb/TARGETS +2 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +4 -4
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +139 -161
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +92 -82
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +16 -3
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -3
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +73 -30
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +25 -67
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +41 -40
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +109 -155
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +127 -149
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +75 -80
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +22 -172
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +272 -85
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +12 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +13 -4
- package/deps/rocksdb/rocksdb/db/builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +15 -1
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +25 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +10 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +22 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +14 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +38 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +9 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +408 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +244 -54
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +27 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +25 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +87 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -10
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +272 -0
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +38 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +69 -25
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +7 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +29 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +0 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +10 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +35 -22
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +5 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +40 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +22 -0
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +72 -5
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +60 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +170 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +9 -3
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +19 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.h +32 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +444 -3
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/dbformat.cc +13 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +59 -4
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +3 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +24 -3
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/filename_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +85 -43
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +3 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +33 -6
- package/deps/rocksdb/rocksdb/db/internal_stats.h +6 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +1 -1
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +158 -56
- package/deps/rocksdb/rocksdb/db/memtable.h +2 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +52 -9
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +31 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +81 -42
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +78 -12
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +21 -4
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +4 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +18 -6
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_set.cc +15 -7
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +3 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +28 -9
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +21 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +30 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +4 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +30 -7
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +24 -13
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +104 -60
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +199 -108
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +39 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +8 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +3 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +26 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -118
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +24 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +18 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +129 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +22 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +312 -117
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +10 -2
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +5 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +49 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +44 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +8 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -6
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memory/arena.cc +23 -88
- package/deps/rocksdb/rocksdb/memory/arena.h +25 -31
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +61 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +8 -0
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_test.cc +63 -40
- package/deps/rocksdb/rocksdb/port/mmap.cc +98 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +70 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +7 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +4 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -7
- package/deps/rocksdb/rocksdb/src.mk +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +7 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/get_context.cc +19 -1
- package/deps/rocksdb/rocksdb/table/get_context.h +9 -0
- package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -11
- package/deps/rocksdb/rocksdb/table/mock_table.cc +37 -19
- package/deps/rocksdb/rocksdb/table/mock_table.h +5 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +6 -0
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +33 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +45 -6
- package/deps/rocksdb/rocksdb/test_util/testharness.h +2 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +5 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +36 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +12 -7
- package/deps/rocksdb/rocksdb/util/hash_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/heap_test.cc +4 -2
- package/deps/rocksdb/rocksdb/util/random_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/thread_local_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/timer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/work_queue_test.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +13 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +8 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +20 -0
- package/index.js +12 -4
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -221,7 +221,7 @@ Compaction::Compaction(
|
|
|
221
221
|
: input_vstorage_(vstorage),
|
|
222
222
|
start_level_(_inputs[0].level),
|
|
223
223
|
output_level_(_output_level),
|
|
224
|
-
|
|
224
|
+
target_output_file_size_(_target_file_size),
|
|
225
225
|
max_compaction_bytes_(_max_compaction_bytes),
|
|
226
226
|
max_subcompactions_(_max_subcompactions),
|
|
227
227
|
immutable_options_(_immutable_options),
|
|
@@ -268,6 +268,14 @@ Compaction::Compaction(
|
|
|
268
268
|
max_subcompactions_ = _mutable_db_options.max_subcompactions;
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
+
// for the non-bottommost levels, it tries to build files match the target
|
|
272
|
+
// file size, but not guaranteed. It could be 2x the size of the target size.
|
|
273
|
+
max_output_file_size_ =
|
|
274
|
+
bottommost_level_ || grandparents_.empty() ||
|
|
275
|
+
!_immutable_options.level_compaction_dynamic_file_size
|
|
276
|
+
? target_output_file_size_
|
|
277
|
+
: 2 * target_output_file_size_;
|
|
278
|
+
|
|
271
279
|
#ifndef NDEBUG
|
|
272
280
|
for (size_t i = 1; i < inputs_.size(); ++i) {
|
|
273
281
|
assert(inputs_[i].level > inputs_[i - 1].level);
|
|
@@ -314,9 +322,13 @@ void Compaction::PopulatePenultimateLevelOutputRange() {
|
|
|
314
322
|
return;
|
|
315
323
|
}
|
|
316
324
|
|
|
325
|
+
int exclude_level =
|
|
326
|
+
immutable_options_.compaction_style == kCompactionStyleUniversal
|
|
327
|
+
? kInvalidLevel
|
|
328
|
+
: number_levels_ - 1;
|
|
317
329
|
GetBoundaryKeys(input_vstorage_, inputs_,
|
|
318
330
|
&penultimate_level_smallest_user_key_,
|
|
319
|
-
&penultimate_level_largest_user_key_,
|
|
331
|
+
&penultimate_level_largest_user_key_, exclude_level);
|
|
320
332
|
}
|
|
321
333
|
|
|
322
334
|
Compaction::~Compaction() {
|
|
@@ -334,6 +346,8 @@ bool Compaction::SupportsPerKeyPlacement() const {
|
|
|
334
346
|
|
|
335
347
|
int Compaction::GetPenultimateLevel() const { return penultimate_level_; }
|
|
336
348
|
|
|
349
|
+
// smallest_key and largest_key include timestamps if user-defined timestamp is
|
|
350
|
+
// enabled.
|
|
337
351
|
bool Compaction::OverlapPenultimateLevelOutputRange(
|
|
338
352
|
const Slice& smallest_key, const Slice& largest_key) const {
|
|
339
353
|
if (!SupportsPerKeyPlacement()) {
|
|
@@ -342,11 +356,13 @@ bool Compaction::OverlapPenultimateLevelOutputRange(
|
|
|
342
356
|
const Comparator* ucmp =
|
|
343
357
|
input_vstorage_->InternalComparator()->user_comparator();
|
|
344
358
|
|
|
345
|
-
return ucmp->
|
|
346
|
-
0 &&
|
|
347
|
-
ucmp->
|
|
359
|
+
return ucmp->CompareWithoutTimestamp(
|
|
360
|
+
smallest_key, penultimate_level_largest_user_key_) <= 0 &&
|
|
361
|
+
ucmp->CompareWithoutTimestamp(
|
|
362
|
+
largest_key, penultimate_level_smallest_user_key_) >= 0;
|
|
348
363
|
}
|
|
349
364
|
|
|
365
|
+
// key includes timestamp if user-defined timestamp is enabled.
|
|
350
366
|
bool Compaction::WithinPenultimateLevelOutputRange(const Slice& key) const {
|
|
351
367
|
if (!SupportsPerKeyPlacement()) {
|
|
352
368
|
return false;
|
|
@@ -355,8 +371,10 @@ bool Compaction::WithinPenultimateLevelOutputRange(const Slice& key) const {
|
|
|
355
371
|
const Comparator* ucmp =
|
|
356
372
|
input_vstorage_->InternalComparator()->user_comparator();
|
|
357
373
|
|
|
358
|
-
return ucmp->
|
|
359
|
-
|
|
374
|
+
return ucmp->CompareWithoutTimestamp(
|
|
375
|
+
key, penultimate_level_smallest_user_key_) >= 0 &&
|
|
376
|
+
ucmp->CompareWithoutTimestamp(
|
|
377
|
+
key, penultimate_level_largest_user_key_) <= 0;
|
|
360
378
|
}
|
|
361
379
|
|
|
362
380
|
bool Compaction::InputCompressionMatchesOutput() const {
|
|
@@ -163,6 +163,9 @@ class Compaction {
|
|
|
163
163
|
// Maximum size of files to build during this compaction.
|
|
164
164
|
uint64_t max_output_file_size() const { return max_output_file_size_; }
|
|
165
165
|
|
|
166
|
+
// Target output file size for this compaction
|
|
167
|
+
uint64_t target_output_file_size() const { return target_output_file_size_; }
|
|
168
|
+
|
|
166
169
|
// What compression for output
|
|
167
170
|
CompressionType output_compression() const { return output_compression_; }
|
|
168
171
|
|
|
@@ -316,6 +319,8 @@ class Compaction {
|
|
|
316
319
|
|
|
317
320
|
// Return true if the given range is overlap with penultimate level output
|
|
318
321
|
// range.
|
|
322
|
+
// Both smallest_key and largest_key include timestamps if user-defined
|
|
323
|
+
// timestamp is enabled.
|
|
319
324
|
bool OverlapPenultimateLevelOutputRange(const Slice& smallest_key,
|
|
320
325
|
const Slice& largest_key) const;
|
|
321
326
|
|
|
@@ -325,6 +330,7 @@ class Compaction {
|
|
|
325
330
|
// If per_key_placement is not supported, always return false.
|
|
326
331
|
// TODO: currently it doesn't support moving data from the last level to the
|
|
327
332
|
// penultimate level
|
|
333
|
+
// key includes timestamp if user-defined timestamp is enabled.
|
|
328
334
|
bool WithinPenultimateLevelOutputRange(const Slice& key) const;
|
|
329
335
|
|
|
330
336
|
CompactionReason compaction_reason() const { return compaction_reason_; }
|
|
@@ -412,6 +418,7 @@ class Compaction {
|
|
|
412
418
|
|
|
413
419
|
const int start_level_; // the lowest level to be compacted
|
|
414
420
|
const int output_level_; // levels to which output files are stored
|
|
421
|
+
uint64_t target_output_file_size_;
|
|
415
422
|
uint64_t max_output_file_size_;
|
|
416
423
|
uint64_t max_compaction_bytes_;
|
|
417
424
|
uint32_t max_subcompactions_;
|
|
@@ -470,9 +477,11 @@ class Compaction {
|
|
|
470
477
|
TablePropertiesCollection output_table_properties_;
|
|
471
478
|
|
|
472
479
|
// smallest user keys in compaction
|
|
480
|
+
// includes timestamp if user-defined timestamp is enabled.
|
|
473
481
|
Slice smallest_user_key_;
|
|
474
482
|
|
|
475
483
|
// largest user keys in compaction
|
|
484
|
+
// includes timestamp if user-defined timestamp is enabled.
|
|
476
485
|
Slice largest_user_key_;
|
|
477
486
|
|
|
478
487
|
// Reason for compaction
|
|
@@ -493,6 +502,7 @@ class Compaction {
|
|
|
493
502
|
const int penultimate_level_;
|
|
494
503
|
|
|
495
504
|
// Key range for penultimate level output
|
|
505
|
+
// includes timestamp if user-defined timestamp is enabled.
|
|
496
506
|
Slice penultimate_level_smallest_user_key_;
|
|
497
507
|
Slice penultimate_level_largest_user_key_;
|
|
498
508
|
};
|
|
@@ -34,7 +34,8 @@ CompactionIterator::CompactionIterator(
|
|
|
34
34
|
const std::atomic<bool>* shutting_down,
|
|
35
35
|
const std::shared_ptr<Logger> info_log,
|
|
36
36
|
const std::string* full_history_ts_low,
|
|
37
|
-
const SequenceNumber
|
|
37
|
+
const SequenceNumber preserve_time_min_seqno,
|
|
38
|
+
const SequenceNumber preclude_last_level_min_seqno)
|
|
38
39
|
: CompactionIterator(
|
|
39
40
|
input, cmp, merge_helper, last_sequence, snapshots,
|
|
40
41
|
earliest_write_conflict_snapshot, job_snapshot, snapshot_checker, env,
|
|
@@ -44,7 +45,7 @@ CompactionIterator::CompactionIterator(
|
|
|
44
45
|
std::unique_ptr<CompactionProxy>(
|
|
45
46
|
compaction ? new RealCompaction(compaction) : nullptr),
|
|
46
47
|
compaction_filter, shutting_down, info_log, full_history_ts_low,
|
|
47
|
-
|
|
48
|
+
preserve_time_min_seqno, preclude_last_level_min_seqno) {}
|
|
48
49
|
|
|
49
50
|
CompactionIterator::CompactionIterator(
|
|
50
51
|
InternalIterator* input, const Comparator* cmp, MergeHelper* merge_helper,
|
|
@@ -61,7 +62,8 @@ CompactionIterator::CompactionIterator(
|
|
|
61
62
|
const std::atomic<bool>* shutting_down,
|
|
62
63
|
const std::shared_ptr<Logger> info_log,
|
|
63
64
|
const std::string* full_history_ts_low,
|
|
64
|
-
const SequenceNumber
|
|
65
|
+
const SequenceNumber preserve_time_min_seqno,
|
|
66
|
+
const SequenceNumber preclude_last_level_min_seqno)
|
|
65
67
|
: input_(input, cmp,
|
|
66
68
|
!compaction || compaction->DoesInputReferenceBlobFiles()),
|
|
67
69
|
cmp_(cmp),
|
|
@@ -105,8 +107,10 @@ CompactionIterator::CompactionIterator(
|
|
|
105
107
|
current_key_committed_(false),
|
|
106
108
|
cmp_with_history_ts_low_(0),
|
|
107
109
|
level_(compaction_ == nullptr ? 0 : compaction_->level()),
|
|
108
|
-
|
|
110
|
+
preserve_time_min_seqno_(preserve_time_min_seqno),
|
|
111
|
+
preclude_last_level_min_seqno_(preclude_last_level_min_seqno) {
|
|
109
112
|
assert(snapshots_ != nullptr);
|
|
113
|
+
assert(preserve_time_min_seqno_ <= preclude_last_level_min_seqno_);
|
|
110
114
|
|
|
111
115
|
if (compaction_ != nullptr) {
|
|
112
116
|
level_ptrs_ = std::vector<size_t>(compaction_->number_levels(), 0);
|
|
@@ -914,8 +918,17 @@ void CompactionIterator::NextFromInput() {
|
|
|
914
918
|
} else {
|
|
915
919
|
// 1. new user key -OR-
|
|
916
920
|
// 2. different snapshot stripe
|
|
917
|
-
|
|
918
|
-
|
|
921
|
+
// If user-defined timestamp is enabled, we consider keys for GC if they
|
|
922
|
+
// are below history_ts_low_. CompactionRangeDelAggregator::ShouldDelete()
|
|
923
|
+
// only considers range deletions that are at or below history_ts_low_ and
|
|
924
|
+
// trim_ts_. We drop keys here that are below history_ts_low_ and are
|
|
925
|
+
// covered by a range tombstone that is at or below history_ts_low_ and
|
|
926
|
+
// trim_ts.
|
|
927
|
+
bool should_delete = false;
|
|
928
|
+
if (!timestamp_size_ || cmp_with_history_ts_low_ < 0) {
|
|
929
|
+
should_delete = range_del_agg_->ShouldDelete(
|
|
930
|
+
key_, RangeDelPositioningMode::kForwardTraversal);
|
|
931
|
+
}
|
|
919
932
|
if (should_delete) {
|
|
920
933
|
++iter_stats_.num_record_drop_hidden;
|
|
921
934
|
++iter_stats_.num_record_drop_range_del;
|
|
@@ -1079,6 +1092,7 @@ void CompactionIterator::GarbageCollectBlobIfNeeded() {
|
|
|
1079
1092
|
}
|
|
1080
1093
|
|
|
1081
1094
|
void CompactionIterator::DecideOutputLevel() {
|
|
1095
|
+
assert(compaction_->SupportsPerKeyPlacement());
|
|
1082
1096
|
#ifndef NDEBUG
|
|
1083
1097
|
// Could be overridden by unittest
|
|
1084
1098
|
PerKeyPlacementContext context(level_, ikey_.user_key, value_,
|
|
@@ -1090,7 +1104,7 @@ void CompactionIterator::DecideOutputLevel() {
|
|
|
1090
1104
|
|
|
1091
1105
|
// if the key is newer than the cutoff sequence or within the earliest
|
|
1092
1106
|
// snapshot, it should output to the penultimate level.
|
|
1093
|
-
if (ikey_.sequence >
|
|
1107
|
+
if (ikey_.sequence > preclude_last_level_min_seqno_ ||
|
|
1094
1108
|
ikey_.sequence > earliest_snapshot_) {
|
|
1095
1109
|
output_to_penultimate_level_ = true;
|
|
1096
1110
|
}
|
|
@@ -1152,7 +1166,7 @@ void CompactionIterator::PrepareOutput() {
|
|
|
1152
1166
|
DefinitelyInSnapshot(ikey_.sequence, earliest_snapshot_) &&
|
|
1153
1167
|
ikey_.type != kTypeMerge && current_key_committed_ &&
|
|
1154
1168
|
!output_to_penultimate_level_ &&
|
|
1155
|
-
ikey_.sequence <
|
|
1169
|
+
ikey_.sequence < preserve_time_min_seqno_) {
|
|
1156
1170
|
if (ikey_.type == kTypeDeletion ||
|
|
1157
1171
|
(ikey_.type == kTypeSingleDeletion && timestamp_size_ == 0)) {
|
|
1158
1172
|
ROCKS_LOG_FATAL(
|
|
@@ -88,6 +88,7 @@ class CompactionIterator {
|
|
|
88
88
|
|
|
89
89
|
virtual int number_levels() const = 0;
|
|
90
90
|
|
|
91
|
+
// Result includes timestamp if user-defined timestamp is enabled.
|
|
91
92
|
virtual Slice GetLargestUserKey() const = 0;
|
|
92
93
|
|
|
93
94
|
virtual bool allow_ingest_behind() const = 0;
|
|
@@ -108,6 +109,7 @@ class CompactionIterator {
|
|
|
108
109
|
|
|
109
110
|
virtual bool SupportsPerKeyPlacement() const = 0;
|
|
110
111
|
|
|
112
|
+
// `key` includes timestamp if user-defined timestamp is enabled.
|
|
111
113
|
virtual bool WithinPenultimateLevelOutputRange(const Slice& key) const = 0;
|
|
112
114
|
};
|
|
113
115
|
|
|
@@ -133,6 +135,7 @@ class CompactionIterator {
|
|
|
133
135
|
|
|
134
136
|
int number_levels() const override { return compaction_->number_levels(); }
|
|
135
137
|
|
|
138
|
+
// Result includes timestamp if user-defined timestamp is enabled.
|
|
136
139
|
Slice GetLargestUserKey() const override {
|
|
137
140
|
return compaction_->GetLargestUserKey();
|
|
138
141
|
}
|
|
@@ -173,6 +176,7 @@ class CompactionIterator {
|
|
|
173
176
|
|
|
174
177
|
// Check if key is within penultimate level output range, to see if it's
|
|
175
178
|
// safe to output to the penultimate level for per_key_placement feature.
|
|
179
|
+
// `key` includes timestamp if user-defined timestamp is enabled.
|
|
176
180
|
bool WithinPenultimateLevelOutputRange(const Slice& key) const override {
|
|
177
181
|
return compaction_->WithinPenultimateLevelOutputRange(key);
|
|
178
182
|
}
|
|
@@ -196,7 +200,8 @@ class CompactionIterator {
|
|
|
196
200
|
const std::atomic<bool>* shutting_down = nullptr,
|
|
197
201
|
const std::shared_ptr<Logger> info_log = nullptr,
|
|
198
202
|
const std::string* full_history_ts_low = nullptr,
|
|
199
|
-
const SequenceNumber
|
|
203
|
+
const SequenceNumber preserve_time_min_seqno = kMaxSequenceNumber,
|
|
204
|
+
const SequenceNumber preclude_last_level_min_seqno = kMaxSequenceNumber);
|
|
200
205
|
|
|
201
206
|
// Constructor with custom CompactionProxy, used for tests.
|
|
202
207
|
CompactionIterator(
|
|
@@ -214,7 +219,8 @@ class CompactionIterator {
|
|
|
214
219
|
const std::atomic<bool>* shutting_down = nullptr,
|
|
215
220
|
const std::shared_ptr<Logger> info_log = nullptr,
|
|
216
221
|
const std::string* full_history_ts_low = nullptr,
|
|
217
|
-
const SequenceNumber
|
|
222
|
+
const SequenceNumber preserve_time_min_seqno = kMaxSequenceNumber,
|
|
223
|
+
const SequenceNumber preclude_last_level_min_seqno = kMaxSequenceNumber);
|
|
218
224
|
|
|
219
225
|
~CompactionIterator();
|
|
220
226
|
|
|
@@ -466,9 +472,12 @@ class CompactionIterator {
|
|
|
466
472
|
// output to.
|
|
467
473
|
bool output_to_penultimate_level_{false};
|
|
468
474
|
|
|
469
|
-
//
|
|
470
|
-
|
|
471
|
-
|
|
475
|
+
// min seqno for preserving the time information.
|
|
476
|
+
const SequenceNumber preserve_time_min_seqno_ = kMaxSequenceNumber;
|
|
477
|
+
|
|
478
|
+
// min seqno to preclude the data from the last level, if the key seqno larger
|
|
479
|
+
// than this, it will be output to penultimate level
|
|
480
|
+
const SequenceNumber preclude_last_level_min_seqno_ = kMaxSequenceNumber;
|
|
472
481
|
|
|
473
482
|
void AdvanceInputIter() { input_.Next(); }
|
|
474
483
|
|
|
@@ -1497,6 +1497,7 @@ INSTANTIATE_TEST_CASE_P(CompactionIteratorTsGcTestInstance,
|
|
|
1497
1497
|
} // namespace ROCKSDB_NAMESPACE
|
|
1498
1498
|
|
|
1499
1499
|
int main(int argc, char** argv) {
|
|
1500
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
1500
1501
|
::testing::InitGoogleTest(&argc, argv);
|
|
1501
1502
|
return RUN_ALL_TESTS();
|
|
1502
1503
|
}
|
|
@@ -97,6 +97,8 @@ const char* GetCompactionReasonString(CompactionReason compaction_reason) {
|
|
|
97
97
|
return "ChangeTemperature";
|
|
98
98
|
case CompactionReason::kForcedBlobGC:
|
|
99
99
|
return "ForcedBlobGC";
|
|
100
|
+
case CompactionReason::kRoundRobinTtl:
|
|
101
|
+
return "RoundRobinTtl";
|
|
100
102
|
case CompactionReason::kNumOfReasons:
|
|
101
103
|
// fall through
|
|
102
104
|
default:
|
|
@@ -263,11 +265,15 @@ void CompactionJob::Prepare() {
|
|
|
263
265
|
/*sub_job_id*/ 0);
|
|
264
266
|
}
|
|
265
267
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
268
|
+
// collect all seqno->time information from the input files which will be used
|
|
269
|
+
// to encode seqno->time to the output files.
|
|
270
|
+
uint64_t preserve_time_duration =
|
|
271
|
+
std::max(c->immutable_options()->preserve_internal_time_seconds,
|
|
272
|
+
c->immutable_options()->preclude_last_level_data_seconds);
|
|
273
|
+
|
|
274
|
+
if (preserve_time_duration > 0) {
|
|
270
275
|
// setup seqno_time_mapping_
|
|
276
|
+
seqno_time_mapping_.SetMaxTimeDuration(preserve_time_duration);
|
|
271
277
|
for (const auto& each_level : *c->inputs()) {
|
|
272
278
|
for (const auto& fmd : each_level.files) {
|
|
273
279
|
std::shared_ptr<const TableProperties> tp;
|
|
@@ -293,10 +299,27 @@ void CompactionJob::Prepare() {
|
|
|
293
299
|
ROCKS_LOG_WARN(db_options_.info_log,
|
|
294
300
|
"Failed to get current time in compaction: Status: %s",
|
|
295
301
|
status.ToString().c_str());
|
|
296
|
-
|
|
302
|
+
// preserve all time information
|
|
303
|
+
preserve_time_min_seqno_ = 0;
|
|
304
|
+
preclude_last_level_min_seqno_ = 0;
|
|
297
305
|
} else {
|
|
298
|
-
|
|
299
|
-
|
|
306
|
+
seqno_time_mapping_.TruncateOldEntries(_current_time);
|
|
307
|
+
uint64_t preserve_time =
|
|
308
|
+
static_cast<uint64_t>(_current_time) > preserve_time_duration
|
|
309
|
+
? _current_time - preserve_time_duration
|
|
310
|
+
: 0;
|
|
311
|
+
preserve_time_min_seqno_ =
|
|
312
|
+
seqno_time_mapping_.GetOldestSequenceNum(preserve_time);
|
|
313
|
+
if (c->immutable_options()->preclude_last_level_data_seconds > 0) {
|
|
314
|
+
uint64_t preclude_last_level_time =
|
|
315
|
+
static_cast<uint64_t>(_current_time) >
|
|
316
|
+
c->immutable_options()->preclude_last_level_data_seconds
|
|
317
|
+
? _current_time -
|
|
318
|
+
c->immutable_options()->preclude_last_level_data_seconds
|
|
319
|
+
: 0;
|
|
320
|
+
preclude_last_level_min_seqno_ =
|
|
321
|
+
seqno_time_mapping_.GetOldestSequenceNum(preclude_last_level_time);
|
|
322
|
+
}
|
|
300
323
|
}
|
|
301
324
|
}
|
|
302
325
|
}
|
|
@@ -1035,7 +1058,8 @@ void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) {
|
|
|
1035
1058
|
NotifyOnSubcompactionBegin(sub_compact);
|
|
1036
1059
|
|
|
1037
1060
|
auto range_del_agg = std::make_unique<CompactionRangeDelAggregator>(
|
|
1038
|
-
&cfd->internal_comparator(), existing_snapshots_
|
|
1061
|
+
&cfd->internal_comparator(), existing_snapshots_, &full_history_ts_low_,
|
|
1062
|
+
&trim_ts_);
|
|
1039
1063
|
|
|
1040
1064
|
// TODO: since we already use C++17, should use
|
|
1041
1065
|
// std::optional<const Slice> instead.
|
|
@@ -1213,8 +1237,8 @@ void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) {
|
|
|
1213
1237
|
blob_file_builder.get(), db_options_.allow_data_in_errors,
|
|
1214
1238
|
db_options_.enforce_single_del_contracts, manual_compaction_canceled_,
|
|
1215
1239
|
sub_compact->compaction, compaction_filter, shutting_down_,
|
|
1216
|
-
db_options_.info_log, full_history_ts_low,
|
|
1217
|
-
|
|
1240
|
+
db_options_.info_log, full_history_ts_low, preserve_time_min_seqno_,
|
|
1241
|
+
preclude_last_level_min_seqno_);
|
|
1218
1242
|
c_iter->SeekToFirst();
|
|
1219
1243
|
|
|
1220
1244
|
// Assign range delete aggregator to the target output level, which makes sure
|
|
@@ -1455,7 +1479,7 @@ Status CompactionJob::FinishCompactionOutputFile(
|
|
|
1455
1479
|
: nullptr,
|
|
1456
1480
|
sub_compact->end.has_value() ? &(sub_compact->end.value()) : nullptr,
|
|
1457
1481
|
range_del_out_stats, bottommost_level_, cfd->internal_comparator(),
|
|
1458
|
-
earliest_snapshot, next_table_min_key);
|
|
1482
|
+
earliest_snapshot, next_table_min_key, full_history_ts_low_);
|
|
1459
1483
|
}
|
|
1460
1484
|
RecordDroppedKeys(range_del_out_stats, &sub_compact->compaction_job_stats);
|
|
1461
1485
|
TEST_SYNC_POINT("CompactionJob::FinishCompactionOutputFile1");
|
|
@@ -1661,7 +1685,9 @@ Status CompactionJob::InstallCompactionResults(
|
|
|
1661
1685
|
stats.GetBytes());
|
|
1662
1686
|
}
|
|
1663
1687
|
|
|
1664
|
-
if (compaction->compaction_reason() ==
|
|
1688
|
+
if ((compaction->compaction_reason() ==
|
|
1689
|
+
CompactionReason::kLevelMaxLevelSize ||
|
|
1690
|
+
compaction->compaction_reason() == CompactionReason::kRoundRobinTtl) &&
|
|
1665
1691
|
compaction->immutable_options()->compaction_pri == kRoundRobin) {
|
|
1666
1692
|
int start_level = compaction->start_level();
|
|
1667
1693
|
if (start_level > 0) {
|
|
@@ -335,12 +335,15 @@ class CompactionJob {
|
|
|
335
335
|
// it also collects the smallest_seqno -> oldest_ancester_time from the SST.
|
|
336
336
|
SeqnoToTimeMapping seqno_time_mapping_;
|
|
337
337
|
|
|
338
|
-
//
|
|
339
|
-
//
|
|
340
|
-
//
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
338
|
+
// Minimal sequence number for preserving the time information. The time info
|
|
339
|
+
// older than this sequence number won't be preserved after the compaction and
|
|
340
|
+
// if it's bottommost compaction, the seq num will be zeroed out.
|
|
341
|
+
SequenceNumber preserve_time_min_seqno_ = kMaxSequenceNumber;
|
|
342
|
+
|
|
343
|
+
// Minimal sequence number to preclude the data from the last level. If the
|
|
344
|
+
// key has bigger (newer) sequence number than this, it will be precluded from
|
|
345
|
+
// the last level (output to penultimate level).
|
|
346
|
+
SequenceNumber preclude_last_level_min_seqno_ = kMaxSequenceNumber;
|
|
344
347
|
|
|
345
348
|
// Get table file name in where it's outputting to, which should also be in
|
|
346
349
|
// `output_directory_`.
|