@nxtedition/rocksdb 7.1.30 → 7.1.31
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/linux-x64/node.napi.node +0 -0
|
@@ -1573,9 +1573,9 @@ endif()
|
|
|
1573
1573
|
|
|
1574
1574
|
option(WITH_TRACE_TOOLS "build with trace tools" ON)
|
|
1575
1575
|
if(WITH_TRACE_TOOLS)
|
|
1576
|
-
add_executable(
|
|
1576
|
+
add_executable(block_cache_trace_analyzer${ARTIFACT_SUFFIX}
|
|
1577
1577
|
tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc)
|
|
1578
|
-
target_link_libraries(
|
|
1578
|
+
target_link_libraries(block_cache_trace_analyzer${ARTIFACT_SUFFIX}
|
|
1579
1579
|
${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
|
|
1580
1580
|
|
|
1581
1581
|
add_executable(trace_analyzer${ARTIFACT_SUFFIX}
|
|
@@ -202,29 +202,21 @@ class CacheTest : public testing::TestWithParam<std::string> {
|
|
|
202
202
|
cache->Erase(EncodeKey(key));
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
int Lookup(int key) {
|
|
206
|
-
return Lookup(cache_, key);
|
|
207
|
-
}
|
|
205
|
+
int Lookup(int key) { return Lookup(cache_, key); }
|
|
208
206
|
|
|
209
207
|
void Insert(int key, int value, int charge = 1) {
|
|
210
208
|
Insert(cache_, key, value, charge);
|
|
211
209
|
}
|
|
212
210
|
|
|
213
|
-
void Erase(int key) {
|
|
214
|
-
Erase(cache_, key);
|
|
215
|
-
}
|
|
211
|
+
void Erase(int key) { Erase(cache_, key); }
|
|
216
212
|
|
|
217
|
-
int Lookup2(int key) {
|
|
218
|
-
return Lookup(cache2_, key);
|
|
219
|
-
}
|
|
213
|
+
int Lookup2(int key) { return Lookup(cache2_, key); }
|
|
220
214
|
|
|
221
215
|
void Insert2(int key, int value, int charge = 1) {
|
|
222
216
|
Insert(cache2_, key, value, charge);
|
|
223
217
|
}
|
|
224
218
|
|
|
225
|
-
void Erase2(int key) {
|
|
226
|
-
Erase(cache2_, key);
|
|
227
|
-
}
|
|
219
|
+
void Erase2(int key) { Erase(cache2_, key); }
|
|
228
220
|
};
|
|
229
221
|
|
|
230
222
|
CacheTest* CacheTest::current_;
|
|
@@ -418,13 +410,13 @@ TEST_P(CacheTest, HitAndMiss) {
|
|
|
418
410
|
|
|
419
411
|
Insert(100, 101);
|
|
420
412
|
ASSERT_EQ(101, Lookup(100));
|
|
421
|
-
ASSERT_EQ(-1,
|
|
422
|
-
ASSERT_EQ(-1,
|
|
413
|
+
ASSERT_EQ(-1, Lookup(200));
|
|
414
|
+
ASSERT_EQ(-1, Lookup(300));
|
|
423
415
|
|
|
424
416
|
Insert(200, 201);
|
|
425
417
|
ASSERT_EQ(101, Lookup(100));
|
|
426
418
|
ASSERT_EQ(201, Lookup(200));
|
|
427
|
-
ASSERT_EQ(-1,
|
|
419
|
+
ASSERT_EQ(-1, Lookup(300));
|
|
428
420
|
|
|
429
421
|
Insert(100, 102);
|
|
430
422
|
if (GetParam() == kHyperClock) {
|
|
@@ -434,7 +426,7 @@ TEST_P(CacheTest, HitAndMiss) {
|
|
|
434
426
|
ASSERT_EQ(102, Lookup(100));
|
|
435
427
|
}
|
|
436
428
|
ASSERT_EQ(201, Lookup(200));
|
|
437
|
-
ASSERT_EQ(-1,
|
|
429
|
+
ASSERT_EQ(-1, Lookup(300));
|
|
438
430
|
|
|
439
431
|
ASSERT_EQ(1U, deleted_keys_.size());
|
|
440
432
|
ASSERT_EQ(100, deleted_keys_[0]);
|
|
@@ -463,14 +455,14 @@ TEST_P(CacheTest, Erase) {
|
|
|
463
455
|
Insert(100, 101);
|
|
464
456
|
Insert(200, 201);
|
|
465
457
|
Erase(100);
|
|
466
|
-
ASSERT_EQ(-1,
|
|
458
|
+
ASSERT_EQ(-1, Lookup(100));
|
|
467
459
|
ASSERT_EQ(201, Lookup(200));
|
|
468
460
|
ASSERT_EQ(1U, deleted_keys_.size());
|
|
469
461
|
ASSERT_EQ(100, deleted_keys_[0]);
|
|
470
462
|
ASSERT_EQ(101, deleted_values_[0]);
|
|
471
463
|
|
|
472
464
|
Erase(100);
|
|
473
|
-
ASSERT_EQ(-1,
|
|
465
|
+
ASSERT_EQ(-1, Lookup(100));
|
|
474
466
|
ASSERT_EQ(201, Lookup(200));
|
|
475
467
|
ASSERT_EQ(1U, deleted_keys_.size());
|
|
476
468
|
}
|
|
@@ -515,7 +507,7 @@ TEST_P(CacheTest, EvictionPolicy) {
|
|
|
515
507
|
Insert(200, 201);
|
|
516
508
|
// Frequently used entry must be kept around
|
|
517
509
|
for (int i = 0; i < 2 * kCacheSize; i++) {
|
|
518
|
-
Insert(1000+i, 2000+i);
|
|
510
|
+
Insert(1000 + i, 2000 + i);
|
|
519
511
|
ASSERT_EQ(101, Lookup(100));
|
|
520
512
|
}
|
|
521
513
|
ASSERT_EQ(101, Lookup(100));
|
|
@@ -686,7 +678,7 @@ TEST_P(CacheTest, HeavyEntries) {
|
|
|
686
678
|
ASSERT_EQ(1000 + i, r);
|
|
687
679
|
}
|
|
688
680
|
}
|
|
689
|
-
ASSERT_LE(cached_weight, kCacheSize + kCacheSize/10);
|
|
681
|
+
ASSERT_LE(cached_weight, kCacheSize + kCacheSize / 10);
|
|
690
682
|
}
|
|
691
683
|
|
|
692
684
|
TEST_P(CacheTest, NewId) {
|
|
@@ -704,7 +696,7 @@ class Value {
|
|
|
704
696
|
|
|
705
697
|
namespace {
|
|
706
698
|
void deleter(const Slice& /*key*/, void* value) {
|
|
707
|
-
delete static_cast<Value
|
|
699
|
+
delete static_cast<Value*>(value);
|
|
708
700
|
}
|
|
709
701
|
} // namespace
|
|
710
702
|
|
|
@@ -859,7 +851,7 @@ TEST_P(CacheTest, OverCapacity) {
|
|
|
859
851
|
// a LRUCache with n entries and one shard only
|
|
860
852
|
std::shared_ptr<Cache> cache = NewCache(n, 0, false);
|
|
861
853
|
|
|
862
|
-
std::vector<Cache::Handle*> handles(n+1);
|
|
854
|
+
std::vector<Cache::Handle*> handles(n + 1);
|
|
863
855
|
|
|
864
856
|
// Insert n+1 entries, but not releasing.
|
|
865
857
|
for (int i = 0; i < static_cast<int>(n + 1); i++) {
|
|
@@ -919,7 +911,7 @@ void legacy_callback(void* value, size_t charge) {
|
|
|
919
911
|
legacy_callback_state.push_back(
|
|
920
912
|
{DecodeValue(value), static_cast<int>(charge)});
|
|
921
913
|
}
|
|
922
|
-
};
|
|
914
|
+
}; // namespace
|
|
923
915
|
|
|
924
916
|
TEST_P(CacheTest, ApplyToAllCacheEntriesTest) {
|
|
925
917
|
std::vector<std::pair<int, int>> inserted;
|
|
@@ -386,7 +386,7 @@ Status LRUCacheShard::InsertItem(LRUHandle* e, LRUHandle** handle,
|
|
|
386
386
|
last_reference_list.push_back(e);
|
|
387
387
|
} else {
|
|
388
388
|
if (free_handle_on_fail) {
|
|
389
|
-
|
|
389
|
+
free(e);
|
|
390
390
|
*handle = nullptr;
|
|
391
391
|
}
|
|
392
392
|
s = Status::MemoryLimit("Insert failed due to LRU cache being full.");
|
|
@@ -559,8 +559,7 @@ LRUHandle* LRUCacheShard::Lookup(const Slice& key, uint32_t hash,
|
|
|
559
559
|
secondary_cache_->Lookup(key, create_cb, wait, found_dummy_entry,
|
|
560
560
|
is_in_sec_cache);
|
|
561
561
|
if (secondary_handle != nullptr) {
|
|
562
|
-
e =
|
|
563
|
-
new char[sizeof(LRUHandle) - 1 + key.size()]);
|
|
562
|
+
e = static_cast<LRUHandle*>(malloc(sizeof(LRUHandle) - 1 + key.size()));
|
|
564
563
|
|
|
565
564
|
e->m_flags = 0;
|
|
566
565
|
e->im_flags = 0;
|
|
@@ -683,8 +682,8 @@ Status LRUCacheShard::Insert(const Slice& key, uint32_t hash, void* value,
|
|
|
683
682
|
// Allocate the memory here outside of the mutex.
|
|
684
683
|
// If the cache is full, we'll have to release it.
|
|
685
684
|
// It shouldn't happen very often though.
|
|
686
|
-
LRUHandle* e =
|
|
687
|
-
|
|
685
|
+
LRUHandle* e =
|
|
686
|
+
static_cast<LRUHandle*>(malloc(sizeof(LRUHandle) - 1 + key.size()));
|
|
688
687
|
|
|
689
688
|
e->value = value;
|
|
690
689
|
e->m_flags = 0;
|
|
@@ -212,6 +212,7 @@ struct LRUHandle {
|
|
|
212
212
|
|
|
213
213
|
void Free() {
|
|
214
214
|
assert(refs == 0);
|
|
215
|
+
|
|
215
216
|
if (!IsSecondaryCacheCompatible() && info_.deleter) {
|
|
216
217
|
(*info_.deleter)(key(), value);
|
|
217
218
|
} else if (IsSecondaryCacheCompatible()) {
|
|
@@ -226,7 +227,8 @@ struct LRUHandle {
|
|
|
226
227
|
(*info_.helper->del_cb)(key(), value);
|
|
227
228
|
}
|
|
228
229
|
}
|
|
229
|
-
|
|
230
|
+
|
|
231
|
+
free(this);
|
|
230
232
|
}
|
|
231
233
|
|
|
232
234
|
inline size_t CalcuMetaCharge(
|
|
@@ -8,7 +8,7 @@ DB_STRESS_CMD?=./db_stress
|
|
|
8
8
|
include common.mk
|
|
9
9
|
|
|
10
10
|
CRASHTEST_MAKE=$(MAKE) -f crash_test.mk
|
|
11
|
-
CRASHTEST_PY=$(PYTHON) -u tools/db_crashtest.py --stress_cmd=$(DB_STRESS_CMD)
|
|
11
|
+
CRASHTEST_PY=$(PYTHON) -u tools/db_crashtest.py --stress_cmd=$(DB_STRESS_CMD) --cleanup_cmd='$(DB_CLEANUP_CMD)'
|
|
12
12
|
|
|
13
13
|
.PHONY: crash_test crash_test_with_atomic_flush crash_test_with_txn \
|
|
14
14
|
crash_test_with_best_efforts_recovery crash_test_with_ts \
|
|
@@ -22,6 +22,8 @@ constexpr uint32_t kVersion1 = 1;
|
|
|
22
22
|
|
|
23
23
|
using ExpirationRange = std::pair<uint64_t, uint64_t>;
|
|
24
24
|
|
|
25
|
+
// clang-format off
|
|
26
|
+
|
|
25
27
|
// Format of blob log file header (30 bytes):
|
|
26
28
|
//
|
|
27
29
|
// +--------------+---------+---------+-------+-------------+-------------------+
|
|
@@ -35,6 +37,9 @@ using ExpirationRange = std::pair<uint64_t, uint64_t>;
|
|
|
35
37
|
//
|
|
36
38
|
// Expiration range in the header is a rough range based on
|
|
37
39
|
// blob_db_options.ttl_range_secs.
|
|
40
|
+
|
|
41
|
+
// clang-format on
|
|
42
|
+
|
|
38
43
|
struct BlobLogHeader {
|
|
39
44
|
static constexpr size_t kSize = 30;
|
|
40
45
|
|
|
@@ -57,6 +62,8 @@ struct BlobLogHeader {
|
|
|
57
62
|
Status DecodeFrom(Slice slice);
|
|
58
63
|
};
|
|
59
64
|
|
|
65
|
+
// clang-format off
|
|
66
|
+
|
|
60
67
|
// Format of blob log file footer (32 bytes):
|
|
61
68
|
//
|
|
62
69
|
// +--------------+------------+-------------------+------------+
|
|
@@ -69,6 +76,9 @@ struct BlobLogHeader {
|
|
|
69
76
|
//
|
|
70
77
|
// Unlike the same field in file header, expiration range in the footer is the
|
|
71
78
|
// range of smallest and largest expiration of the data in this file.
|
|
79
|
+
|
|
80
|
+
// clang-format on
|
|
81
|
+
|
|
72
82
|
struct BlobLogFooter {
|
|
73
83
|
static constexpr size_t kSize = 32;
|
|
74
84
|
|
|
@@ -81,6 +91,8 @@ struct BlobLogFooter {
|
|
|
81
91
|
Status DecodeFrom(Slice slice);
|
|
82
92
|
};
|
|
83
93
|
|
|
94
|
+
// clang-format off
|
|
95
|
+
|
|
84
96
|
// Blob record format (32 bytes header + key + value):
|
|
85
97
|
//
|
|
86
98
|
// +------------+--------------+------------+------------+----------+---------+-----------+
|
|
@@ -100,6 +112,9 @@ struct BlobLogFooter {
|
|
|
100
112
|
//
|
|
101
113
|
// We could use variable length encoding (Varint64) to save more space, but it
|
|
102
114
|
// make reader more complicated.
|
|
115
|
+
|
|
116
|
+
// clang-format on
|
|
117
|
+
|
|
103
118
|
struct BlobLogRecord {
|
|
104
119
|
// header include fields up to blob CRC
|
|
105
120
|
static constexpr size_t kHeaderSize = 32;
|
|
@@ -779,7 +779,7 @@ TEST_F(DBBlobBasicTest, MultiGetBlobsFromMultipleFiles) {
|
|
|
779
779
|
Options options = GetDefaultOptions();
|
|
780
780
|
|
|
781
781
|
LRUCacheOptions co;
|
|
782
|
-
co.capacity = 2 << 20;
|
|
782
|
+
co.capacity = 2 << 20; // 2MB
|
|
783
783
|
co.num_shard_bits = 2;
|
|
784
784
|
co.metadata_charge_policy = kDontChargeCacheMetadata;
|
|
785
785
|
auto backing_cache = NewLRUCache(co);
|
|
@@ -1211,11 +1211,14 @@ Compaction* ColumnFamilyData::CompactRange(
|
|
|
1211
1211
|
const InternalKey* begin, const InternalKey* end,
|
|
1212
1212
|
InternalKey** compaction_end, bool* conflict,
|
|
1213
1213
|
uint64_t max_file_num_to_ignore, const std::string& trim_ts) {
|
|
1214
|
+
SequenceNumber earliest_mem_seqno =
|
|
1215
|
+
std::min(mem_->GetEarliestSequenceNumber(),
|
|
1216
|
+
imm_.current()->GetEarliestSequenceNumber(false));
|
|
1214
1217
|
auto* result = compaction_picker_->CompactRange(
|
|
1215
1218
|
GetName(), mutable_cf_options, mutable_db_options,
|
|
1216
1219
|
current_->storage_info(), input_level, output_level,
|
|
1217
1220
|
compact_range_options, begin, end, compaction_end, conflict,
|
|
1218
|
-
max_file_num_to_ignore, trim_ts);
|
|
1221
|
+
max_file_num_to_ignore, trim_ts, earliest_mem_seqno);
|
|
1219
1222
|
if (result != nullptr) {
|
|
1220
1223
|
result->SetInputVersion(current_);
|
|
1221
1224
|
}
|
|
@@ -259,7 +259,7 @@ Compaction::Compaction(
|
|
|
259
259
|
? mutable_cf_options()->blob_garbage_collection_age_cutoff
|
|
260
260
|
: _blob_garbage_collection_age_cutoff),
|
|
261
261
|
penultimate_level_(EvaluatePenultimateLevel(
|
|
262
|
-
immutable_options_, start_level_, output_level_)) {
|
|
262
|
+
vstorage, immutable_options_, start_level_, output_level_)) {
|
|
263
263
|
MarkFilesBeingCompacted(true);
|
|
264
264
|
if (is_manual_compaction_) {
|
|
265
265
|
compaction_reason_ = CompactionReason::kManualCompaction;
|
|
@@ -322,13 +322,67 @@ void Compaction::PopulatePenultimateLevelOutputRange() {
|
|
|
322
322
|
return;
|
|
323
323
|
}
|
|
324
324
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
325
|
+
// exclude the last level, the range of all input levels is the safe range
|
|
326
|
+
// of keys that can be moved up.
|
|
327
|
+
int exclude_level = number_levels_ - 1;
|
|
328
|
+
penultimate_output_range_type_ = PenultimateOutputRangeType::kNonLastRange;
|
|
329
|
+
|
|
330
|
+
// For universal compaction, the penultimate_output_range could be extended if
|
|
331
|
+
// all penultimate level files are included in the compaction (which includes
|
|
332
|
+
// the case that the penultimate level is empty).
|
|
333
|
+
if (immutable_options_.compaction_style == kCompactionStyleUniversal) {
|
|
334
|
+
exclude_level = kInvalidLevel;
|
|
335
|
+
std::set<uint64_t> penultimate_inputs;
|
|
336
|
+
for (const auto& input_lvl : inputs_) {
|
|
337
|
+
if (input_lvl.level == penultimate_level_) {
|
|
338
|
+
for (const auto& file : input_lvl.files) {
|
|
339
|
+
penultimate_inputs.emplace(file->fd.GetNumber());
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
auto penultimate_files = input_vstorage_->LevelFiles(penultimate_level_);
|
|
344
|
+
for (const auto& file : penultimate_files) {
|
|
345
|
+
if (penultimate_inputs.find(file->fd.GetNumber()) ==
|
|
346
|
+
penultimate_inputs.end()) {
|
|
347
|
+
exclude_level = number_levels_ - 1;
|
|
348
|
+
penultimate_output_range_type_ = PenultimateOutputRangeType::kFullRange;
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
329
354
|
GetBoundaryKeys(input_vstorage_, inputs_,
|
|
330
355
|
&penultimate_level_smallest_user_key_,
|
|
331
356
|
&penultimate_level_largest_user_key_, exclude_level);
|
|
357
|
+
|
|
358
|
+
// If there's a case that the penultimate level output range is overlapping
|
|
359
|
+
// with the existing files, disable the penultimate level output by setting
|
|
360
|
+
// the range to empty. One example is the range delete could have overlap
|
|
361
|
+
// boundary with the next file. (which is actually a false overlap)
|
|
362
|
+
// TODO: Exclude such false overlap, so it won't disable the penultimate
|
|
363
|
+
// output.
|
|
364
|
+
std::set<uint64_t> penultimate_inputs;
|
|
365
|
+
for (const auto& input_lvl : inputs_) {
|
|
366
|
+
if (input_lvl.level == penultimate_level_) {
|
|
367
|
+
for (const auto& file : input_lvl.files) {
|
|
368
|
+
penultimate_inputs.emplace(file->fd.GetNumber());
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
auto penultimate_files = input_vstorage_->LevelFiles(penultimate_level_);
|
|
374
|
+
for (const auto& file : penultimate_files) {
|
|
375
|
+
if (penultimate_inputs.find(file->fd.GetNumber()) ==
|
|
376
|
+
penultimate_inputs.end() &&
|
|
377
|
+
OverlapPenultimateLevelOutputRange(file->smallest.user_key(),
|
|
378
|
+
file->largest.user_key())) {
|
|
379
|
+
// basically disable the penultimate range output. which should be rare
|
|
380
|
+
// or a false overlap caused by range del
|
|
381
|
+
penultimate_level_smallest_user_key_ = "";
|
|
382
|
+
penultimate_level_largest_user_key_ = "";
|
|
383
|
+
penultimate_output_range_type_ = PenultimateOutputRangeType::kDisabled;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
332
386
|
}
|
|
333
387
|
|
|
334
388
|
Compaction::~Compaction() {
|
|
@@ -368,6 +422,11 @@ bool Compaction::WithinPenultimateLevelOutputRange(const Slice& key) const {
|
|
|
368
422
|
return false;
|
|
369
423
|
}
|
|
370
424
|
|
|
425
|
+
if (penultimate_level_smallest_user_key_.empty() ||
|
|
426
|
+
penultimate_level_largest_user_key_.empty()) {
|
|
427
|
+
return false;
|
|
428
|
+
}
|
|
429
|
+
|
|
371
430
|
const Comparator* ucmp =
|
|
372
431
|
input_vstorage_->InternalComparator()->user_comparator();
|
|
373
432
|
|
|
@@ -749,6 +808,7 @@ uint64_t Compaction::MinInputFileOldestAncesterTime(
|
|
|
749
808
|
}
|
|
750
809
|
|
|
751
810
|
int Compaction::EvaluatePenultimateLevel(
|
|
811
|
+
const VersionStorageInfo* vstorage,
|
|
752
812
|
const ImmutableOptions& immutable_options, const int start_level,
|
|
753
813
|
const int output_level) {
|
|
754
814
|
// TODO: currently per_key_placement feature only support level and universal
|
|
@@ -763,7 +823,19 @@ int Compaction::EvaluatePenultimateLevel(
|
|
|
763
823
|
|
|
764
824
|
int penultimate_level = output_level - 1;
|
|
765
825
|
assert(penultimate_level < immutable_options.num_levels);
|
|
766
|
-
if (penultimate_level <= 0
|
|
826
|
+
if (penultimate_level <= 0) {
|
|
827
|
+
return kInvalidLevel;
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
// If the penultimate level is not within input level -> output level range
|
|
831
|
+
// check if the penultimate output level is empty, if it's empty, it could
|
|
832
|
+
// also be locked for the penultimate output.
|
|
833
|
+
// TODO: ideally, it only needs to check if there's a file within the
|
|
834
|
+
// compaction output key range. For simplicity, it just check if there's any
|
|
835
|
+
// file on the penultimate level.
|
|
836
|
+
if (start_level == immutable_options.num_levels - 1 &&
|
|
837
|
+
(immutable_options.compaction_style != kCompactionStyleUniversal ||
|
|
838
|
+
!vstorage->LevelFiles(penultimate_level).empty())) {
|
|
767
839
|
return kInvalidLevel;
|
|
768
840
|
}
|
|
769
841
|
|
|
@@ -87,6 +87,15 @@ class Compaction {
|
|
|
87
87
|
BlobGarbageCollectionPolicy::kUseDefault,
|
|
88
88
|
double blob_garbage_collection_age_cutoff = -1);
|
|
89
89
|
|
|
90
|
+
// The type of the penultimate level output range
|
|
91
|
+
enum class PenultimateOutputRangeType : int {
|
|
92
|
+
kNotSupported, // it cannot output to the penultimate level
|
|
93
|
+
kFullRange, // any data could be output to the penultimate level
|
|
94
|
+
kNonLastRange, // only the keys within non_last_level compaction inputs can
|
|
95
|
+
// be outputted to the penultimate level
|
|
96
|
+
kDisabled, // no data can be outputted to the penultimate level
|
|
97
|
+
};
|
|
98
|
+
|
|
90
99
|
// No copying allowed
|
|
91
100
|
Compaction(const Compaction&) = delete;
|
|
92
101
|
void operator=(const Compaction&) = delete;
|
|
@@ -310,6 +319,18 @@ class Compaction {
|
|
|
310
319
|
|
|
311
320
|
Slice GetLargestUserKey() const { return largest_user_key_; }
|
|
312
321
|
|
|
322
|
+
Slice GetPenultimateLevelSmallestUserKey() const {
|
|
323
|
+
return penultimate_level_smallest_user_key_;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
Slice GetPenultimateLevelLargestUserKey() const {
|
|
327
|
+
return penultimate_level_largest_user_key_;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
PenultimateOutputRangeType GetPenultimateOutputRangeType() const {
|
|
331
|
+
return penultimate_output_range_type_;
|
|
332
|
+
}
|
|
333
|
+
|
|
313
334
|
// Return true if the compaction supports per_key_placement
|
|
314
335
|
bool SupportsPerKeyPlacement() const;
|
|
315
336
|
|
|
@@ -369,11 +390,18 @@ class Compaction {
|
|
|
369
390
|
}
|
|
370
391
|
|
|
371
392
|
static constexpr int kInvalidLevel = -1;
|
|
393
|
+
|
|
372
394
|
// Evaluate penultimate output level. If the compaction supports
|
|
373
395
|
// per_key_placement feature, it returns the penultimate level number.
|
|
374
396
|
// Otherwise, it's set to kInvalidLevel (-1), which means
|
|
375
397
|
// output_to_penultimate_level is not supported.
|
|
376
|
-
|
|
398
|
+
// Note: even the penultimate level output is supported (PenultimateLevel !=
|
|
399
|
+
// kInvalidLevel), some key range maybe unsafe to be outputted to the
|
|
400
|
+
// penultimate level. The safe key range is populated by
|
|
401
|
+
// `PopulatePenultimateLevelOutputRange()`.
|
|
402
|
+
// Which could potentially disable all penultimate level output.
|
|
403
|
+
static int EvaluatePenultimateLevel(const VersionStorageInfo* vstorage,
|
|
404
|
+
const ImmutableOptions& immutable_options,
|
|
377
405
|
const int start_level,
|
|
378
406
|
const int output_level);
|
|
379
407
|
|
|
@@ -390,11 +418,6 @@ class Compaction {
|
|
|
390
418
|
// populate penultimate level output range, which will be used to determine if
|
|
391
419
|
// a key is safe to output to the penultimate level (details see
|
|
392
420
|
// `Compaction::WithinPenultimateLevelOutputRange()`.
|
|
393
|
-
// TODO: Currently the penultimate level output range is the min/max keys of
|
|
394
|
-
// non-last-level input files. Which is only good if there's no key moved
|
|
395
|
-
// from the last level to the penultimate level. For a more complicated per
|
|
396
|
-
// key placement which may move data from the last level to the penultimate
|
|
397
|
-
// level, it needs extra check.
|
|
398
421
|
void PopulatePenultimateLevelOutputRange();
|
|
399
422
|
|
|
400
423
|
// Get the atomic file boundaries for all files in the compaction. Necessary
|
|
@@ -503,8 +526,11 @@ class Compaction {
|
|
|
503
526
|
|
|
504
527
|
// Key range for penultimate level output
|
|
505
528
|
// includes timestamp if user-defined timestamp is enabled.
|
|
529
|
+
// penultimate_output_range_type_ shows the range type
|
|
506
530
|
Slice penultimate_level_smallest_user_key_;
|
|
507
531
|
Slice penultimate_level_largest_user_key_;
|
|
532
|
+
PenultimateOutputRangeType penultimate_output_range_type_ =
|
|
533
|
+
PenultimateOutputRangeType::kNotSupported;
|
|
508
534
|
};
|
|
509
535
|
|
|
510
536
|
#ifndef NDEBUG
|
|
@@ -825,8 +825,8 @@ void CompactionIterator::NextFromInput() {
|
|
|
825
825
|
cmp_with_history_ts_low_ < 0)) &&
|
|
826
826
|
bottommost_level_) {
|
|
827
827
|
// Handle the case where we have a delete key at the bottom most level
|
|
828
|
-
// We can skip outputting the key iff there are no subsequent puts for
|
|
829
|
-
// key
|
|
828
|
+
// We can skip outputting the key iff there are no subsequent puts for
|
|
829
|
+
// this key
|
|
830
830
|
assert(!compaction_ || compaction_->KeyNotExistsBeyondOutputLevel(
|
|
831
831
|
ikey_.user_key, &level_ptrs_));
|
|
832
832
|
ParsedInternalKey next_ikey;
|
|
@@ -853,8 +853,8 @@ void CompactionIterator::NextFromInput() {
|
|
|
853
853
|
DefinitelyNotInSnapshot(next_ikey.sequence, prev_snapshot))) {
|
|
854
854
|
AdvanceInputIter();
|
|
855
855
|
}
|
|
856
|
-
// If you find you still need to output a row with this key, we need to
|
|
857
|
-
// delete too
|
|
856
|
+
// If you find you still need to output a row with this key, we need to
|
|
857
|
+
// output the delete too
|
|
858
858
|
if (input_.Valid() &&
|
|
859
859
|
(ParseInternalKey(input_.key(), &next_ikey, allow_data_in_errors_)
|
|
860
860
|
.ok()) &&
|
|
@@ -1212,8 +1212,8 @@ inline SequenceNumber CompactionIterator::findEarliestVisibleSnapshot(
|
|
|
1212
1212
|
ROCKS_LOG_FATAL(info_log_,
|
|
1213
1213
|
"No snapshot left in findEarliestVisibleSnapshot");
|
|
1214
1214
|
}
|
|
1215
|
-
auto snapshots_iter =
|
|
1216
|
-
snapshots_->begin(), snapshots_->end(), in);
|
|
1215
|
+
auto snapshots_iter =
|
|
1216
|
+
std::lower_bound(snapshots_->begin(), snapshots_->end(), in);
|
|
1217
1217
|
assert(prev_snapshot != nullptr);
|
|
1218
1218
|
if (snapshots_iter == snapshots_->begin()) {
|
|
1219
1219
|
*prev_snapshot = 0;
|
|
@@ -1228,8 +1228,8 @@ inline SequenceNumber CompactionIterator::findEarliestVisibleSnapshot(
|
|
|
1228
1228
|
}
|
|
1229
1229
|
}
|
|
1230
1230
|
if (snapshot_checker_ == nullptr) {
|
|
1231
|
-
return snapshots_iter != snapshots_->end()
|
|
1232
|
-
|
|
1231
|
+
return snapshots_iter != snapshots_->end() ? *snapshots_iter
|
|
1232
|
+
: kMaxSequenceNumber;
|
|
1233
1233
|
}
|
|
1234
1234
|
bool has_released_snapshot = !released_snapshots_.empty();
|
|
1235
1235
|
for (; snapshots_iter != snapshots_->end(); ++snapshots_iter) {
|
|
@@ -203,7 +203,8 @@ class TestSnapshotChecker : public SnapshotChecker {
|
|
|
203
203
|
public:
|
|
204
204
|
explicit TestSnapshotChecker(
|
|
205
205
|
SequenceNumber last_committed_sequence,
|
|
206
|
-
const std::unordered_map<SequenceNumber, SequenceNumber>& snapshots =
|
|
206
|
+
const std::unordered_map<SequenceNumber, SequenceNumber>& snapshots =
|
|
207
|
+
{{}})
|
|
207
208
|
: last_committed_sequence_(last_committed_sequence),
|
|
208
209
|
snapshots_(snapshots) {}
|
|
209
210
|
|
|
@@ -1038,7 +1039,7 @@ TEST_F(CompactionIteratorWithSnapshotCheckerTest,
|
|
|
1038
1039
|
|
|
1039
1040
|
TEST_F(CompactionIteratorWithSnapshotCheckerTest,
|
|
1040
1041
|
NotRemoveDeletionIfValuePresentToEarlierSnapshot) {
|
|
1041
|
-
AddSnapshot(2,1);
|
|
1042
|
+
AddSnapshot(2, 1);
|
|
1042
1043
|
RunTest({test::KeyStr("a", 4, kTypeDeletion),
|
|
1043
1044
|
test::KeyStr("a", 1, kTypeValue), test::KeyStr("b", 3, kTypeValue)},
|
|
1044
1045
|
{"", "", ""},
|
|
@@ -107,6 +107,23 @@ const char* GetCompactionReasonString(CompactionReason compaction_reason) {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
const char* GetCompactionPenultimateOutputRangeTypeString(
|
|
111
|
+
Compaction::PenultimateOutputRangeType range_type) {
|
|
112
|
+
switch (range_type) {
|
|
113
|
+
case Compaction::PenultimateOutputRangeType::kNotSupported:
|
|
114
|
+
return "NotSupported";
|
|
115
|
+
case Compaction::PenultimateOutputRangeType::kFullRange:
|
|
116
|
+
return "FullRange";
|
|
117
|
+
case Compaction::PenultimateOutputRangeType::kNonLastRange:
|
|
118
|
+
return "NonLastRange";
|
|
119
|
+
case Compaction::PenultimateOutputRangeType::kDisabled:
|
|
120
|
+
return "Disabled";
|
|
121
|
+
default:
|
|
122
|
+
assert(false);
|
|
123
|
+
return "Invalid";
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
110
127
|
CompactionJob::CompactionJob(
|
|
111
128
|
int job_id, Compaction* compaction, const ImmutableDBOptions& db_options,
|
|
112
129
|
const MutableDBOptions& mutable_db_options, const FileOptions& file_options,
|
|
@@ -697,11 +714,12 @@ Status CompactionJob::Run() {
|
|
|
697
714
|
break;
|
|
698
715
|
}
|
|
699
716
|
// Verify that the table is usable
|
|
700
|
-
// We set for_compaction to false and don't
|
|
701
|
-
// here because this is a special case
|
|
702
|
-
// No matter whether
|
|
703
|
-
// we will regard this
|
|
704
|
-
// to cache it here for
|
|
717
|
+
// We set for_compaction to false and don't
|
|
718
|
+
// OptimizeForCompactionTableRead here because this is a special case
|
|
719
|
+
// after we finish the table building No matter whether
|
|
720
|
+
// use_direct_io_for_flush_and_compaction is true, we will regard this
|
|
721
|
+
// verification as user reads since the goal is to cache it here for
|
|
722
|
+
// further user reads
|
|
705
723
|
ReadOptions read_options;
|
|
706
724
|
InternalIterator* iter = cfd->table_cache()->NewIterator(
|
|
707
725
|
read_options, file_options_, cfd->internal_comparator(),
|
|
@@ -747,8 +765,8 @@ Status CompactionJob::Run() {
|
|
|
747
765
|
}
|
|
748
766
|
};
|
|
749
767
|
for (size_t i = 1; i < compact_->sub_compact_states.size(); i++) {
|
|
750
|
-
thread_pool.emplace_back(
|
|
751
|
-
|
|
768
|
+
thread_pool.emplace_back(
|
|
769
|
+
verify_table, std::ref(compact_->sub_compact_states[i].status));
|
|
752
770
|
}
|
|
753
771
|
verify_table(compact_->sub_compact_states[0].status);
|
|
754
772
|
for (auto& thread : thread_pool) {
|
|
@@ -1261,6 +1279,10 @@ void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) {
|
|
|
1261
1279
|
};
|
|
1262
1280
|
|
|
1263
1281
|
Status status;
|
|
1282
|
+
TEST_SYNC_POINT_CALLBACK(
|
|
1283
|
+
"CompactionJob::ProcessKeyValueCompaction()::Processing",
|
|
1284
|
+
reinterpret_cast<void*>(
|
|
1285
|
+
const_cast<Compaction*>(sub_compact->compaction)));
|
|
1264
1286
|
while (status.ok() && !cfd->IsDropped() && c_iter->Valid()) {
|
|
1265
1287
|
// Invariant: c_iter.status() is guaranteed to be OK if c_iter->Valid()
|
|
1266
1288
|
// returns true.
|
|
@@ -1976,7 +1998,7 @@ void CompactionJob::LogCompaction() {
|
|
|
1976
1998
|
compaction->InputLevelSummary(&inputs_summary), compaction->score());
|
|
1977
1999
|
char scratch[2345];
|
|
1978
2000
|
compaction->Summary(scratch, sizeof(scratch));
|
|
1979
|
-
ROCKS_LOG_INFO(db_options_.info_log, "[%s] Compaction start summary: %s\n",
|
|
2001
|
+
ROCKS_LOG_INFO(db_options_.info_log, "[%s]: Compaction start summary: %s\n",
|
|
1980
2002
|
cfd->GetName().c_str(), scratch);
|
|
1981
2003
|
// build event logger report
|
|
1982
2004
|
auto stream = event_logger_->Log();
|
|
@@ -1997,6 +2019,23 @@ void CompactionJob::LogCompaction() {
|
|
|
1997
2019
|
<< (existing_snapshots_.empty()
|
|
1998
2020
|
? int64_t{-1} // Use -1 for "none"
|
|
1999
2021
|
: static_cast<int64_t>(existing_snapshots_[0]));
|
|
2022
|
+
if (compaction->SupportsPerKeyPlacement()) {
|
|
2023
|
+
stream << "preclude_last_level_min_seqno"
|
|
2024
|
+
<< preclude_last_level_min_seqno_;
|
|
2025
|
+
stream << "penultimate_output_level" << compaction->GetPenultimateLevel();
|
|
2026
|
+
stream << "penultimate_output_range"
|
|
2027
|
+
<< GetCompactionPenultimateOutputRangeTypeString(
|
|
2028
|
+
compaction->GetPenultimateOutputRangeType());
|
|
2029
|
+
|
|
2030
|
+
if (compaction->GetPenultimateOutputRangeType() ==
|
|
2031
|
+
Compaction::PenultimateOutputRangeType::kDisabled) {
|
|
2032
|
+
ROCKS_LOG_WARN(
|
|
2033
|
+
db_options_.info_log,
|
|
2034
|
+
"[%s] [JOB %d] Penultimate level output is disabled, likely "
|
|
2035
|
+
"because of the range conflict in the penultimate level",
|
|
2036
|
+
cfd->GetName().c_str(), job_id_);
|
|
2037
|
+
}
|
|
2038
|
+
}
|
|
2000
2039
|
}
|
|
2001
2040
|
}
|
|
2002
2041
|
|
|
@@ -261,12 +261,12 @@ class CompactionJob {
|
|
|
261
261
|
Status OpenCompactionOutputFile(SubcompactionState* sub_compact,
|
|
262
262
|
CompactionOutputs& outputs);
|
|
263
263
|
void UpdateCompactionJobStats(
|
|
264
|
-
|
|
264
|
+
const InternalStats::CompactionStats& stats) const;
|
|
265
265
|
void RecordDroppedKeys(const CompactionIterationStats& c_iter_stats,
|
|
266
266
|
CompactionJobStats* compaction_job_stats = nullptr);
|
|
267
267
|
|
|
268
|
-
void UpdateCompactionInputStatsHelper(
|
|
269
|
-
|
|
268
|
+
void UpdateCompactionInputStatsHelper(int* num_files, uint64_t* bytes_read,
|
|
269
|
+
int input_level);
|
|
270
270
|
|
|
271
271
|
void NotifyOnSubcompactionBegin(SubcompactionState* sub_compact);
|
|
272
272
|
|