@nxtedition/rocksdb 15.4.1 → 15.5.0
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/binding.cc +24 -15
- package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
- package/deps/rocksdb/rocksdb/BUCK +42 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
- package/deps/rocksdb/rocksdb/Makefile +59 -32
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
- package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
- package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
- package/deps/rocksdb/rocksdb/db/builder.h +7 -0
- package/deps/rocksdb/rocksdb/db/c.cc +373 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
- package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
- package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
- package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
- package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
- package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
- package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
- package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
- package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
- package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
- package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
- package/deps/rocksdb/rocksdb/env/env.cc +1 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
- package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
- package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
- package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
- package/deps/rocksdb/rocksdb/folly.mk +22 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
- package/deps/rocksdb/rocksdb/options/options.cc +5 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
- package/deps/rocksdb/rocksdb/port/lang.h +4 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
- package/deps/rocksdb/rocksdb/src.mk +12 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
- package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
- package/deps/rocksdb/rocksdb/table/format.cc +27 -15
- package/deps/rocksdb/rocksdb/table/format.h +41 -15
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
- package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
- package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
- package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
- package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
- package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
- package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
- package/deps/rocksdb/rocksdb/util/coding.h +14 -27
- package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
- package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
- package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
- package/deps/rocksdb/rocksdb/util/math.h +3 -1
- package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
- package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
- package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
- package/deps/rocksdb/rocksdb/util/status.cc +3 -1
- package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
- package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
- package/deps/rocksdb/rocksdb.gyp +7 -0
- package/iterator.js +2 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
|
@@ -955,6 +955,10 @@ Status DBImpl::CompactRange(const CompactRangeOptions& options,
|
|
|
955
955
|
return Status::Incomplete(Status::SubCode::kManualCompactionPaused);
|
|
956
956
|
}
|
|
957
957
|
|
|
958
|
+
if (compaction_aborted_.load(std::memory_order_acquire) > 0) {
|
|
959
|
+
return Status::Incomplete(Status::SubCode::kCompactionAborted);
|
|
960
|
+
}
|
|
961
|
+
|
|
958
962
|
if (options.canceled && options.canceled->load(std::memory_order_acquire)) {
|
|
959
963
|
return Status::Incomplete(Status::SubCode::kManualCompactionPaused);
|
|
960
964
|
}
|
|
@@ -1449,7 +1453,8 @@ Status DBImpl::PerformTrivialMove(Compaction& c, LogBuffer* log_buffer,
|
|
|
1449
1453
|
f->file_creation_time, f->epoch_number,
|
|
1450
1454
|
f->file_checksum, f->file_checksum_func_name,
|
|
1451
1455
|
f->unique_id, f->compensated_range_deletion_size,
|
|
1452
|
-
f->tail_size, f->user_defined_timestamps_persisted
|
|
1456
|
+
f->tail_size, f->user_defined_timestamps_persisted,
|
|
1457
|
+
f->min_timestamp, f->max_timestamp);
|
|
1453
1458
|
moved_bytes += static_cast<size_t>(c.input(l, i)->fd.GetFileSize());
|
|
1454
1459
|
ROCKS_LOG_BUFFER(
|
|
1455
1460
|
log_buffer, "[%s] Moved #%" PRIu64 " to level-%d %" PRIu64 " bytes\n",
|
|
@@ -1486,6 +1491,11 @@ Status DBImpl::CompactFilesImpl(
|
|
|
1486
1491
|
return Status::ShutdownInProgress();
|
|
1487
1492
|
}
|
|
1488
1493
|
|
|
1494
|
+
// triggered by AbortAllCompactions
|
|
1495
|
+
if (compaction_aborted_.load(std::memory_order_acquire) > 0) {
|
|
1496
|
+
return Status::Incomplete(Status::SubCode::kCompactionAborted);
|
|
1497
|
+
}
|
|
1498
|
+
|
|
1489
1499
|
// triggered by DisableManualCompactions or by user-set canceled flag in
|
|
1490
1500
|
// CompactionOptions
|
|
1491
1501
|
if (manual_compaction_paused_.load(std::memory_order_acquire) > 0 ||
|
|
@@ -1636,17 +1646,17 @@ Status DBImpl::CompactFilesImpl(
|
|
|
1636
1646
|
c->mutable_cf_options().paranoid_file_checks,
|
|
1637
1647
|
c->mutable_cf_options().report_bg_io_stats, dbname_,
|
|
1638
1648
|
&compaction_job_stats, Env::Priority::USER, io_tracer_,
|
|
1639
|
-
kManualCompactionCanceledFalse_,
|
|
1640
|
-
c->column_family_data()->GetFullHistoryTsLow(),
|
|
1641
|
-
&blob_callback_, &bg_compaction_scheduled_,
|
|
1649
|
+
kManualCompactionCanceledFalse_, compaction_aborted_, db_id_,
|
|
1650
|
+
db_session_id_, c->column_family_data()->GetFullHistoryTsLow(),
|
|
1651
|
+
c->trim_ts(), &blob_callback_, &bg_compaction_scheduled_,
|
|
1642
1652
|
&bg_bottom_compaction_scheduled_);
|
|
1643
1653
|
|
|
1644
1654
|
// Creating a compaction influences the compaction score because the score
|
|
1645
1655
|
// takes running compactions into account (by skipping files that are already
|
|
1646
1656
|
// being compacted). Since we just changed compaction score, we recalculate it
|
|
1647
1657
|
// here.
|
|
1648
|
-
version->storage_info()->ComputeCompactionScore(
|
|
1649
|
-
|
|
1658
|
+
version->storage_info()->ComputeCompactionScore(
|
|
1659
|
+
cfd->ioptions(), c->mutable_cf_options(), cfd->GetFullHistoryTsLow());
|
|
1650
1660
|
|
|
1651
1661
|
compaction_job.Prepare(std::nullopt /*subcompact to be computed*/);
|
|
1652
1662
|
|
|
@@ -1709,6 +1719,11 @@ Status DBImpl::CompactFilesImpl(
|
|
|
1709
1719
|
"[%s] [JOB %d] Stopping manual compaction",
|
|
1710
1720
|
c->column_family_data()->GetName().c_str(),
|
|
1711
1721
|
job_context->job_id);
|
|
1722
|
+
} else if (status.IsCompactionAborted()) {
|
|
1723
|
+
// Don't report aborted compaction as error
|
|
1724
|
+
ROCKS_LOG_INFO(
|
|
1725
|
+
immutable_db_options_.info_log, "[%s] [JOB %d] Compaction aborted",
|
|
1726
|
+
c->column_family_data()->GetName().c_str(), job_context->job_id);
|
|
1712
1727
|
} else {
|
|
1713
1728
|
ROCKS_LOG_WARN(immutable_db_options_.info_log,
|
|
1714
1729
|
"[%s] [JOB %d] Compaction error: %s",
|
|
@@ -1971,7 +1986,8 @@ Status DBImpl::ReFitLevel(ColumnFamilyData* cfd, int level, int target_level) {
|
|
|
1971
1986
|
f->oldest_ancester_time, f->file_creation_time, f->epoch_number,
|
|
1972
1987
|
f->file_checksum, f->file_checksum_func_name, f->unique_id,
|
|
1973
1988
|
f->compensated_range_deletion_size, f->tail_size,
|
|
1974
|
-
f->user_defined_timestamps_persisted
|
|
1989
|
+
f->user_defined_timestamps_persisted, f->min_timestamp,
|
|
1990
|
+
f->max_timestamp);
|
|
1975
1991
|
}
|
|
1976
1992
|
ROCKS_LOG_DEBUG(immutable_db_options_.info_log,
|
|
1977
1993
|
"[%s] Apply version edit:\n%s", cfd->GetName().c_str(),
|
|
@@ -2009,10 +2025,6 @@ int DBImpl::NumberLevels(ColumnFamilyHandle* column_family) {
|
|
|
2009
2025
|
return cfh->cfd()->NumberLevels();
|
|
2010
2026
|
}
|
|
2011
2027
|
|
|
2012
|
-
int DBImpl::MaxMemCompactionLevel(ColumnFamilyHandle* /*column_family*/) {
|
|
2013
|
-
return 0;
|
|
2014
|
-
}
|
|
2015
|
-
|
|
2016
2028
|
int DBImpl::Level0StopWriteTrigger(ColumnFamilyHandle* column_family) {
|
|
2017
2029
|
auto cfh = static_cast_with_check<ColumnFamilyHandleImpl>(column_family);
|
|
2018
2030
|
InstrumentedMutexLock l(&mutex_);
|
|
@@ -2168,6 +2180,17 @@ Status DBImpl::RunManualCompaction(
|
|
|
2168
2180
|
return manual.status;
|
|
2169
2181
|
}
|
|
2170
2182
|
|
|
2183
|
+
if (compaction_aborted_.load(std::memory_order_acquire) > 0) {
|
|
2184
|
+
// All compactions are being aborted. Return immediately.
|
|
2185
|
+
int counter = compaction_aborted_.load(std::memory_order_acquire);
|
|
2186
|
+
ROCKS_LOG_INFO(
|
|
2187
|
+
immutable_db_options_.info_log,
|
|
2188
|
+
"RunManualCompaction: Aborting due to compaction_aborted_=%d", counter);
|
|
2189
|
+
manual.status = Status::Incomplete(Status::SubCode::kCompactionAborted);
|
|
2190
|
+
manual.done = true;
|
|
2191
|
+
return manual.status;
|
|
2192
|
+
}
|
|
2193
|
+
|
|
2171
2194
|
// When a manual compaction arrives, temporarily disable scheduling of
|
|
2172
2195
|
// non-manual compactions and wait until the number of scheduled compaction
|
|
2173
2196
|
// jobs drops to zero. This used to be needed to ensure that this manual
|
|
@@ -2192,6 +2215,13 @@ Status DBImpl::RunManualCompaction(
|
|
|
2192
2215
|
// and `CompactRangeOptions::canceled` might not work well together.
|
|
2193
2216
|
while (bg_bottom_compaction_scheduled_ > 0 ||
|
|
2194
2217
|
bg_compaction_scheduled_ > 0) {
|
|
2218
|
+
if (compaction_aborted_.load(std::memory_order_acquire) > 0) {
|
|
2219
|
+
// Pretend the error came from compaction so the below cleanup/error
|
|
2220
|
+
// handling code can process it.
|
|
2221
|
+
manual.done = true;
|
|
2222
|
+
manual.status = Status::Incomplete(Status::SubCode::kCompactionAborted);
|
|
2223
|
+
break;
|
|
2224
|
+
}
|
|
2195
2225
|
if (manual_compaction_paused_ > 0 || manual.canceled == true) {
|
|
2196
2226
|
// Pretend the error came from compaction so the below cleanup/error
|
|
2197
2227
|
// handling code can process it.
|
|
@@ -2310,7 +2340,12 @@ Status DBImpl::RunManualCompaction(
|
|
|
2310
2340
|
if (!scheduled) {
|
|
2311
2341
|
// There is nothing scheduled to wait on, so any cancellation can end the
|
|
2312
2342
|
// manual now.
|
|
2313
|
-
if (
|
|
2343
|
+
if (compaction_aborted_.load(std::memory_order_acquire) > 0) {
|
|
2344
|
+
// Stop waiting since it was canceled. Pretend the error came from
|
|
2345
|
+
// compaction so the below cleanup/error handling code can process it.
|
|
2346
|
+
manual.done = true;
|
|
2347
|
+
manual.status = Status::Incomplete(Status::SubCode::kCompactionAborted);
|
|
2348
|
+
} else if (manual_compaction_paused_ > 0 || manual.canceled == true) {
|
|
2314
2349
|
// Stop waiting since it was canceled. Pretend the error came from
|
|
2315
2350
|
// compaction so the below cleanup/error handling code can process it.
|
|
2316
2351
|
manual.done = true;
|
|
@@ -2889,16 +2924,8 @@ Status DBImpl::WaitForFlushMemTables(
|
|
|
2889
2924
|
|
|
2890
2925
|
Status DBImpl::EnableAutoCompaction(
|
|
2891
2926
|
const std::vector<ColumnFamilyHandle*>& column_family_handles) {
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
Status status =
|
|
2895
|
-
this->SetOptions(cf_ptr, {{"disable_auto_compactions", "false"}});
|
|
2896
|
-
if (!status.ok()) {
|
|
2897
|
-
s = status;
|
|
2898
|
-
}
|
|
2899
|
-
}
|
|
2900
|
-
|
|
2901
|
-
return s;
|
|
2927
|
+
return SetOptions(column_family_handles,
|
|
2928
|
+
{{"disable_auto_compactions", "false"}});
|
|
2902
2929
|
}
|
|
2903
2930
|
|
|
2904
2931
|
// NOTE: Calling DisableManualCompaction() may overwrite the
|
|
@@ -2936,6 +2963,61 @@ void DBImpl::EnableManualCompaction() {
|
|
|
2936
2963
|
manual_compaction_paused_.fetch_sub(1, std::memory_order_release);
|
|
2937
2964
|
}
|
|
2938
2965
|
|
|
2966
|
+
void DBImpl::AbortAllCompactions() {
|
|
2967
|
+
InstrumentedMutexLock l(&mutex_);
|
|
2968
|
+
|
|
2969
|
+
// Increment the abort counter to signal all compactions to abort
|
|
2970
|
+
compaction_aborted_.fetch_add(1, std::memory_order_release);
|
|
2971
|
+
|
|
2972
|
+
TEST_SYNC_POINT("DBImpl::AbortAllCompactions:FlagSet");
|
|
2973
|
+
|
|
2974
|
+
// Mark all manual compactions as canceled
|
|
2975
|
+
for (const auto& manual_compaction : manual_compaction_dequeue_) {
|
|
2976
|
+
manual_compaction->canceled = true;
|
|
2977
|
+
}
|
|
2978
|
+
|
|
2979
|
+
// Wake up any waiting compaction threads to check the abort signal
|
|
2980
|
+
bg_cv_.SignalAll();
|
|
2981
|
+
|
|
2982
|
+
// Wait for all running compactions (both manual and automatic) to finish
|
|
2983
|
+
// or abort before returning.
|
|
2984
|
+
// Note: bg_cv_.Wait() releases the mutex while waiting, so other threads
|
|
2985
|
+
// can make progress and signal when compactions complete.
|
|
2986
|
+
while (bg_bottom_compaction_scheduled_ > 0 || bg_compaction_scheduled_ > 0 ||
|
|
2987
|
+
HasPendingManualCompaction()) {
|
|
2988
|
+
bg_cv_.Wait();
|
|
2989
|
+
}
|
|
2990
|
+
}
|
|
2991
|
+
|
|
2992
|
+
void DBImpl::ResumeAllCompactions() {
|
|
2993
|
+
InstrumentedMutexLock l(&mutex_);
|
|
2994
|
+
int before = compaction_aborted_.load(std::memory_order_acquire);
|
|
2995
|
+
|
|
2996
|
+
// Guard against calling Resume without prior Abort
|
|
2997
|
+
if (before <= 0) {
|
|
2998
|
+
ROCKS_LOG_WARN(immutable_db_options_.info_log,
|
|
2999
|
+
"ResumeAllCompactions called without prior "
|
|
3000
|
+
"AbortAllCompactions (counter=%d)",
|
|
3001
|
+
before);
|
|
3002
|
+
return;
|
|
3003
|
+
}
|
|
3004
|
+
|
|
3005
|
+
// Decrement the abort counter
|
|
3006
|
+
compaction_aborted_.fetch_sub(1, std::memory_order_release);
|
|
3007
|
+
|
|
3008
|
+
// As the operation is executed under db mutex, we could just use before value
|
|
3009
|
+
// to calculate the current value.
|
|
3010
|
+
int current = before - 1;
|
|
3011
|
+
ROCKS_LOG_INFO(immutable_db_options_.info_log,
|
|
3012
|
+
"ResumeAllCompactions: counter %d -> %d", before, current);
|
|
3013
|
+
|
|
3014
|
+
// If this is the last resume call (abort counter back to 0), schedule
|
|
3015
|
+
// compactions that may have been waiting
|
|
3016
|
+
if (current == 0) {
|
|
3017
|
+
MaybeScheduleFlushOrCompaction();
|
|
3018
|
+
}
|
|
3019
|
+
}
|
|
3020
|
+
|
|
2939
3021
|
void DBImpl::MaybeScheduleFlushOrCompaction() {
|
|
2940
3022
|
mutex_.AssertHeld();
|
|
2941
3023
|
TEST_SYNC_POINT("DBImpl::MaybeScheduleFlushOrCompaction:Start");
|
|
@@ -3000,6 +3082,9 @@ void DBImpl::MaybeScheduleFlushOrCompaction() {
|
|
|
3000
3082
|
if (bg_compaction_paused_ > 0) {
|
|
3001
3083
|
// we paused the background compaction
|
|
3002
3084
|
return;
|
|
3085
|
+
} else if (compaction_aborted_.load(std::memory_order_acquire) > 0) {
|
|
3086
|
+
// we are aborting all compactions
|
|
3087
|
+
return;
|
|
3003
3088
|
} else if (error_handler_.IsBGWorkStopped()) {
|
|
3004
3089
|
// Compaction is not part of the recovery sequence from a hard error. We
|
|
3005
3090
|
// might get here because recovery might do a flush and install a new
|
|
@@ -3060,6 +3145,93 @@ DBImpl::BGJobLimits DBImpl::GetBGJobLimits(int max_background_flushes,
|
|
|
3060
3145
|
return res;
|
|
3061
3146
|
}
|
|
3062
3147
|
|
|
3148
|
+
BackgroundJobPressure DBImpl::CaptureBackgroundJobPressure() const {
|
|
3149
|
+
mutex_.AssertHeld();
|
|
3150
|
+
|
|
3151
|
+
BackgroundJobPressure snapshot;
|
|
3152
|
+
|
|
3153
|
+
// Compaction: LOW + BOTTOM combined (matches RocksDB's scheduling check)
|
|
3154
|
+
snapshot.compaction_scheduled =
|
|
3155
|
+
bg_compaction_scheduled_ + bg_bottom_compaction_scheduled_;
|
|
3156
|
+
snapshot.compaction_running = num_running_compactions_;
|
|
3157
|
+
|
|
3158
|
+
// Per-priority breakdown for pool-specific expansion
|
|
3159
|
+
assert(num_running_compactions_ >= num_running_bottom_compactions_);
|
|
3160
|
+
snapshot.compaction_low_scheduled = bg_compaction_scheduled_;
|
|
3161
|
+
snapshot.compaction_low_running =
|
|
3162
|
+
std::max(0, num_running_compactions_ - num_running_bottom_compactions_);
|
|
3163
|
+
snapshot.compaction_bottom_scheduled = bg_bottom_compaction_scheduled_;
|
|
3164
|
+
snapshot.compaction_bottom_running = num_running_bottom_compactions_;
|
|
3165
|
+
|
|
3166
|
+
// Flush
|
|
3167
|
+
snapshot.flush_scheduled = bg_flush_scheduled_;
|
|
3168
|
+
snapshot.flush_running = num_running_flushes_;
|
|
3169
|
+
|
|
3170
|
+
snapshot.compaction_speedup_active =
|
|
3171
|
+
write_controller_.NeedSpeedupCompaction();
|
|
3172
|
+
|
|
3173
|
+
// Compute write_stall_proximity_pct: max across all CFs.
|
|
3174
|
+
// Uses the same inputs as RecalculateWriteStallConditions() in
|
|
3175
|
+
// column_family.cc:
|
|
3176
|
+
// - l0_delay_trigger_count(): sorted run count used for write stall
|
|
3177
|
+
// decisions. Equals NumLevelFiles(0) for level compaction; for universal
|
|
3178
|
+
// compaction, also counts non-empty levels from L1+ as sorted runs.
|
|
3179
|
+
// - estimated_compaction_needed_bytes(): pending compaction bytes.
|
|
3180
|
+
// Prefers slowdown/soft triggers (gradual); falls back to stop/hard triggers.
|
|
3181
|
+
// level0_slowdown_writes_trigger is sanitized to always be > 0;
|
|
3182
|
+
// soft_pending_compaction_bytes_limit can be 0 (disabled).
|
|
3183
|
+
int max_proximity = 0;
|
|
3184
|
+
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
|
3185
|
+
if (cfd->IsDropped() || !cfd->initialized()) {
|
|
3186
|
+
continue;
|
|
3187
|
+
}
|
|
3188
|
+
const auto* vstorage = cfd->current()->storage_info();
|
|
3189
|
+
const auto& mutable_cf_options = cfd->GetCurrentMutableCFOptions();
|
|
3190
|
+
|
|
3191
|
+
int l0_proximity = 0;
|
|
3192
|
+
int l0_trigger = mutable_cf_options.level0_slowdown_writes_trigger > 0
|
|
3193
|
+
? mutable_cf_options.level0_slowdown_writes_trigger
|
|
3194
|
+
: mutable_cf_options.level0_stop_writes_trigger;
|
|
3195
|
+
if (l0_trigger > 0) {
|
|
3196
|
+
l0_proximity = static_cast<int>(
|
|
3197
|
+
100.0 * vstorage->l0_delay_trigger_count() / l0_trigger);
|
|
3198
|
+
}
|
|
3199
|
+
|
|
3200
|
+
int bytes_proximity = 0;
|
|
3201
|
+
uint64_t bytes_limit =
|
|
3202
|
+
mutable_cf_options.soft_pending_compaction_bytes_limit > 0
|
|
3203
|
+
? mutable_cf_options.soft_pending_compaction_bytes_limit
|
|
3204
|
+
: mutable_cf_options.hard_pending_compaction_bytes_limit;
|
|
3205
|
+
if (bytes_limit > 0) {
|
|
3206
|
+
bytes_proximity = static_cast<int>(
|
|
3207
|
+
100.0 *
|
|
3208
|
+
static_cast<double>(vstorage->estimated_compaction_needed_bytes()) /
|
|
3209
|
+
static_cast<double>(bytes_limit));
|
|
3210
|
+
}
|
|
3211
|
+
|
|
3212
|
+
max_proximity =
|
|
3213
|
+
std::max(max_proximity, std::max(l0_proximity, bytes_proximity));
|
|
3214
|
+
}
|
|
3215
|
+
snapshot.write_stall_proximity_pct = max_proximity;
|
|
3216
|
+
|
|
3217
|
+
return snapshot;
|
|
3218
|
+
}
|
|
3219
|
+
|
|
3220
|
+
void DBImpl::NotifyOnBackgroundJobPressureChanged() {
|
|
3221
|
+
mutex_.AssertHeld();
|
|
3222
|
+
if (immutable_db_options_.listeners.empty()) {
|
|
3223
|
+
return;
|
|
3224
|
+
}
|
|
3225
|
+
BackgroundJobPressure pressure = CaptureBackgroundJobPressure();
|
|
3226
|
+
bg_pressure_callback_in_progress_++;
|
|
3227
|
+
mutex_.Unlock();
|
|
3228
|
+
for (const auto& listener : immutable_db_options_.listeners) {
|
|
3229
|
+
listener->OnBackgroundJobPressureChanged(this, pressure);
|
|
3230
|
+
}
|
|
3231
|
+
mutex_.Lock();
|
|
3232
|
+
bg_pressure_callback_in_progress_--;
|
|
3233
|
+
}
|
|
3234
|
+
|
|
3063
3235
|
void DBImpl::AddToCompactionQueue(ColumnFamilyData* cfd) {
|
|
3064
3236
|
assert(!cfd->queued_for_compaction());
|
|
3065
3237
|
cfd->Ref();
|
|
@@ -3495,6 +3667,9 @@ void DBImpl::BackgroundCallFlush(Env::Priority thread_pri) {
|
|
|
3495
3667
|
bg_flush_scheduled_--;
|
|
3496
3668
|
// See if there's more work to be done
|
|
3497
3669
|
MaybeScheduleFlushOrCompaction();
|
|
3670
|
+
|
|
3671
|
+
NotifyOnBackgroundJobPressureChanged();
|
|
3672
|
+
|
|
3498
3673
|
atomic_flush_install_cv_.SignalAll();
|
|
3499
3674
|
bg_cv_.SignalAll();
|
|
3500
3675
|
// IMPORTANT: there should be no code after calling SignalAll. This call may
|
|
@@ -3519,6 +3694,9 @@ void DBImpl::BackgroundCallCompaction(PrepickedCompaction* prepicked_compaction,
|
|
|
3519
3694
|
InstrumentedMutexLock l(&mutex_);
|
|
3520
3695
|
|
|
3521
3696
|
num_running_compactions_++;
|
|
3697
|
+
if (bg_thread_pri == Env::Priority::BOTTOM) {
|
|
3698
|
+
num_running_bottom_compactions_++;
|
|
3699
|
+
}
|
|
3522
3700
|
|
|
3523
3701
|
std::unique_ptr<std::list<uint64_t>::iterator>
|
|
3524
3702
|
pending_outputs_inserted_elem(new std::list<uint64_t>::iterator(
|
|
@@ -3537,7 +3715,8 @@ void DBImpl::BackgroundCallCompaction(PrepickedCompaction* prepicked_compaction,
|
|
|
3537
3715
|
10000); // prevent hot loop
|
|
3538
3716
|
mutex_.Lock();
|
|
3539
3717
|
} else if (!s.ok() && !s.IsShutdownInProgress() &&
|
|
3540
|
-
!s.IsManualCompactionPaused() && !s.IsColumnFamilyDropped()
|
|
3718
|
+
!s.IsManualCompactionPaused() && !s.IsColumnFamilyDropped() &&
|
|
3719
|
+
!s.IsCompactionAborted()) {
|
|
3541
3720
|
// Wait a little bit before retrying background compaction in
|
|
3542
3721
|
// case this is an environmental problem and we do not want to
|
|
3543
3722
|
// chew up resources for failed compactions for the duration of
|
|
@@ -3569,6 +3748,7 @@ void DBImpl::BackgroundCallCompaction(PrepickedCompaction* prepicked_compaction,
|
|
|
3569
3748
|
// case of a failure). Thus, we force full scan in FindObsoleteFiles()
|
|
3570
3749
|
FindObsoleteFiles(&job_context, !s.ok() && !s.IsShutdownInProgress() &&
|
|
3571
3750
|
!s.IsManualCompactionPaused() &&
|
|
3751
|
+
!s.IsCompactionAborted() &&
|
|
3572
3752
|
!s.IsColumnFamilyDropped() &&
|
|
3573
3753
|
!s.IsBusy());
|
|
3574
3754
|
TEST_SYNC_POINT("DBImpl::BackgroundCallCompaction:FoundObsoleteFiles");
|
|
@@ -3599,11 +3779,15 @@ void DBImpl::BackgroundCallCompaction(PrepickedCompaction* prepicked_compaction,
|
|
|
3599
3779
|
} else {
|
|
3600
3780
|
assert(bg_thread_pri == Env::Priority::BOTTOM);
|
|
3601
3781
|
bg_bottom_compaction_scheduled_--;
|
|
3782
|
+
assert(num_running_bottom_compactions_ > 0);
|
|
3783
|
+
num_running_bottom_compactions_--;
|
|
3602
3784
|
}
|
|
3603
3785
|
|
|
3604
3786
|
// See if there's more work to be done
|
|
3605
3787
|
MaybeScheduleFlushOrCompaction();
|
|
3606
3788
|
|
|
3789
|
+
NotifyOnBackgroundJobPressureChanged();
|
|
3790
|
+
|
|
3607
3791
|
if (prepicked_compaction != nullptr &&
|
|
3608
3792
|
prepicked_compaction->task_token != nullptr) {
|
|
3609
3793
|
// Releasing task tokens affects (and asserts on) the DB state, so
|
|
@@ -3673,6 +3857,8 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3673
3857
|
if (!error_handler_.IsBGWorkStopped()) {
|
|
3674
3858
|
if (shutting_down_.load(std::memory_order_acquire)) {
|
|
3675
3859
|
status = Status::ShutdownInProgress();
|
|
3860
|
+
} else if (compaction_aborted_.load(std::memory_order_acquire) > 0) {
|
|
3861
|
+
status = Status::Incomplete(Status::SubCode::kCompactionAborted);
|
|
3676
3862
|
} else if (is_manual &&
|
|
3677
3863
|
manual_compaction->canceled.load(std::memory_order_acquire)) {
|
|
3678
3864
|
status = Status::Incomplete(Status::SubCode::kManualCompactionPaused);
|
|
@@ -3839,7 +4025,8 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3839
4025
|
->current()
|
|
3840
4026
|
->storage_info()
|
|
3841
4027
|
->ComputeCompactionScore(c->immutable_options(),
|
|
3842
|
-
c->mutable_cf_options()
|
|
4028
|
+
c->mutable_cf_options(),
|
|
4029
|
+
cfd->GetFullHistoryTsLow());
|
|
3843
4030
|
EnqueuePendingCompaction(cfd);
|
|
3844
4031
|
|
|
3845
4032
|
c.reset();
|
|
@@ -4096,7 +4283,9 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
4096
4283
|
in_file->unique_id,
|
|
4097
4284
|
in_file->compensated_range_deletion_size,
|
|
4098
4285
|
in_file->tail_size,
|
|
4099
|
-
in_file->user_defined_timestamps_persisted
|
|
4286
|
+
in_file->user_defined_timestamps_persisted,
|
|
4287
|
+
in_file->min_timestamp,
|
|
4288
|
+
in_file->max_timestamp};
|
|
4100
4289
|
|
|
4101
4290
|
out_files.push_back(std::move(out_file_metadata));
|
|
4102
4291
|
}
|
|
@@ -4286,8 +4475,9 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
4286
4475
|
&compaction_job_stats, thread_pri, io_tracer_,
|
|
4287
4476
|
is_manual ? manual_compaction->canceled
|
|
4288
4477
|
: kManualCompactionCanceledFalse_,
|
|
4289
|
-
db_id_, db_session_id_,
|
|
4290
|
-
c->
|
|
4478
|
+
compaction_aborted_, db_id_, db_session_id_,
|
|
4479
|
+
c->column_family_data()->GetFullHistoryTsLow(), c->trim_ts(),
|
|
4480
|
+
&blob_callback_, &bg_compaction_scheduled_,
|
|
4291
4481
|
&bg_bottom_compaction_scheduled_);
|
|
4292
4482
|
compaction_job.Prepare(std::nullopt /*subcompact to be computed*/);
|
|
4293
4483
|
|
|
@@ -4370,7 +4560,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
4370
4560
|
}
|
|
4371
4561
|
|
|
4372
4562
|
if (status.ok() || status.IsCompactionTooLarge() ||
|
|
4373
|
-
status.IsManualCompactionPaused()) {
|
|
4563
|
+
status.IsManualCompactionPaused() || status.IsCompactionAborted()) {
|
|
4374
4564
|
// Done
|
|
4375
4565
|
} else if (status.IsColumnFamilyDropped() || status.IsShutdownInProgress()) {
|
|
4376
4566
|
// Ignore compaction errors found during shutting down
|
|
@@ -4401,7 +4591,8 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
4401
4591
|
->current()
|
|
4402
4592
|
->storage_info()
|
|
4403
4593
|
->ComputeCompactionScore(c->immutable_options(),
|
|
4404
|
-
c->mutable_cf_options()
|
|
4594
|
+
c->mutable_cf_options(),
|
|
4595
|
+
cfd->GetFullHistoryTsLow());
|
|
4405
4596
|
EnqueuePendingCompaction(cfd);
|
|
4406
4597
|
}
|
|
4407
4598
|
}
|
|
@@ -4507,7 +4698,7 @@ Compaction* DBImpl::CreateIntendedCompactionForwardedToBottomPriorityPool(
|
|
|
4507
4698
|
nullptr /* snapshot_checker */, c->compaction_reason());
|
|
4508
4699
|
|
|
4509
4700
|
cfd->compaction_picker()->RegisterCompaction(intended_compaction);
|
|
4510
|
-
vstorage->ComputeCompactionScore(io, mo);
|
|
4701
|
+
vstorage->ComputeCompactionScore(io, mo, cfd->GetFullHistoryTsLow());
|
|
4511
4702
|
intended_compaction->FinalizeInputInfo(cfd->current());
|
|
4512
4703
|
|
|
4513
4704
|
return intended_compaction;
|
|
@@ -4632,6 +4823,7 @@ void DBImpl::BuildCompactionJobInfo(
|
|
|
4632
4823
|
compaction_job_info->cf_id = cfd->GetID();
|
|
4633
4824
|
compaction_job_info->cf_name = cfd->GetName();
|
|
4634
4825
|
compaction_job_info->status = st;
|
|
4826
|
+
compaction_job_info->aborted = st.IsCompactionAborted();
|
|
4635
4827
|
compaction_job_info->thread_id = env_->GetThreadID();
|
|
4636
4828
|
compaction_job_info->job_id = job_id;
|
|
4637
4829
|
compaction_job_info->base_input_level = c->start_level();
|
|
@@ -4879,7 +5071,8 @@ void DBImpl::ResetBottomPriCompactionIntent(ColumnFamilyData* cfd,
|
|
|
4879
5071
|
std::unique_ptr<Compaction>& c) {
|
|
4880
5072
|
c->ReleaseCompactionFiles(Status::OK());
|
|
4881
5073
|
cfd->current()->storage_info()->ComputeCompactionScore(
|
|
4882
|
-
c->immutable_options(), c->mutable_cf_options()
|
|
5074
|
+
c->immutable_options(), c->mutable_cf_options(),
|
|
5075
|
+
cfd->GetFullHistoryTsLow());
|
|
4883
5076
|
c.reset();
|
|
4884
5077
|
}
|
|
4885
5078
|
|
|
@@ -282,6 +282,11 @@ int DBImpl::TEST_BGFlushesAllowed() const {
|
|
|
282
282
|
return GetBGJobLimits().max_flushes;
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
+
int DBImpl::TEST_NumRunningBottomCompactions() const {
|
|
286
|
+
mutex_.AssertHeld();
|
|
287
|
+
return num_running_bottom_compactions_;
|
|
288
|
+
}
|
|
289
|
+
|
|
285
290
|
SequenceNumber DBImpl::TEST_GetLastVisibleSequence() const {
|
|
286
291
|
if (last_seq_same_as_publish_seq_) {
|
|
287
292
|
return versions_->LastSequence();
|
|
@@ -46,7 +46,8 @@ Status DBImpl::SuggestCompactRange(ColumnFamilyHandle* column_family,
|
|
|
46
46
|
// Since we have some more files to compact, we should also recompute
|
|
47
47
|
// compaction score
|
|
48
48
|
vstorage->ComputeCompactionScore(cfd->ioptions(),
|
|
49
|
-
cfd->GetLatestMutableCFOptions()
|
|
49
|
+
cfd->GetLatestMutableCFOptions(),
|
|
50
|
+
cfd->GetFullHistoryTsLow());
|
|
50
51
|
EnqueuePendingCompaction(cfd);
|
|
51
52
|
MaybeScheduleFlushOrCompaction();
|
|
52
53
|
}
|
|
@@ -143,7 +144,8 @@ Status DBImpl::PromoteL0(ColumnFamilyHandle* column_family, int target_level) {
|
|
|
143
144
|
f->file_creation_time, f->epoch_number, f->file_checksum,
|
|
144
145
|
f->file_checksum_func_name, f->unique_id,
|
|
145
146
|
f->compensated_range_deletion_size, f->tail_size,
|
|
146
|
-
f->user_defined_timestamps_persisted
|
|
147
|
+
f->user_defined_timestamps_persisted, f->min_timestamp,
|
|
148
|
+
f->max_timestamp);
|
|
147
149
|
}
|
|
148
150
|
|
|
149
151
|
status = versions_->LogAndApply(cfd, read_options, write_options, &edit,
|
|
@@ -446,7 +446,7 @@ void DBImpl::PurgeObsoleteFiles(JobContext& state, bool schedule_only) {
|
|
|
446
446
|
state.manifest_delete_files.size());
|
|
447
447
|
// We may ignore the dbname when generating the file names.
|
|
448
448
|
for (auto& file : state.sst_delete_files) {
|
|
449
|
-
auto* handle = file.metadata->
|
|
449
|
+
auto* handle = file.metadata->fd.pinned_reader.GetCacheHandle();
|
|
450
450
|
if (file.only_delete_metadata) {
|
|
451
451
|
if (handle) {
|
|
452
452
|
// Simply release handle of file that is not being deleted
|