@nxtedition/rocksdb 8.2.0 → 8.2.2
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 +3 -3
- package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -52
- package/deps/rocksdb/rocksdb/Makefile +10 -5
- package/deps/rocksdb/rocksdb/TARGETS +8 -345
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +92 -0
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +32 -32
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +12 -9
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +6 -43
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +3 -13
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +8 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +21 -47
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -8
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +1 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +44 -7
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +13 -14
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +17 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +40 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +41 -42
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +5 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +5 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +7 -6
- package/deps/rocksdb/rocksdb/db/builder.h +2 -2
- package/deps/rocksdb/rocksdb/db/c.cc +76 -5
- package/deps/rocksdb/rocksdb/db/c_test.c +141 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +32 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +5 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +21 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +77 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +4 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +55 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +142 -56
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +21 -20
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +260 -220
- package/deps/rocksdb/rocksdb/db/db_clip_test.cc +142 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +333 -27
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +7 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +189 -27
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +23 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +134 -90
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +124 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +10 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +7 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +15 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +11 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +54 -3
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +42 -0
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +116 -1
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +9 -8
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +142 -63
- package/deps/rocksdb/rocksdb/db/db_test.cc +28 -7
- package/deps/rocksdb/rocksdb/db/db_test2.cc +71 -131
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +18 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.h +6 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +25 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +88 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +67 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +5 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +86 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +15 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/flush_job.cc +21 -14
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -7
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +31 -8
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +21 -19
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +42 -12
- package/deps/rocksdb/rocksdb/db/internal_stats.h +1 -0
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +92 -6
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/log_format.h +8 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -51
- package/deps/rocksdb/rocksdb/db/log_reader.h +16 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +125 -4
- package/deps/rocksdb/rocksdb/db/log_writer.cc +32 -2
- package/deps/rocksdb/rocksdb/db/log_writer.h +16 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +17 -46
- package/deps/rocksdb/rocksdb/db/memtable.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +8 -4
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/repair.cc +38 -11
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/table_cache.cc +68 -51
- package/deps/rocksdb/rocksdb/db/table_cache.h +20 -10
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/version_builder.cc +9 -5
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +140 -120
- package/deps/rocksdb/rocksdb/db/version_edit.cc +14 -0
- package/deps/rocksdb/rocksdb/db/version_edit.h +12 -4
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +21 -13
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +26 -16
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +9 -9
- package/deps/rocksdb/rocksdb/db/version_set.cc +292 -96
- package/deps/rocksdb/rocksdb/db/version_set.h +53 -28
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +62 -22
- package/deps/rocksdb/rocksdb/db/version_util.h +5 -4
- package/deps/rocksdb/rocksdb/db/write_batch.cc +3 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +119 -27
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +123 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +7 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +13 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +43 -33
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +29 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +85 -50
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +96 -54
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.cc +122 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +206 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +9 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +9 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +322 -92
- package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -8
- package/deps/rocksdb/rocksdb/env/env_test.cc +31 -0
- package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +14 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +5 -1
- package/deps/rocksdb/rocksdb/file/file_util.cc +3 -3
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +89 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +22 -7
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -2
- package/deps/rocksdb/rocksdb/file/readahead_raf.cc +1 -1
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +154 -74
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +27 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +107 -28
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +137 -152
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +61 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +30 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +33 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +87 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +9 -2
- package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -0
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +78 -42
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +14 -9
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +4 -9
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +19 -11
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +211 -555
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +36 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +17 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +10 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +19 -18
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +10 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +35 -2
- package/deps/rocksdb/rocksdb/options/cf_options.h +5 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/options.cc +12 -53
- package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -0
- package/deps/rocksdb/rocksdb/options/options_parser.cc +11 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +32 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +89 -5
- package/deps/rocksdb/rocksdb/port/lang.h +27 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +67 -24
- package/deps/rocksdb/rocksdb/src.mk +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +195 -35
- package/deps/rocksdb/rocksdb/table/block_based/block.h +197 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +71 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +4 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +43 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +36 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +266 -166
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +44 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +63 -56
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +10 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +14 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +918 -2
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -9
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -8
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +18 -23
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +8 -8
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -32
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +7 -8
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +46 -53
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +12 -12
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +26 -23
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +3 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +7 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +5 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +4 -2
- package/deps/rocksdb/rocksdb/table/format.cc +4 -4
- package/deps/rocksdb/rocksdb/table/format.h +1 -1
- package/deps/rocksdb/rocksdb/table/get_context.cc +1 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +33 -22
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +4 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +4 -2
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +1 -1
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +18 -10
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +10 -7
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +4 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +11 -0
- package/deps/rocksdb/rocksdb/table/table_builder.h +14 -5
- package/deps/rocksdb/rocksdb/table/table_properties.cc +2 -0
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -3
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +291 -34
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +5 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +33 -17
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +2 -2
- package/deps/rocksdb/rocksdb/util/compression.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +24 -83
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +7 -9
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +4 -1
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +9 -10
- package/deps/rocksdb/rocksdb/util/math.h +12 -7
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +16 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +46 -2
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +6 -6
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +12 -7
- package/deps/rocksdb/rocksdb/util/stop_watch.h +31 -13
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
- package/deps/rocksdb/rocksdb/util/udt_util.h +77 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +11 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +34 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +15 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +29 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +6 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +10 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +6 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +5 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- /package/deps/rocksdb/rocksdb/memory/{memory_allocator.h → memory_allocator_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/monitoring/{statistics.h → statistics_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/table/block_based/{flush_block_policy.h → flush_block_policy_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/util/{rate_limiter.h → rate_limiter_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/utilities/agg_merge/{agg_merge.h → agg_merge_impl.h} +0 -0
|
@@ -229,7 +229,9 @@ Status DBImpl::FlushMemTableToOutputFile(
|
|
|
229
229
|
log_io_s = SyncClosedLogs(job_context, &synced_wals);
|
|
230
230
|
mutex_.Lock();
|
|
231
231
|
if (log_io_s.ok() && synced_wals.IsWalAddition()) {
|
|
232
|
-
|
|
232
|
+
const ReadOptions read_options(Env::IOActivity::kFlush);
|
|
233
|
+
log_io_s =
|
|
234
|
+
status_to_io_status(ApplyWALToManifest(read_options, &synced_wals));
|
|
233
235
|
TEST_SYNC_POINT_CALLBACK("DBImpl::FlushMemTableToOutputFile:CommitWal:1",
|
|
234
236
|
nullptr);
|
|
235
237
|
}
|
|
@@ -492,7 +494,9 @@ Status DBImpl::AtomicFlushMemTablesToOutputFiles(
|
|
|
492
494
|
log_io_s = SyncClosedLogs(job_context, &synced_wals);
|
|
493
495
|
mutex_.Lock();
|
|
494
496
|
if (log_io_s.ok() && synced_wals.IsWalAddition()) {
|
|
495
|
-
|
|
497
|
+
const ReadOptions read_options(Env::IOActivity::kFlush);
|
|
498
|
+
log_io_s =
|
|
499
|
+
status_to_io_status(ApplyWALToManifest(read_options, &synced_wals));
|
|
496
500
|
}
|
|
497
501
|
|
|
498
502
|
if (!log_io_s.ok() && !log_io_s.IsShutdownInProgress() &&
|
|
@@ -956,6 +960,9 @@ Status DBImpl::IncreaseFullHistoryTsLowImpl(ColumnFamilyData* cfd,
|
|
|
956
960
|
VersionEdit edit;
|
|
957
961
|
edit.SetColumnFamily(cfd->GetID());
|
|
958
962
|
edit.SetFullHistoryTsLow(ts_low);
|
|
963
|
+
|
|
964
|
+
// TODO: plumb Env::IOActivity
|
|
965
|
+
const ReadOptions read_options;
|
|
959
966
|
TEST_SYNC_POINT_CALLBACK("DBImpl::IncreaseFullHistoryTsLowImpl:BeforeEdit",
|
|
960
967
|
&edit);
|
|
961
968
|
|
|
@@ -969,7 +976,8 @@ Status DBImpl::IncreaseFullHistoryTsLowImpl(ColumnFamilyData* cfd,
|
|
|
969
976
|
}
|
|
970
977
|
|
|
971
978
|
Status s = versions_->LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
|
|
972
|
-
&edit, &mutex_,
|
|
979
|
+
read_options, &edit, &mutex_,
|
|
980
|
+
directories_.GetDbDir());
|
|
973
981
|
if (!s.ok()) {
|
|
974
982
|
return s;
|
|
975
983
|
}
|
|
@@ -1054,8 +1062,8 @@ Status DBImpl::CompactRangeInternal(const CompactRangeOptions& options,
|
|
|
1054
1062
|
}
|
|
1055
1063
|
s = RunManualCompaction(cfd, ColumnFamilyData::kCompactAllLevels,
|
|
1056
1064
|
final_output_level, options, begin, end, exclusive,
|
|
1057
|
-
false
|
|
1058
|
-
trim_ts);
|
|
1065
|
+
false /* disable_trivial_move */,
|
|
1066
|
+
std::numeric_limits<uint64_t>::max(), trim_ts);
|
|
1059
1067
|
} else {
|
|
1060
1068
|
int first_overlapped_level = kInvalidLevel;
|
|
1061
1069
|
int max_overlapped_level = kInvalidLevel;
|
|
@@ -1080,6 +1088,7 @@ Status DBImpl::CompactRangeInternal(const CompactRangeOptions& options,
|
|
|
1080
1088
|
|
|
1081
1089
|
ReadOptions ro;
|
|
1082
1090
|
ro.total_order_seek = true;
|
|
1091
|
+
ro.io_activity = Env::IOActivity::kCompaction;
|
|
1083
1092
|
bool overlap;
|
|
1084
1093
|
for (int level = 0;
|
|
1085
1094
|
level < current_version->storage_info()->num_non_empty_levels();
|
|
@@ -1142,74 +1151,83 @@ Status DBImpl::CompactRangeInternal(const CompactRangeOptions& options,
|
|
|
1142
1151
|
CleanupSuperVersion(super_version);
|
|
1143
1152
|
}
|
|
1144
1153
|
if (s.ok() && first_overlapped_level != kInvalidLevel) {
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
//
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
} else if (options.bottommost_level_compaction ==
|
|
1167
|
-
BottommostLevelCompaction::kIfHaveCompactionFilter &&
|
|
1168
|
-
cfd->ioptions()->compaction_filter == nullptr &&
|
|
1169
|
-
cfd->ioptions()->compaction_filter_factory == nullptr) {
|
|
1170
|
-
// Skip bottommost level compaction since we don't have a compaction
|
|
1171
|
-
// filter
|
|
1172
|
-
continue;
|
|
1173
|
-
}
|
|
1174
|
-
output_level = level;
|
|
1175
|
-
// update max_file_num_to_ignore only for bottom level compaction
|
|
1176
|
-
// because data in newly compacted files in middle levels may still
|
|
1177
|
-
// need to be pushed down
|
|
1178
|
-
max_file_num_to_ignore = next_file_number;
|
|
1179
|
-
} else {
|
|
1154
|
+
if (cfd->ioptions()->compaction_style == kCompactionStyleUniversal ||
|
|
1155
|
+
cfd->ioptions()->compaction_style == kCompactionStyleFIFO) {
|
|
1156
|
+
assert(first_overlapped_level == 0);
|
|
1157
|
+
s = RunManualCompaction(
|
|
1158
|
+
cfd, first_overlapped_level, first_overlapped_level, options, begin,
|
|
1159
|
+
end, exclusive, true /* disallow_trivial_move */,
|
|
1160
|
+
std::numeric_limits<uint64_t>::max() /* max_file_num_to_ignore */,
|
|
1161
|
+
trim_ts);
|
|
1162
|
+
final_output_level = max_overlapped_level;
|
|
1163
|
+
} else {
|
|
1164
|
+
assert(cfd->ioptions()->compaction_style == kCompactionStyleLevel);
|
|
1165
|
+
uint64_t next_file_number = versions_->current_next_file_number();
|
|
1166
|
+
// Start compaction from `first_overlapped_level`, one level down at a
|
|
1167
|
+
// time, until output level >= max_overlapped_level.
|
|
1168
|
+
// When max_overlapped_level == 0, we will still compact from L0 -> L1
|
|
1169
|
+
// (or LBase), and followed by a bottommost level intra-level compaction
|
|
1170
|
+
// at L1 (or LBase), if applicable.
|
|
1171
|
+
int level = first_overlapped_level;
|
|
1172
|
+
final_output_level = level;
|
|
1173
|
+
int output_level = 0, base_level = 0;
|
|
1174
|
+
while (level < max_overlapped_level || level == 0) {
|
|
1180
1175
|
output_level = level + 1;
|
|
1181
|
-
if (cfd->ioptions()->
|
|
1182
|
-
cfd->ioptions()->level_compaction_dynamic_level_bytes &&
|
|
1176
|
+
if (cfd->ioptions()->level_compaction_dynamic_level_bytes &&
|
|
1183
1177
|
level == 0) {
|
|
1184
1178
|
output_level = ColumnFamilyData::kCompactToBaseLevel;
|
|
1185
1179
|
}
|
|
1186
|
-
//
|
|
1187
|
-
//
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1180
|
+
// Use max value for `max_file_num_to_ignore` to always compact
|
|
1181
|
+
// files down.
|
|
1182
|
+
s = RunManualCompaction(
|
|
1183
|
+
cfd, level, output_level, options, begin, end, exclusive,
|
|
1184
|
+
!trim_ts.empty() /* disallow_trivial_move */,
|
|
1185
|
+
std::numeric_limits<uint64_t>::max() /* max_file_num_to_ignore */,
|
|
1186
|
+
trim_ts,
|
|
1187
|
+
output_level == ColumnFamilyData::kCompactToBaseLevel
|
|
1188
|
+
? &base_level
|
|
1189
|
+
: nullptr);
|
|
1190
|
+
if (!s.ok()) {
|
|
1191
|
+
break;
|
|
1194
1192
|
}
|
|
1193
|
+
if (output_level == ColumnFamilyData::kCompactToBaseLevel) {
|
|
1194
|
+
assert(base_level > 0);
|
|
1195
|
+
level = base_level;
|
|
1196
|
+
} else {
|
|
1197
|
+
++level;
|
|
1198
|
+
}
|
|
1199
|
+
final_output_level = level;
|
|
1200
|
+
TEST_SYNC_POINT("DBImpl::RunManualCompaction()::1");
|
|
1201
|
+
TEST_SYNC_POINT("DBImpl::RunManualCompaction()::2");
|
|
1195
1202
|
}
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1203
|
+
if (s.ok()) {
|
|
1204
|
+
assert(final_output_level > 0);
|
|
1205
|
+
// bottommost level intra-level compaction
|
|
1206
|
+
// TODO(cbi): this preserves earlier behavior where if
|
|
1207
|
+
// max_overlapped_level = 0 and bottommost_level_compaction is
|
|
1208
|
+
// kIfHaveCompactionFilter, we only do a L0 -> LBase compaction
|
|
1209
|
+
// and do not do intra-LBase compaction even when user configures
|
|
1210
|
+
// compaction filter. We may want to still do a LBase -> LBase
|
|
1211
|
+
// compaction in case there is some file in LBase that did not go
|
|
1212
|
+
// through L0 -> LBase compaction, and hence did not go through
|
|
1213
|
+
// compaction filter.
|
|
1214
|
+
if ((options.bottommost_level_compaction ==
|
|
1215
|
+
BottommostLevelCompaction::kIfHaveCompactionFilter &&
|
|
1216
|
+
max_overlapped_level != 0 &&
|
|
1217
|
+
(cfd->ioptions()->compaction_filter != nullptr ||
|
|
1218
|
+
cfd->ioptions()->compaction_filter_factory != nullptr)) ||
|
|
1219
|
+
options.bottommost_level_compaction ==
|
|
1220
|
+
BottommostLevelCompaction::kForceOptimized ||
|
|
1221
|
+
options.bottommost_level_compaction ==
|
|
1222
|
+
BottommostLevelCompaction::kForce) {
|
|
1223
|
+
// Use `next_file_number` as `max_file_num_to_ignore` to avoid
|
|
1224
|
+
// rewriting newly compacted files when it is kForceOptimized.
|
|
1225
|
+
s = RunManualCompaction(
|
|
1226
|
+
cfd, final_output_level, final_output_level, options, begin,
|
|
1227
|
+
end, exclusive, !trim_ts.empty() /* disallow_trivial_move */,
|
|
1228
|
+
next_file_number /* max_file_num_to_ignore */, trim_ts);
|
|
1229
|
+
}
|
|
1210
1230
|
}
|
|
1211
|
-
TEST_SYNC_POINT("DBImpl::RunManualCompaction()::1");
|
|
1212
|
-
TEST_SYNC_POINT("DBImpl::RunManualCompaction()::2");
|
|
1213
1231
|
}
|
|
1214
1232
|
}
|
|
1215
1233
|
}
|
|
@@ -1630,6 +1648,8 @@ Status DBImpl::ReFitLevel(ColumnFamilyData* cfd, int level, int target_level) {
|
|
|
1630
1648
|
return Status::InvalidArgument("Target level exceeds number of levels");
|
|
1631
1649
|
}
|
|
1632
1650
|
|
|
1651
|
+
const ReadOptions read_options(Env::IOActivity::kCompaction);
|
|
1652
|
+
|
|
1633
1653
|
SuperVersionContext sv_context(/* create_superversion */ true);
|
|
1634
1654
|
|
|
1635
1655
|
InstrumentedMutexLock guard_lock(&mutex_);
|
|
@@ -1738,14 +1758,15 @@ Status DBImpl::ReFitLevel(ColumnFamilyData* cfd, int level, int target_level) {
|
|
|
1738
1758
|
f->marked_for_compaction, f->temperature, f->oldest_blob_file_number,
|
|
1739
1759
|
f->oldest_ancester_time, f->file_creation_time, f->epoch_number,
|
|
1740
1760
|
f->file_checksum, f->file_checksum_func_name, f->unique_id,
|
|
1741
|
-
f->compensated_range_deletion_size);
|
|
1761
|
+
f->compensated_range_deletion_size, f->tail_size);
|
|
1742
1762
|
}
|
|
1743
1763
|
ROCKS_LOG_DEBUG(immutable_db_options_.info_log,
|
|
1744
1764
|
"[%s] Apply version edit:\n%s", cfd->GetName().c_str(),
|
|
1745
1765
|
edit.DebugString().data());
|
|
1746
1766
|
|
|
1747
|
-
Status status =
|
|
1748
|
-
|
|
1767
|
+
Status status =
|
|
1768
|
+
versions_->LogAndApply(cfd, mutable_cf_options, read_options, &edit,
|
|
1769
|
+
&mutex_, directories_.GetDbDir());
|
|
1749
1770
|
|
|
1750
1771
|
cfd->compaction_picker()->UnregisterCompaction(c.get());
|
|
1751
1772
|
c.reset();
|
|
@@ -1853,7 +1874,8 @@ Status DBImpl::RunManualCompaction(
|
|
|
1853
1874
|
ColumnFamilyData* cfd, int input_level, int output_level,
|
|
1854
1875
|
const CompactRangeOptions& compact_range_options, const Slice* begin,
|
|
1855
1876
|
const Slice* end, bool exclusive, bool disallow_trivial_move,
|
|
1856
|
-
uint64_t max_file_num_to_ignore, const std::string& trim_ts
|
|
1877
|
+
uint64_t max_file_num_to_ignore, const std::string& trim_ts,
|
|
1878
|
+
int* final_output_level) {
|
|
1857
1879
|
assert(input_level == ColumnFamilyData::kCompactAllLevels ||
|
|
1858
1880
|
input_level >= 0);
|
|
1859
1881
|
|
|
@@ -2004,6 +2026,15 @@ Status DBImpl::RunManualCompaction(
|
|
|
2004
2026
|
} else if (!scheduled) {
|
|
2005
2027
|
if (compaction == nullptr) {
|
|
2006
2028
|
manual.done = true;
|
|
2029
|
+
if (final_output_level) {
|
|
2030
|
+
// No compaction needed or there is a conflicting compaction.
|
|
2031
|
+
// Still set `final_output_level` to the level where we would
|
|
2032
|
+
// have compacted to.
|
|
2033
|
+
*final_output_level = output_level;
|
|
2034
|
+
if (output_level == ColumnFamilyData::kCompactToBaseLevel) {
|
|
2035
|
+
*final_output_level = cfd->current()->storage_info()->base_level();
|
|
2036
|
+
}
|
|
2037
|
+
}
|
|
2007
2038
|
bg_cv_.SignalAll();
|
|
2008
2039
|
continue;
|
|
2009
2040
|
}
|
|
@@ -2037,6 +2068,9 @@ Status DBImpl::RunManualCompaction(
|
|
|
2037
2068
|
}
|
|
2038
2069
|
scheduled = true;
|
|
2039
2070
|
TEST_SYNC_POINT("DBImpl::RunManualCompaction:Scheduled");
|
|
2071
|
+
if (final_output_level) {
|
|
2072
|
+
*final_output_level = compaction->output_level();
|
|
2073
|
+
}
|
|
2040
2074
|
}
|
|
2041
2075
|
}
|
|
2042
2076
|
|
|
@@ -3167,6 +3201,8 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3167
3201
|
mutex_.AssertHeld();
|
|
3168
3202
|
TEST_SYNC_POINT("DBImpl::BackgroundCompaction:Start");
|
|
3169
3203
|
|
|
3204
|
+
const ReadOptions read_options(Env::IOActivity::kCompaction);
|
|
3205
|
+
|
|
3170
3206
|
bool is_manual = (manual_compaction != nullptr);
|
|
3171
3207
|
std::unique_ptr<Compaction> c;
|
|
3172
3208
|
if (prepicked_compaction != nullptr &&
|
|
@@ -3377,9 +3413,9 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3377
3413
|
for (const auto& f : *c->inputs(0)) {
|
|
3378
3414
|
c->edit()->DeleteFile(c->level(), f->fd.GetNumber());
|
|
3379
3415
|
}
|
|
3380
|
-
status = versions_->LogAndApply(
|
|
3381
|
-
|
|
3382
|
-
|
|
3416
|
+
status = versions_->LogAndApply(
|
|
3417
|
+
c->column_family_data(), *c->mutable_cf_options(), read_options,
|
|
3418
|
+
c->edit(), &mutex_, directories_.GetDbDir());
|
|
3383
3419
|
io_s = versions_->io_status();
|
|
3384
3420
|
InstallSuperVersionAndScheduleWork(c->column_family_data(),
|
|
3385
3421
|
&job_context->superversion_contexts[0],
|
|
@@ -3396,9 +3432,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3396
3432
|
c->column_family_data());
|
|
3397
3433
|
// Instrument for event update
|
|
3398
3434
|
// TODO(yhchiang): add op details for showing trivial-move.
|
|
3399
|
-
ThreadStatusUtil::SetColumnFamily(
|
|
3400
|
-
c->column_family_data(), c->column_family_data()->ioptions()->env,
|
|
3401
|
-
immutable_db_options_.enable_thread_tracking);
|
|
3435
|
+
ThreadStatusUtil::SetColumnFamily(c->column_family_data());
|
|
3402
3436
|
ThreadStatusUtil::SetThreadOperation(ThreadStatus::OP_COMPACTION);
|
|
3403
3437
|
|
|
3404
3438
|
compaction_job_stats.num_input_files = c->num_input_files(0);
|
|
@@ -3423,7 +3457,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3423
3457
|
f->oldest_blob_file_number, f->oldest_ancester_time,
|
|
3424
3458
|
f->file_creation_time, f->epoch_number, f->file_checksum,
|
|
3425
3459
|
f->file_checksum_func_name, f->unique_id,
|
|
3426
|
-
f->compensated_range_deletion_size);
|
|
3460
|
+
f->compensated_range_deletion_size, f->tail_size);
|
|
3427
3461
|
|
|
3428
3462
|
ROCKS_LOG_BUFFER(
|
|
3429
3463
|
log_buffer,
|
|
@@ -3444,9 +3478,9 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3444
3478
|
vstorage->GetNextCompactCursor(start_level, c->num_input_files(0)));
|
|
3445
3479
|
}
|
|
3446
3480
|
}
|
|
3447
|
-
status = versions_->LogAndApply(
|
|
3448
|
-
|
|
3449
|
-
|
|
3481
|
+
status = versions_->LogAndApply(
|
|
3482
|
+
c->column_family_data(), *c->mutable_cf_options(), read_options,
|
|
3483
|
+
c->edit(), &mutex_, directories_.GetDbDir());
|
|
3450
3484
|
io_s = versions_->io_status();
|
|
3451
3485
|
// Use latest MutableCFOptions
|
|
3452
3486
|
InstallSuperVersionAndScheduleWork(c->column_family_data(),
|
|
@@ -3535,7 +3569,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3535
3569
|
mutex_.Unlock();
|
|
3536
3570
|
TEST_SYNC_POINT_CALLBACK(
|
|
3537
3571
|
"DBImpl::BackgroundCompaction:NonTrivial:BeforeRun", nullptr);
|
|
3538
|
-
// Should handle
|
|
3572
|
+
// Should handle error?
|
|
3539
3573
|
compaction_job.Run().PermitUncheckedError();
|
|
3540
3574
|
TEST_SYNC_POINT("DBImpl::BackgroundCompaction:NonTrivial:AfterRun");
|
|
3541
3575
|
mutex_.Lock();
|
|
@@ -3760,6 +3794,8 @@ void DBImpl::BuildCompactionJobInfo(
|
|
|
3760
3794
|
compaction_job_info->table_properties = c->GetOutputTableProperties();
|
|
3761
3795
|
compaction_job_info->compaction_reason = c->compaction_reason();
|
|
3762
3796
|
compaction_job_info->compression = c->output_compression();
|
|
3797
|
+
|
|
3798
|
+
const ReadOptions read_options(Env::IOActivity::kCompaction);
|
|
3763
3799
|
for (size_t i = 0; i < c->num_input_levels(); ++i) {
|
|
3764
3800
|
for (const auto fmd : *c->inputs(i)) {
|
|
3765
3801
|
const FileDescriptor& desc = fmd->fd;
|
|
@@ -3771,7 +3807,7 @@ void DBImpl::BuildCompactionJobInfo(
|
|
|
3771
3807
|
static_cast<int>(i), file_number, fmd->oldest_blob_file_number});
|
|
3772
3808
|
if (compaction_job_info->table_properties.count(fn) == 0) {
|
|
3773
3809
|
std::shared_ptr<const TableProperties> tp;
|
|
3774
|
-
auto s = current->GetTableProperties(&tp, fmd, &fn);
|
|
3810
|
+
auto s = current->GetTableProperties(read_options, &tp, fmd, &fn);
|
|
3775
3811
|
if (s.ok()) {
|
|
3776
3812
|
compaction_job_info->table_properties[fn] = tp;
|
|
3777
3813
|
}
|
|
@@ -3921,16 +3957,24 @@ void DBImpl::GetSnapshotContext(
|
|
|
3921
3957
|
*snapshot_seqs = snapshots_.GetAll(earliest_write_conflict_snapshot);
|
|
3922
3958
|
}
|
|
3923
3959
|
|
|
3924
|
-
Status DBImpl::WaitForCompact(bool
|
|
3925
|
-
// Wait until the compaction completes
|
|
3960
|
+
Status DBImpl::WaitForCompact(bool abort_on_pause) {
|
|
3926
3961
|
InstrumentedMutexLock l(&mutex_);
|
|
3927
|
-
|
|
3928
|
-
|
|
3929
|
-
|
|
3930
|
-
|
|
3931
|
-
|
|
3962
|
+
for (;;) {
|
|
3963
|
+
if (shutting_down_.load(std::memory_order_acquire)) {
|
|
3964
|
+
return Status::ShutdownInProgress();
|
|
3965
|
+
}
|
|
3966
|
+
if (bg_work_paused_ && abort_on_pause) {
|
|
3967
|
+
return Status::Aborted();
|
|
3968
|
+
}
|
|
3969
|
+
if ((bg_bottom_compaction_scheduled_ || bg_compaction_scheduled_ ||
|
|
3970
|
+
bg_flush_scheduled_ || unscheduled_compactions_ ||
|
|
3971
|
+
unscheduled_flushes_) &&
|
|
3972
|
+
(error_handler_.GetBGError().ok())) {
|
|
3973
|
+
bg_cv_.Wait();
|
|
3974
|
+
} else {
|
|
3975
|
+
return error_handler_.GetBGError();
|
|
3976
|
+
}
|
|
3932
3977
|
}
|
|
3933
|
-
return error_handler_.GetBGError();
|
|
3934
3978
|
}
|
|
3935
3979
|
|
|
3936
3980
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -178,9 +178,9 @@ Status DBImpl::TEST_WaitForFlushMemTable(ColumnFamilyHandle* column_family) {
|
|
|
178
178
|
return WaitForFlushMemTable(cfd, nullptr, false);
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
-
Status DBImpl::TEST_WaitForCompact(bool
|
|
181
|
+
Status DBImpl::TEST_WaitForCompact(bool abort_on_pause) {
|
|
182
182
|
// Wait until the compaction completes
|
|
183
|
-
return WaitForCompact(
|
|
183
|
+
return WaitForCompact(abort_on_pause);
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
Status DBImpl::TEST_WaitForPurge() {
|
|
@@ -61,7 +61,8 @@ Status DBImpl::PromoteL0(ColumnFamilyHandle* column_family, int target_level) {
|
|
|
61
61
|
"PromoteL0 FAILED. Invalid target level %d\n", target_level);
|
|
62
62
|
return Status::InvalidArgument("Invalid target level");
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
// TODO: plumb Env::IOActivity
|
|
65
|
+
const ReadOptions read_options;
|
|
65
66
|
Status status;
|
|
66
67
|
VersionEdit edit;
|
|
67
68
|
JobContext job_context(next_job_id_.fetch_add(1), true);
|
|
@@ -137,11 +138,12 @@ Status DBImpl::PromoteL0(ColumnFamilyHandle* column_family, int target_level) {
|
|
|
137
138
|
f->oldest_blob_file_number, f->oldest_ancester_time,
|
|
138
139
|
f->file_creation_time, f->epoch_number, f->file_checksum,
|
|
139
140
|
f->file_checksum_func_name, f->unique_id,
|
|
140
|
-
f->compensated_range_deletion_size);
|
|
141
|
+
f->compensated_range_deletion_size, f->tail_size);
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
status = versions_->LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
|
|
144
|
-
&edit, &mutex_,
|
|
145
|
+
read_options, &edit, &mutex_,
|
|
146
|
+
directories_.GetDbDir());
|
|
145
147
|
if (status.ok()) {
|
|
146
148
|
InstallSuperVersionAndScheduleWork(cfd,
|
|
147
149
|
&job_context.superversion_contexts[0],
|
|
@@ -286,6 +286,7 @@ void DBImpl::FindObsoleteFiles(JobContext* job_context, bool force,
|
|
|
286
286
|
return;
|
|
287
287
|
}
|
|
288
288
|
|
|
289
|
+
bool mutex_unlocked = false;
|
|
289
290
|
if (!alive_log_files_.empty() && !logs_.empty()) {
|
|
290
291
|
uint64_t min_log_number = job_context->log_number;
|
|
291
292
|
size_t num_alive_log_files = alive_log_files_.size();
|
|
@@ -315,6 +316,7 @@ void DBImpl::FindObsoleteFiles(JobContext* job_context, bool force,
|
|
|
315
316
|
}
|
|
316
317
|
log_write_mutex_.Unlock();
|
|
317
318
|
mutex_.Unlock();
|
|
319
|
+
mutex_unlocked = true;
|
|
318
320
|
TEST_SYNC_POINT_CALLBACK("FindObsoleteFiles::PostMutexUnlock", nullptr);
|
|
319
321
|
log_write_mutex_.Lock();
|
|
320
322
|
while (!logs_.empty() && logs_.front().number < min_log_number) {
|
|
@@ -337,7 +339,9 @@ void DBImpl::FindObsoleteFiles(JobContext* job_context, bool force,
|
|
|
337
339
|
|
|
338
340
|
logs_to_free_.clear();
|
|
339
341
|
log_write_mutex_.Unlock();
|
|
340
|
-
|
|
342
|
+
if (mutex_unlocked) {
|
|
343
|
+
mutex_.Lock();
|
|
344
|
+
}
|
|
341
345
|
job_context->log_recycle_files.assign(log_recycle_files_.begin(),
|
|
342
346
|
log_recycle_files_.end());
|
|
343
347
|
}
|
|
@@ -19,11 +19,12 @@
|
|
|
19
19
|
#include "file/writable_file_writer.h"
|
|
20
20
|
#include "logging/logging.h"
|
|
21
21
|
#include "monitoring/persistent_stats_history.h"
|
|
22
|
+
#include "monitoring/thread_status_util.h"
|
|
22
23
|
#include "options/options_helper.h"
|
|
23
24
|
#include "rocksdb/table.h"
|
|
24
25
|
#include "rocksdb/wal_filter.h"
|
|
25
26
|
#include "test_util/sync_point.h"
|
|
26
|
-
#include "util/
|
|
27
|
+
#include "util/rate_limiter_impl.h"
|
|
27
28
|
|
|
28
29
|
namespace ROCKSDB_NAMESPACE {
|
|
29
30
|
Options SanitizeOptions(const std::string& dbname, const Options& src,
|
|
@@ -533,6 +534,104 @@ Status DBImpl::Recover(
|
|
|
533
534
|
if (!s.ok()) {
|
|
534
535
|
return s;
|
|
535
536
|
}
|
|
537
|
+
if (s.ok() && !read_only) {
|
|
538
|
+
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
|
539
|
+
// Try to trivially move files down the LSM tree to start from bottommost
|
|
540
|
+
// level when level_compaction_dynamic_level_bytes is enabled. This should
|
|
541
|
+
// only be useful when user is migrating to turning on this option.
|
|
542
|
+
// If a user is migrating from Level Compaction with a smaller level
|
|
543
|
+
// multiplier or from Universal Compaction, there may be too many
|
|
544
|
+
// non-empty levels and the trivial moves here are not sufficed for
|
|
545
|
+
// migration. Additional compactions are needed to drain unnecessary
|
|
546
|
+
// levels.
|
|
547
|
+
//
|
|
548
|
+
// Note that this step moves files down LSM without consulting
|
|
549
|
+
// SSTPartitioner. Further compactions are still needed if
|
|
550
|
+
// the user wants to partition SST files.
|
|
551
|
+
// Note that files moved in this step may not respect the compression
|
|
552
|
+
// option in target level.
|
|
553
|
+
if (cfd->ioptions()->compaction_style ==
|
|
554
|
+
CompactionStyle::kCompactionStyleLevel &&
|
|
555
|
+
cfd->ioptions()->level_compaction_dynamic_level_bytes &&
|
|
556
|
+
!cfd->GetLatestMutableCFOptions()->disable_auto_compactions) {
|
|
557
|
+
int to_level = cfd->ioptions()->num_levels - 1;
|
|
558
|
+
// last level is reserved
|
|
559
|
+
// allow_ingest_behind does not support Level Compaction,
|
|
560
|
+
// and per_key_placement can have infinite compaction loop for Level
|
|
561
|
+
// Compaction. Adjust to_level here just to be safe.
|
|
562
|
+
if (cfd->ioptions()->allow_ingest_behind ||
|
|
563
|
+
cfd->ioptions()->preclude_last_level_data_seconds > 0) {
|
|
564
|
+
to_level -= 1;
|
|
565
|
+
}
|
|
566
|
+
// Whether this column family has a level trivially moved
|
|
567
|
+
bool moved = false;
|
|
568
|
+
// Fill the LSM starting from to_level and going up one level at a time.
|
|
569
|
+
// Some loop invariants (when last level is not reserved):
|
|
570
|
+
// - levels in (from_level, to_level] are empty, and
|
|
571
|
+
// - levels in (to_level, last_level] are non-empty.
|
|
572
|
+
for (int from_level = to_level; from_level >= 0; --from_level) {
|
|
573
|
+
const std::vector<FileMetaData*>& level_files =
|
|
574
|
+
cfd->current()->storage_info()->LevelFiles(from_level);
|
|
575
|
+
if (level_files.empty() || from_level == 0) {
|
|
576
|
+
continue;
|
|
577
|
+
}
|
|
578
|
+
assert(from_level <= to_level);
|
|
579
|
+
// Trivial move files from `from_level` to `to_level`
|
|
580
|
+
if (from_level < to_level) {
|
|
581
|
+
if (!moved) {
|
|
582
|
+
// lsm_state will look like "[1,2,3,4,5,6,0]" for an LSM with
|
|
583
|
+
// 7 levels
|
|
584
|
+
std::string lsm_state = "[";
|
|
585
|
+
for (int i = 0; i < cfd->ioptions()->num_levels; ++i) {
|
|
586
|
+
lsm_state += std::to_string(
|
|
587
|
+
cfd->current()->storage_info()->NumLevelFiles(i));
|
|
588
|
+
if (i < cfd->ioptions()->num_levels - 1) {
|
|
589
|
+
lsm_state += ",";
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
lsm_state += "]";
|
|
593
|
+
ROCKS_LOG_WARN(immutable_db_options_.info_log,
|
|
594
|
+
"[%s] Trivially move files down the LSM when open "
|
|
595
|
+
"with level_compaction_dynamic_level_bytes=true,"
|
|
596
|
+
" lsm_state: %s (Files are moved only if DB "
|
|
597
|
+
"Recovery is successful).",
|
|
598
|
+
cfd->GetName().c_str(), lsm_state.c_str());
|
|
599
|
+
moved = true;
|
|
600
|
+
}
|
|
601
|
+
ROCKS_LOG_WARN(
|
|
602
|
+
immutable_db_options_.info_log,
|
|
603
|
+
"[%s] Moving %zu files from from_level-%d to from_level-%d",
|
|
604
|
+
cfd->GetName().c_str(), level_files.size(), from_level,
|
|
605
|
+
to_level);
|
|
606
|
+
VersionEdit edit;
|
|
607
|
+
edit.SetColumnFamily(cfd->GetID());
|
|
608
|
+
for (const FileMetaData* f : level_files) {
|
|
609
|
+
edit.DeleteFile(from_level, f->fd.GetNumber());
|
|
610
|
+
edit.AddFile(to_level, f->fd.GetNumber(), f->fd.GetPathId(),
|
|
611
|
+
f->fd.GetFileSize(), f->smallest, f->largest,
|
|
612
|
+
f->fd.smallest_seqno, f->fd.largest_seqno,
|
|
613
|
+
f->marked_for_compaction,
|
|
614
|
+
f->temperature, // this can be different from
|
|
615
|
+
// `last_level_temperature`
|
|
616
|
+
f->oldest_blob_file_number, f->oldest_ancester_time,
|
|
617
|
+
f->file_creation_time, f->epoch_number,
|
|
618
|
+
f->file_checksum, f->file_checksum_func_name,
|
|
619
|
+
f->unique_id, f->compensated_range_deletion_size,
|
|
620
|
+
f->tail_size);
|
|
621
|
+
ROCKS_LOG_WARN(immutable_db_options_.info_log,
|
|
622
|
+
"[%s] Moving #%" PRIu64
|
|
623
|
+
" from from_level-%d to from_level-%d %" PRIu64
|
|
624
|
+
" bytes\n",
|
|
625
|
+
cfd->GetName().c_str(), f->fd.GetNumber(),
|
|
626
|
+
from_level, to_level, f->fd.GetFileSize());
|
|
627
|
+
}
|
|
628
|
+
recovery_ctx->UpdateVersionEdits(cfd, edit);
|
|
629
|
+
}
|
|
630
|
+
--to_level;
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
}
|
|
536
635
|
s = SetupDBId(read_only, recovery_ctx);
|
|
537
636
|
ROCKS_LOG_INFO(immutable_db_options_.info_log, "DB ID: %s\n", db_id_.c_str());
|
|
538
637
|
if (s.ok() && !read_only) {
|
|
@@ -826,8 +925,9 @@ Status DBImpl::InitPersistStatsColumnFamily() {
|
|
|
826
925
|
Status DBImpl::LogAndApplyForRecovery(const RecoveryContext& recovery_ctx) {
|
|
827
926
|
mutex_.AssertHeld();
|
|
828
927
|
assert(versions_->descriptor_log_ == nullptr);
|
|
928
|
+
const ReadOptions read_options(Env::IOActivity::kDBOpen);
|
|
829
929
|
Status s = versions_->LogAndApply(
|
|
830
|
-
recovery_ctx.cfds_, recovery_ctx.mutable_cf_opts_,
|
|
930
|
+
recovery_ctx.cfds_, recovery_ctx.mutable_cf_opts_, read_options,
|
|
831
931
|
recovery_ctx.edit_lists_, &mutex_, directories_.GetDbDir());
|
|
832
932
|
if (s.ok() && !(recovery_ctx.files_to_delete_.empty())) {
|
|
833
933
|
mutex_.Unlock();
|
|
@@ -1354,7 +1454,7 @@ Status DBImpl::RecoverLogFiles(const std::vector<uint64_t>& wal_numbers,
|
|
|
1354
1454
|
recovery_ctx->UpdateVersionEdits(cfd, iter->second);
|
|
1355
1455
|
}
|
|
1356
1456
|
|
|
1357
|
-
if (flushed) {
|
|
1457
|
+
if (flushed || !data_seen) {
|
|
1358
1458
|
VersionEdit wal_deletion;
|
|
1359
1459
|
if (immutable_db_options_.track_and_verify_wals_in_manifest) {
|
|
1360
1460
|
wal_deletion.DeleteWalsBefore(max_wal_number + 1);
|
|
@@ -1480,6 +1580,7 @@ Status DBImpl::WriteLevel0TableForRecovery(int job_id, ColumnFamilyData* cfd,
|
|
|
1480
1580
|
meta.fd = FileDescriptor(versions_->NewFileNumber(), 0, 0);
|
|
1481
1581
|
ReadOptions ro;
|
|
1482
1582
|
ro.total_order_seek = true;
|
|
1583
|
+
ro.io_activity = Env::IOActivity::kDBOpen;
|
|
1483
1584
|
Arena arena;
|
|
1484
1585
|
Status s;
|
|
1485
1586
|
TableProperties table_properties;
|
|
@@ -1538,10 +1639,11 @@ Status DBImpl::WriteLevel0TableForRecovery(int job_id, ColumnFamilyData* cfd,
|
|
|
1538
1639
|
SeqnoToTimeMapping empty_seqno_time_mapping;
|
|
1539
1640
|
Version* version = cfd->current();
|
|
1540
1641
|
version->Ref();
|
|
1642
|
+
const ReadOptions read_option(Env::IOActivity::kDBOpen);
|
|
1541
1643
|
s = BuildTable(
|
|
1542
1644
|
dbname_, versions_.get(), immutable_db_options_, tboptions,
|
|
1543
|
-
file_options_for_compaction_, cfd->table_cache(),
|
|
1544
|
-
std::move(range_del_iters), &meta, &blob_file_additions,
|
|
1645
|
+
file_options_for_compaction_, read_option, cfd->table_cache(),
|
|
1646
|
+
iter.get(), std::move(range_del_iters), &meta, &blob_file_additions,
|
|
1545
1647
|
snapshot_seqs, earliest_write_conflict_snapshot, kMaxSequenceNumber,
|
|
1546
1648
|
snapshot_checker, paranoid_file_checks, cfd->internal_stats(), &io_s,
|
|
1547
1649
|
io_tracer_, BlobFileCreationReason::kRecovery,
|
|
@@ -1572,14 +1674,14 @@ Status DBImpl::WriteLevel0TableForRecovery(int job_id, ColumnFamilyData* cfd,
|
|
|
1572
1674
|
constexpr int level = 0;
|
|
1573
1675
|
|
|
1574
1676
|
if (s.ok() && has_output) {
|
|
1575
|
-
edit->AddFile(
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1677
|
+
edit->AddFile(
|
|
1678
|
+
level, meta.fd.GetNumber(), meta.fd.GetPathId(), meta.fd.GetFileSize(),
|
|
1679
|
+
meta.smallest, meta.largest, meta.fd.smallest_seqno,
|
|
1680
|
+
meta.fd.largest_seqno, meta.marked_for_compaction, meta.temperature,
|
|
1681
|
+
meta.oldest_blob_file_number, meta.oldest_ancester_time,
|
|
1682
|
+
meta.file_creation_time, meta.epoch_number, meta.file_checksum,
|
|
1683
|
+
meta.file_checksum_func_name, meta.unique_id,
|
|
1684
|
+
meta.compensated_range_deletion_size, meta.tail_size);
|
|
1583
1685
|
|
|
1584
1686
|
for (const auto& blob : blob_file_additions) {
|
|
1585
1687
|
edit->AddBlobFile(blob);
|
|
@@ -1642,8 +1744,12 @@ Status DB::Open(const DBOptions& db_options, const std::string& dbname,
|
|
|
1642
1744
|
std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) {
|
|
1643
1745
|
const bool kSeqPerBatch = true;
|
|
1644
1746
|
const bool kBatchPerTxn = true;
|
|
1645
|
-
|
|
1646
|
-
|
|
1747
|
+
ThreadStatusUtil::SetEnableTracking(db_options.enable_thread_tracking);
|
|
1748
|
+
ThreadStatusUtil::SetThreadOperation(ThreadStatus::OperationType::OP_DBOPEN);
|
|
1749
|
+
Status s = DBImpl::Open(db_options, dbname, column_families, handles, dbptr,
|
|
1750
|
+
!kSeqPerBatch, kBatchPerTxn);
|
|
1751
|
+
ThreadStatusUtil::ResetThreadStatus();
|
|
1752
|
+
return s;
|
|
1647
1753
|
}
|
|
1648
1754
|
|
|
1649
1755
|
// TODO: Implement the trimming in flush code path.
|
|
@@ -1828,7 +1934,9 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname,
|
|
|
1828
1934
|
|
|
1829
1935
|
// Handles create_if_missing, error_if_exists
|
|
1830
1936
|
uint64_t recovered_seq(kMaxSequenceNumber);
|
|
1831
|
-
s = impl->Recover(column_families, false
|
|
1937
|
+
s = impl->Recover(column_families, false /* read_only */,
|
|
1938
|
+
false /* error_if_wal_file_exists */,
|
|
1939
|
+
false /* error_if_data_exists_in_wals */, &recovered_seq,
|
|
1832
1940
|
&recovery_ctx);
|
|
1833
1941
|
if (s.ok()) {
|
|
1834
1942
|
uint64_t new_log_number = impl->versions_->NewFileNumber();
|