@nxtedition/rocksdb 7.1.30 → 7.1.32
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 +2 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +15 -23
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +0 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +4 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -1
- package/deps/rocksdb/rocksdb/crash_test.mk +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +15 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +78 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +32 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +8 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +47 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +105 -166
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +46 -15
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +47 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +17 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +11 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +12 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +337 -103
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +43 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +524 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +164 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +11 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable.cc +16 -23
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +30 -0
- package/deps/rocksdb/rocksdb/db/merge_helper.h +9 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +29 -9
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +10 -7
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +12 -8
- package/deps/rocksdb/rocksdb/db/version_set.cc +11 -6
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +142 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +59 -53
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +3 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +0 -2
- package/deps/rocksdb/rocksdb/env/env.cc +16 -19
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +20 -20
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +62 -60
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_test.cc +179 -176
- package/deps/rocksdb/rocksdb/env/file_system.cc +3 -4
- package/deps/rocksdb/rocksdb/env/io_posix.cc +3 -2
- package/deps/rocksdb/rocksdb/env/io_posix.h +1 -2
- package/deps/rocksdb/rocksdb/env/mock_env.h +1 -0
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +4 -4
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +6 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +2 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +6 -7
- package/deps/rocksdb/rocksdb/file/file_util.cc +1 -1
- package/deps/rocksdb/rocksdb/file/filename.cc +16 -17
- package/deps/rocksdb/rocksdb/file/filename.h +4 -5
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +492 -496
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +1 -3
- package/deps/rocksdb/rocksdb/file/read_write_util.cc +1 -0
- package/deps/rocksdb/rocksdb/file/read_write_util.h +1 -0
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +6 -8
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/block_cache_trace_writer.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +166 -167
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +12 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +0 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +3 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +3 -7
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +20 -23
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/event_logger.cc +1 -3
- package/deps/rocksdb/rocksdb/logging/event_logger.h +4 -5
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +2 -1
- package/deps/rocksdb/rocksdb/logging/log_buffer.cc +2 -3
- package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -2
- package/deps/rocksdb/rocksdb/logging/logging.h +3 -3
- package/deps/rocksdb/rocksdb/memory/allocator.h +1 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +2 -0
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -0
- package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +17 -20
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +13 -15
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +11 -10
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +3 -3
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +30 -28
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +4 -6
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +73 -70
- package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +1 -1
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +21 -23
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +24 -38
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +10 -17
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +19 -19
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +22 -30
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +4 -6
- package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +4 -12
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -3
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +12 -14
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +2 -3
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -3
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.h +7 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +12 -22
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +7 -10
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/port/lang.h +3 -1
- package/deps/rocksdb/rocksdb/port/likely.h +2 -2
- package/deps/rocksdb/rocksdb/port/mmap.h +2 -2
- package/deps/rocksdb/rocksdb/port/port_dirent.h +2 -2
- package/deps/rocksdb/rocksdb/port/port_posix.cc +32 -27
- package/deps/rocksdb/rocksdb/port/port_posix.h +31 -30
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +1 -1
- package/deps/rocksdb/rocksdb/port/sys_time.h +1 -1
- package/deps/rocksdb/rocksdb/port/win/io_win.h +6 -7
- package/deps/rocksdb/rocksdb/port/win/port_win.h +12 -20
- package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -5
- package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -4
- package/deps/rocksdb/rocksdb/port/win/win_thread.cc +30 -49
- package/deps/rocksdb/rocksdb/port/win/win_thread.h +5 -5
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -62
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +2 -2
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +4 -3
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +28 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -3
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -6
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +5 -6
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +90 -80
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +5 -4
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +63 -69
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +58 -57
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +3 -3
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +35 -30
- package/deps/rocksdb/rocksdb/table/get_context.cc +16 -10
- package/deps/rocksdb/rocksdb/table/iter_heap.h +2 -0
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -3
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +31 -16
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +6 -6
- package/deps/rocksdb/rocksdb/table/multiget_context.h +5 -6
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +7 -10
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +3 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +2 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +4 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +2 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +10 -21
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +14 -12
- package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +2 -5
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -3
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +0 -6
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +0 -33
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -6
- package/deps/rocksdb/rocksdb/table/table_properties.cc +24 -37
- package/deps/rocksdb/rocksdb/table/table_reader.h +3 -2
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +9 -8
- package/deps/rocksdb/rocksdb/table/table_test.cc +77 -82
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +8 -18
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +2 -2
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +13 -18
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +1 -2
- package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -7
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +3 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +1 -1
- package/deps/rocksdb/rocksdb/tools/blob_dump.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -7
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +3 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +296 -314
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +6 -6
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +57 -64
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +6 -5
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +1 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +10 -10
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +6 -3
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +12 -31
- package/deps/rocksdb/rocksdb/util/autovector.h +3 -6
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +12 -12
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +8 -12
- package/deps/rocksdb/rocksdb/util/coding.cc +1 -0
- package/deps/rocksdb/rocksdb/util/coding.h +17 -15
- package/deps/rocksdb/rocksdb/util/coding_test.cc +14 -15
- package/deps/rocksdb/rocksdb/util/comparator.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +6 -3
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +5 -8
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +202 -297
- package/deps/rocksdb/rocksdb/util/crc32c.h +2 -3
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +2 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +39 -54
- package/deps/rocksdb/rocksdb/util/defer.h +2 -1
- package/deps/rocksdb/rocksdb/util/defer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/util/duplicate_detector.h +2 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +24 -29
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +4 -4
- package/deps/rocksdb/rocksdb/util/hash_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/heap.h +5 -4
- package/deps/rocksdb/rocksdb/util/heap_test.cc +15 -25
- package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
- package/deps/rocksdb/rocksdb/util/murmurhash.cc +7 -2
- package/deps/rocksdb/rocksdb/util/murmurhash.h +4 -3
- package/deps/rocksdb/rocksdb/util/mutexlock.h +5 -11
- package/deps/rocksdb/rocksdb/util/random.cc +1 -0
- package/deps/rocksdb/rocksdb/util/random.h +2 -4
- package/deps/rocksdb/rocksdb/util/random_test.cc +2 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +4 -3
- package/deps/rocksdb/rocksdb/util/slice.cc +1 -1
- package/deps/rocksdb/rocksdb/util/slice_test.cc +1 -2
- package/deps/rocksdb/rocksdb/util/status.cc +2 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +2 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +64 -76
- package/deps/rocksdb/rocksdb/util/thread_local.cc +18 -32
- package/deps/rocksdb/rocksdb/util/thread_local.h +2 -3
- package/deps/rocksdb/rocksdb/util/thread_operation.h +34 -43
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +54 -73
- package/deps/rocksdb/rocksdb/util/threadpool_imp.h +18 -18
- package/deps/rocksdb/rocksdb/util/timer.h +4 -9
- package/deps/rocksdb/rocksdb/util/timer_queue.h +1 -0
- package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/xxhash.cc +1 -2
- package/deps/rocksdb/rocksdb/util/xxhash.h +7 -4
- package/deps/rocksdb/rocksdb/util/xxph3.h +3 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +16 -24
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +106 -104
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +11 -15
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +12 -12
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +56 -55
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +91 -74
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +17 -34
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +21 -45
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +74 -97
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +17 -18
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +19 -19
- package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +19 -18
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +7 -10
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +10 -15
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +9 -13
- package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +7 -9
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +4 -5
- package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +2 -4
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +39 -50
- package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators.h +4 -3
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +5 -7
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +5 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +3 -6
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +18 -13
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +1 -3
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +15 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +14 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +4 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +5 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +2 -6
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +80 -79
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +9 -17
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -51,15 +51,24 @@ class CompactionPicker {
|
|
|
51
51
|
virtual ~CompactionPicker();
|
|
52
52
|
|
|
53
53
|
// Pick level and inputs for a new compaction.
|
|
54
|
+
//
|
|
55
|
+
// `earliest_mem_seqno` is the earliest seqno of unflushed memtables.
|
|
56
|
+
// It is needed to compare with compaction input SST files' largest seqnos
|
|
57
|
+
// in order to exclude those of seqnos potentially overlap with memtables'
|
|
58
|
+
// seqnos when doing compaction to L0. This will avoid creating a SST files in
|
|
59
|
+
// L0 newer than a unflushed memtable. Such SST file can exist in the first
|
|
60
|
+
// place when it's ingested or resulted from compaction involving files
|
|
61
|
+
// ingested.
|
|
62
|
+
//
|
|
54
63
|
// Returns nullptr if there is no compaction to be done.
|
|
55
64
|
// Otherwise returns a pointer to a heap-allocated object that
|
|
56
65
|
// describes the compaction. Caller should delete the result.
|
|
57
66
|
virtual Compaction* PickCompaction(
|
|
58
67
|
const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
|
|
59
68
|
const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
|
|
60
|
-
LogBuffer* log_buffer,
|
|
61
|
-
SequenceNumber earliest_memtable_seqno = kMaxSequenceNumber) = 0;
|
|
69
|
+
LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) = 0;
|
|
62
70
|
|
|
71
|
+
// `earliest_mem_seqno`: see PickCompaction() API
|
|
63
72
|
// Return a compaction object for compacting the range [begin,end] in
|
|
64
73
|
// the specified level. Returns nullptr if there is nothing in that
|
|
65
74
|
// level that overlaps the specified range. Caller should delete
|
|
@@ -78,7 +87,8 @@ class CompactionPicker {
|
|
|
78
87
|
const CompactRangeOptions& compact_range_options,
|
|
79
88
|
const InternalKey* begin, const InternalKey* end,
|
|
80
89
|
InternalKey** compaction_end, bool* manual_conflict,
|
|
81
|
-
uint64_t max_file_num_to_ignore, const std::string& trim_ts
|
|
90
|
+
uint64_t max_file_num_to_ignore, const std::string& trim_ts,
|
|
91
|
+
const SequenceNumber earliest_mem_seqno);
|
|
82
92
|
|
|
83
93
|
// The maximum allowed output level. Default value is NumberLevels() - 1.
|
|
84
94
|
virtual int MaxOutputLevel() const { return NumberLevels() - 1; }
|
|
@@ -91,10 +101,18 @@ class CompactionPicker {
|
|
|
91
101
|
// files. If it's not possible to conver an invalid input_files
|
|
92
102
|
// into a valid one by adding more files, the function will return a
|
|
93
103
|
// non-ok status with specific reason.
|
|
104
|
+
//
|
|
105
|
+
// Cases of returning non-ok status include but not limited to:
|
|
106
|
+
// - When output_level == 0 and input_files contains sst files
|
|
107
|
+
// of largest seqno greater than `earliest_mem_seqno`. This will
|
|
108
|
+
// avoid creating a SST files in L0 newer than a unflushed memtable.
|
|
109
|
+
// Such SST file can exist in the first place when it's ingested or
|
|
110
|
+
// resulted from compaction involving files ingested.
|
|
94
111
|
#ifndef ROCKSDB_LITE
|
|
95
|
-
Status SanitizeCompactionInputFiles(
|
|
96
|
-
|
|
97
|
-
|
|
112
|
+
Status SanitizeCompactionInputFiles(
|
|
113
|
+
std::unordered_set<uint64_t>* input_files,
|
|
114
|
+
const ColumnFamilyMetaData& cf_meta, const int output_level,
|
|
115
|
+
const SequenceNumber earliest_mem_seqno) const;
|
|
98
116
|
#endif // ROCKSDB_LITE
|
|
99
117
|
|
|
100
118
|
// Free up the files that participated in a compaction
|
|
@@ -182,7 +200,8 @@ class CompactionPicker {
|
|
|
182
200
|
// Returns true if the key range that `inputs` files cover overlap with the
|
|
183
201
|
// key range of a currently running compaction.
|
|
184
202
|
bool FilesRangeOverlapWithCompaction(
|
|
185
|
-
const std::vector<CompactionInputFiles>& inputs, int level
|
|
203
|
+
const std::vector<CompactionInputFiles>& inputs, int level,
|
|
204
|
+
int penultimate_level) const;
|
|
186
205
|
|
|
187
206
|
bool SetupOtherInputs(const std::string& cf_name,
|
|
188
207
|
const MutableCFOptions& mutable_cf_options,
|
|
@@ -229,7 +248,8 @@ class CompactionPicker {
|
|
|
229
248
|
#ifndef ROCKSDB_LITE
|
|
230
249
|
virtual Status SanitizeCompactionInputFilesForAllLevels(
|
|
231
250
|
std::unordered_set<uint64_t>* input_files,
|
|
232
|
-
const ColumnFamilyMetaData& cf_meta, const int output_level
|
|
251
|
+
const ColumnFamilyMetaData& cf_meta, const int output_level,
|
|
252
|
+
const SequenceNumber earliest_mem_seqno) const;
|
|
233
253
|
#endif // ROCKSDB_LITE
|
|
234
254
|
|
|
235
255
|
// Keeps track of all compactions that are running on Level0.
|
|
@@ -259,23 +279,22 @@ class NullCompactionPicker : public CompactionPicker {
|
|
|
259
279
|
const MutableCFOptions& /*mutable_cf_options*/,
|
|
260
280
|
const MutableDBOptions& /*mutable_db_options*/,
|
|
261
281
|
VersionStorageInfo* /*vstorage*/, LogBuffer* /* log_buffer */,
|
|
262
|
-
SequenceNumber /*
|
|
282
|
+
const SequenceNumber /* earliest_mem_seqno */) override {
|
|
263
283
|
return nullptr;
|
|
264
284
|
}
|
|
265
285
|
|
|
266
286
|
// Always return "nullptr"
|
|
267
|
-
Compaction* CompactRange(
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
const std::string& /*trim_ts*/) override {
|
|
287
|
+
Compaction* CompactRange(
|
|
288
|
+
const std::string& /*cf_name*/,
|
|
289
|
+
const MutableCFOptions& /*mutable_cf_options*/,
|
|
290
|
+
const MutableDBOptions& /*mutable_db_options*/,
|
|
291
|
+
VersionStorageInfo* /*vstorage*/, int /*input_level*/,
|
|
292
|
+
int /*output_level*/,
|
|
293
|
+
const CompactRangeOptions& /*compact_range_options*/,
|
|
294
|
+
const InternalKey* /*begin*/, const InternalKey* /*end*/,
|
|
295
|
+
InternalKey** /*compaction_end*/, bool* /*manual_conflict*/,
|
|
296
|
+
uint64_t /*max_file_num_to_ignore*/, const std::string& /*trim_ts*/,
|
|
297
|
+
const SequenceNumber /* earliest_mem_seqno */) override {
|
|
279
298
|
return nullptr;
|
|
280
299
|
}
|
|
281
300
|
|
|
@@ -302,12 +321,14 @@ class NullCompactionPicker : public CompactionPicker {
|
|
|
302
321
|
// initialized with corresponding input
|
|
303
322
|
// files. Cannot be nullptr.
|
|
304
323
|
//
|
|
324
|
+
// @param earliest_mem_seqno See PickCompaction() API
|
|
305
325
|
// @return true iff compaction was found.
|
|
306
|
-
bool FindIntraL0Compaction(
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
326
|
+
bool FindIntraL0Compaction(const std::vector<FileMetaData*>& level_files,
|
|
327
|
+
size_t min_files_to_compact,
|
|
328
|
+
uint64_t max_compact_bytes_per_del_file,
|
|
329
|
+
uint64_t max_compaction_bytes,
|
|
330
|
+
CompactionInputFiles* comp_inputs,
|
|
331
|
+
const SequenceNumber earliest_mem_seqno);
|
|
311
332
|
|
|
312
333
|
CompressionType GetCompressionType(const VersionStorageInfo* vstorage,
|
|
313
334
|
const MutableCFOptions& mutable_cf_options,
|
|
@@ -139,7 +139,7 @@ Compaction* FIFOCompactionPicker::PickTTLCompaction(
|
|
|
139
139
|
Compaction* FIFOCompactionPicker::PickSizeCompaction(
|
|
140
140
|
const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
|
|
141
141
|
const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
|
|
142
|
-
LogBuffer* log_buffer) {
|
|
142
|
+
LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) {
|
|
143
143
|
// compute the total size and identify the last non-empty level
|
|
144
144
|
int last_level = 0;
|
|
145
145
|
uint64_t total_size = 0;
|
|
@@ -176,7 +176,8 @@ Compaction* FIFOCompactionPicker::PickSizeCompaction(
|
|
|
176
176
|
.level0_file_num_compaction_trigger /* min_files_to_compact */
|
|
177
177
|
,
|
|
178
178
|
max_compact_bytes_per_del_file,
|
|
179
|
-
mutable_cf_options.max_compaction_bytes, &comp_inputs
|
|
179
|
+
mutable_cf_options.max_compaction_bytes, &comp_inputs,
|
|
180
|
+
earliest_mem_seqno)) {
|
|
180
181
|
Compaction* c = new Compaction(
|
|
181
182
|
vstorage, ioptions_, mutable_cf_options, mutable_db_options,
|
|
182
183
|
{comp_inputs}, 0, 16 * 1024 * 1024 /* output file size limit */,
|
|
@@ -275,7 +276,8 @@ Compaction* FIFOCompactionPicker::PickSizeCompaction(
|
|
|
275
276
|
Compaction* FIFOCompactionPicker::PickCompactionToWarm(
|
|
276
277
|
const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
|
|
277
278
|
const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
|
|
278
|
-
LogBuffer* log_buffer) {
|
|
279
|
+
LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) {
|
|
280
|
+
TEST_SYNC_POINT("PickCompactionToWarm");
|
|
279
281
|
if (mutable_cf_options.compaction_options_fifo.age_for_warm == 0) {
|
|
280
282
|
return nullptr;
|
|
281
283
|
}
|
|
@@ -299,6 +301,8 @@ Compaction* FIFOCompactionPicker::PickCompactionToWarm(
|
|
|
299
301
|
cf_name.c_str(), status.ToString().c_str());
|
|
300
302
|
return nullptr;
|
|
301
303
|
}
|
|
304
|
+
TEST_SYNC_POINT_CALLBACK("PickCompactionToWarm::BeforeGetCurrentTime",
|
|
305
|
+
&_current_time);
|
|
302
306
|
const uint64_t current_time = static_cast<uint64_t>(_current_time);
|
|
303
307
|
|
|
304
308
|
if (!level0_compactions_in_progress_.empty()) {
|
|
@@ -345,7 +349,8 @@ Compaction* FIFOCompactionPicker::PickCompactionToWarm(
|
|
|
345
349
|
// for warm tier.
|
|
346
350
|
break;
|
|
347
351
|
}
|
|
348
|
-
if (prev_file != nullptr
|
|
352
|
+
if (prev_file != nullptr &&
|
|
353
|
+
prev_file->fd.largest_seqno <= earliest_mem_seqno) {
|
|
349
354
|
compaction_size += prev_file->fd.GetFileSize();
|
|
350
355
|
if (compaction_size > mutable_cf_options.max_compaction_bytes) {
|
|
351
356
|
break;
|
|
@@ -389,7 +394,7 @@ Compaction* FIFOCompactionPicker::PickCompactionToWarm(
|
|
|
389
394
|
Compaction* FIFOCompactionPicker::PickCompaction(
|
|
390
395
|
const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
|
|
391
396
|
const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
|
|
392
|
-
LogBuffer* log_buffer, SequenceNumber
|
|
397
|
+
LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) {
|
|
393
398
|
Compaction* c = nullptr;
|
|
394
399
|
if (mutable_cf_options.ttl > 0) {
|
|
395
400
|
c = PickTTLCompaction(cf_name, mutable_cf_options, mutable_db_options,
|
|
@@ -397,11 +402,11 @@ Compaction* FIFOCompactionPicker::PickCompaction(
|
|
|
397
402
|
}
|
|
398
403
|
if (c == nullptr) {
|
|
399
404
|
c = PickSizeCompaction(cf_name, mutable_cf_options, mutable_db_options,
|
|
400
|
-
vstorage, log_buffer);
|
|
405
|
+
vstorage, log_buffer, earliest_mem_seqno);
|
|
401
406
|
}
|
|
402
407
|
if (c == nullptr) {
|
|
403
408
|
c = PickCompactionToWarm(cf_name, mutable_cf_options, mutable_db_options,
|
|
404
|
-
vstorage, log_buffer);
|
|
409
|
+
vstorage, log_buffer, earliest_mem_seqno);
|
|
405
410
|
}
|
|
406
411
|
RegisterCompaction(c);
|
|
407
412
|
return c;
|
|
@@ -414,7 +419,8 @@ Compaction* FIFOCompactionPicker::CompactRange(
|
|
|
414
419
|
const CompactRangeOptions& /*compact_range_options*/,
|
|
415
420
|
const InternalKey* /*begin*/, const InternalKey* /*end*/,
|
|
416
421
|
InternalKey** compaction_end, bool* /*manual_conflict*/,
|
|
417
|
-
uint64_t /*max_file_num_to_ignore*/, const std::string& /*trim_ts
|
|
422
|
+
uint64_t /*max_file_num_to_ignore*/, const std::string& /*trim_ts*/,
|
|
423
|
+
const SequenceNumber earliest_mem_seqno) {
|
|
418
424
|
#ifdef NDEBUG
|
|
419
425
|
(void)input_level;
|
|
420
426
|
(void)output_level;
|
|
@@ -423,8 +429,9 @@ Compaction* FIFOCompactionPicker::CompactRange(
|
|
|
423
429
|
assert(output_level == 0);
|
|
424
430
|
*compaction_end = nullptr;
|
|
425
431
|
LogBuffer log_buffer(InfoLogLevel::INFO_LEVEL, ioptions_.logger);
|
|
426
|
-
Compaction* c =
|
|
427
|
-
|
|
432
|
+
Compaction* c =
|
|
433
|
+
PickCompaction(cf_name, mutable_cf_options, mutable_db_options, vstorage,
|
|
434
|
+
&log_buffer, earliest_mem_seqno);
|
|
428
435
|
log_buffer.FlushBufferToLog();
|
|
429
436
|
return c;
|
|
430
437
|
}
|
|
@@ -22,9 +22,12 @@ class FIFOCompactionPicker : public CompactionPicker {
|
|
|
22
22
|
virtual Compaction* PickCompaction(
|
|
23
23
|
const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
|
|
24
24
|
const MutableDBOptions& mutable_db_options, VersionStorageInfo* version,
|
|
25
|
-
LogBuffer* log_buffer,
|
|
26
|
-
SequenceNumber earliest_memtable_seqno = kMaxSequenceNumber) override;
|
|
25
|
+
LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) override;
|
|
27
26
|
|
|
27
|
+
// `earliest_mem_seqno`: see PickCompaction() API for more. In FIFO's
|
|
28
|
+
// implementation of CompactRange(), different from others, we will not return
|
|
29
|
+
// `nullptr` right away when intput files of compaction to L0 has seqnos
|
|
30
|
+
// potentially overlapping with memtable's but exlucde those files.
|
|
28
31
|
virtual Compaction* CompactRange(
|
|
29
32
|
const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
|
|
30
33
|
const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
|
|
@@ -32,7 +35,8 @@ class FIFOCompactionPicker : public CompactionPicker {
|
|
|
32
35
|
const CompactRangeOptions& compact_range_options,
|
|
33
36
|
const InternalKey* begin, const InternalKey* end,
|
|
34
37
|
InternalKey** compaction_end, bool* manual_conflict,
|
|
35
|
-
uint64_t max_file_num_to_ignore, const std::string& trim_ts
|
|
38
|
+
uint64_t max_file_num_to_ignore, const std::string& trim_ts,
|
|
39
|
+
const SequenceNumber earliest_mem_seqno) override;
|
|
36
40
|
|
|
37
41
|
// The maximum allowed output level. Always returns 0.
|
|
38
42
|
virtual int MaxOutputLevel() const override { return 0; }
|
|
@@ -51,13 +55,15 @@ class FIFOCompactionPicker : public CompactionPicker {
|
|
|
51
55
|
const MutableCFOptions& mutable_cf_options,
|
|
52
56
|
const MutableDBOptions& mutable_db_options,
|
|
53
57
|
VersionStorageInfo* version,
|
|
54
|
-
LogBuffer* log_buffer
|
|
58
|
+
LogBuffer* log_buffer,
|
|
59
|
+
SequenceNumber earliest_mem_seqno);
|
|
55
60
|
|
|
56
61
|
Compaction* PickCompactionToWarm(const std::string& cf_name,
|
|
57
62
|
const MutableCFOptions& mutable_cf_options,
|
|
58
63
|
const MutableDBOptions& mutable_db_options,
|
|
59
64
|
VersionStorageInfo* version,
|
|
60
|
-
LogBuffer* log_buffer
|
|
65
|
+
LogBuffer* log_buffer,
|
|
66
|
+
const SequenceNumber earliest_mem_seqno);
|
|
61
67
|
};
|
|
62
68
|
} // namespace ROCKSDB_NAMESPACE
|
|
63
69
|
#endif // !ROCKSDB_LITE
|
|
@@ -50,7 +50,7 @@ class LevelCompactionBuilder {
|
|
|
50
50
|
public:
|
|
51
51
|
LevelCompactionBuilder(const std::string& cf_name,
|
|
52
52
|
VersionStorageInfo* vstorage,
|
|
53
|
-
SequenceNumber earliest_mem_seqno,
|
|
53
|
+
const SequenceNumber earliest_mem_seqno,
|
|
54
54
|
CompactionPicker* compaction_picker,
|
|
55
55
|
LogBuffer* log_buffer,
|
|
56
56
|
const MutableCFOptions& mutable_cf_options,
|
|
@@ -122,7 +122,7 @@ class LevelCompactionBuilder {
|
|
|
122
122
|
|
|
123
123
|
const std::string& cf_name_;
|
|
124
124
|
VersionStorageInfo* vstorage_;
|
|
125
|
-
SequenceNumber earliest_mem_seqno_;
|
|
125
|
+
const SequenceNumber earliest_mem_seqno_;
|
|
126
126
|
CompactionPicker* compaction_picker_;
|
|
127
127
|
LogBuffer* log_buffer_;
|
|
128
128
|
int start_level_ = -1;
|
|
@@ -379,7 +379,9 @@ void LevelCompactionBuilder::SetupOtherFilesWithRoundRobinExpansion() {
|
|
|
379
379
|
if (!compaction_picker_->ExpandInputsToCleanCut(cf_name_, vstorage_,
|
|
380
380
|
&tmp_start_level_inputs) ||
|
|
381
381
|
compaction_picker_->FilesRangeOverlapWithCompaction(
|
|
382
|
-
{tmp_start_level_inputs}, output_level_
|
|
382
|
+
{tmp_start_level_inputs}, output_level_,
|
|
383
|
+
Compaction::EvaluatePenultimateLevel(
|
|
384
|
+
vstorage_, ioptions_, start_level_, output_level_))) {
|
|
383
385
|
// Constraint 1a
|
|
384
386
|
tmp_start_level_inputs.clear();
|
|
385
387
|
return;
|
|
@@ -453,7 +455,9 @@ bool LevelCompactionBuilder::SetupOtherInputsIfNeeded() {
|
|
|
453
455
|
// (2) AddFile ingest a new file into the LSM tree
|
|
454
456
|
// We need to disallow this from happening.
|
|
455
457
|
if (compaction_picker_->FilesRangeOverlapWithCompaction(
|
|
456
|
-
compaction_inputs_, output_level_
|
|
458
|
+
compaction_inputs_, output_level_,
|
|
459
|
+
Compaction::EvaluatePenultimateLevel(
|
|
460
|
+
vstorage_, ioptions_, start_level_, output_level_))) {
|
|
457
461
|
// This compaction output could potentially conflict with the output
|
|
458
462
|
// of a currently running compaction, we cannot run it.
|
|
459
463
|
return false;
|
|
@@ -755,7 +759,9 @@ bool LevelCompactionBuilder::PickFileToCompact() {
|
|
|
755
759
|
if (!compaction_picker_->ExpandInputsToCleanCut(cf_name_, vstorage_,
|
|
756
760
|
&start_level_inputs_) ||
|
|
757
761
|
compaction_picker_->FilesRangeOverlapWithCompaction(
|
|
758
|
-
{start_level_inputs_}, output_level_
|
|
762
|
+
{start_level_inputs_}, output_level_,
|
|
763
|
+
Compaction::EvaluatePenultimateLevel(
|
|
764
|
+
vstorage_, ioptions_, start_level_, output_level_))) {
|
|
759
765
|
// A locked (pending compaction) input-level file was pulled in due to
|
|
760
766
|
// user-key overlap.
|
|
761
767
|
start_level_inputs_.clear();
|
|
@@ -826,7 +832,7 @@ bool LevelCompactionBuilder::PickIntraL0Compaction() {
|
|
|
826
832
|
Compaction* LevelCompactionPicker::PickCompaction(
|
|
827
833
|
const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
|
|
828
834
|
const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
|
|
829
|
-
LogBuffer* log_buffer, SequenceNumber earliest_mem_seqno) {
|
|
835
|
+
LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) {
|
|
830
836
|
LevelCompactionBuilder builder(cf_name, vstorage, earliest_mem_seqno, this,
|
|
831
837
|
log_buffer, mutable_cf_options, ioptions_,
|
|
832
838
|
mutable_db_options);
|
|
@@ -23,8 +23,7 @@ class LevelCompactionPicker : public CompactionPicker {
|
|
|
23
23
|
virtual Compaction* PickCompaction(
|
|
24
24
|
const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
|
|
25
25
|
const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
|
|
26
|
-
LogBuffer* log_buffer,
|
|
27
|
-
SequenceNumber earliest_memtable_seqno = kMaxSequenceNumber) override;
|
|
26
|
+
LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) override;
|
|
28
27
|
|
|
29
28
|
virtual bool NeedsCompaction(
|
|
30
29
|
const VersionStorageInfo* vstorage) const override;
|