@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
|
@@ -258,6 +258,9 @@ DBImpl::DBImpl(const DBOptions& options, const std::string& dbname,
|
|
|
258
258
|
co.capacity = table_cache_size;
|
|
259
259
|
co.num_shard_bits = immutable_db_options_.table_cache_numshardbits;
|
|
260
260
|
co.metadata_charge_policy = kDontChargeCacheMetadata;
|
|
261
|
+
// TODO: Consider a non-fixed seed once test fallout (prefetch_test) is
|
|
262
|
+
// dealt with
|
|
263
|
+
co.hash_seed = 0;
|
|
261
264
|
table_cache_ = NewLRUCache(co);
|
|
262
265
|
SetDbSessionId();
|
|
263
266
|
assert(!db_session_id_.empty());
|
|
@@ -327,6 +330,9 @@ Status DBImpl::Resume() {
|
|
|
327
330
|
// means a new super version wouldn't have been installed
|
|
328
331
|
Status DBImpl::ResumeImpl(DBRecoverContext context) {
|
|
329
332
|
mutex_.AssertHeld();
|
|
333
|
+
|
|
334
|
+
// TODO: plumb Env::IOActivity
|
|
335
|
+
const ReadOptions read_options;
|
|
330
336
|
WaitForBackgroundWork();
|
|
331
337
|
|
|
332
338
|
Status s;
|
|
@@ -368,7 +374,7 @@ Status DBImpl::ResumeImpl(DBRecoverContext context) {
|
|
|
368
374
|
assert(cfh);
|
|
369
375
|
ColumnFamilyData* cfd = cfh->cfd();
|
|
370
376
|
const MutableCFOptions& cf_opts = *cfd->GetLatestMutableCFOptions();
|
|
371
|
-
s = versions_->LogAndApply(cfd, cf_opts, &edit, &mutex_,
|
|
377
|
+
s = versions_->LogAndApply(cfd, cf_opts, read_options, &edit, &mutex_,
|
|
372
378
|
directories_.GetDbDir());
|
|
373
379
|
if (!s.ok()) {
|
|
374
380
|
io_s = versions_->io_status();
|
|
@@ -1147,6 +1153,8 @@ FSDirectory* DBImpl::GetDataDir(ColumnFamilyData* cfd, size_t path_id) const {
|
|
|
1147
1153
|
Status DBImpl::SetOptions(
|
|
1148
1154
|
ColumnFamilyHandle* column_family,
|
|
1149
1155
|
const std::unordered_map<std::string, std::string>& options_map) {
|
|
1156
|
+
// TODO: plumb Env::IOActivity
|
|
1157
|
+
const ReadOptions read_options;
|
|
1150
1158
|
auto* cfd =
|
|
1151
1159
|
static_cast_with_check<ColumnFamilyHandleImpl>(column_family)->cfd();
|
|
1152
1160
|
if (options_map.empty()) {
|
|
@@ -1168,8 +1176,8 @@ Status DBImpl::SetOptions(
|
|
|
1168
1176
|
new_options = *cfd->GetLatestMutableCFOptions();
|
|
1169
1177
|
// Append new version to recompute compaction score.
|
|
1170
1178
|
VersionEdit dummy_edit;
|
|
1171
|
-
s = versions_->LogAndApply(cfd, new_options,
|
|
1172
|
-
directories_.GetDbDir());
|
|
1179
|
+
s = versions_->LogAndApply(cfd, new_options, read_options, &dummy_edit,
|
|
1180
|
+
&mutex_, directories_.GetDbDir());
|
|
1173
1181
|
// Trigger possible flush/compactions. This has to be before we persist
|
|
1174
1182
|
// options to file, otherwise there will be a deadlock with writer
|
|
1175
1183
|
// thread.
|
|
@@ -1507,7 +1515,9 @@ Status DBImpl::SyncWAL() {
|
|
|
1507
1515
|
}
|
|
1508
1516
|
if (status.ok() && synced_wals.IsWalAddition()) {
|
|
1509
1517
|
InstrumentedMutexLock l(&mutex_);
|
|
1510
|
-
|
|
1518
|
+
// TODO: plumb Env::IOActivity
|
|
1519
|
+
const ReadOptions read_options;
|
|
1520
|
+
status = ApplyWALToManifest(read_options, &synced_wals);
|
|
1511
1521
|
}
|
|
1512
1522
|
|
|
1513
1523
|
TEST_SYNC_POINT("DBImpl::SyncWAL:BeforeMarkLogsSynced:2");
|
|
@@ -1515,11 +1525,13 @@ Status DBImpl::SyncWAL() {
|
|
|
1515
1525
|
return status;
|
|
1516
1526
|
}
|
|
1517
1527
|
|
|
1518
|
-
Status DBImpl::ApplyWALToManifest(
|
|
1528
|
+
Status DBImpl::ApplyWALToManifest(const ReadOptions& read_options,
|
|
1529
|
+
VersionEdit* synced_wals) {
|
|
1519
1530
|
// not empty, write to MANIFEST.
|
|
1520
1531
|
mutex_.AssertHeld();
|
|
1532
|
+
|
|
1521
1533
|
Status status = versions_->LogAndApplyToDefaultColumnFamily(
|
|
1522
|
-
synced_wals, &mutex_, directories_.GetDbDir());
|
|
1534
|
+
read_options, synced_wals, &mutex_, directories_.GetDbDir());
|
|
1523
1535
|
if (!status.ok() && versions_->io_status().IsIOError()) {
|
|
1524
1536
|
status = error_handler_.SetBGError(versions_->io_status(),
|
|
1525
1537
|
BackgroundErrorReason::kManifestWrite);
|
|
@@ -1936,6 +1948,12 @@ Status DBImpl::GetEntity(const ReadOptions& read_options,
|
|
|
1936
1948
|
"Cannot call GetEntity without a PinnableWideColumns object");
|
|
1937
1949
|
}
|
|
1938
1950
|
|
|
1951
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
1952
|
+
return Status::InvalidArgument(
|
|
1953
|
+
"Cannot call GetEntity with `ReadOptions::io_activity` != "
|
|
1954
|
+
"`Env::IOActivity::kUnknown`");
|
|
1955
|
+
}
|
|
1956
|
+
|
|
1939
1957
|
columns->Reset();
|
|
1940
1958
|
|
|
1941
1959
|
GetImplOptions get_impl_options;
|
|
@@ -1981,6 +1999,12 @@ Status DBImpl::GetImpl(const ReadOptions& read_options, const Slice& key,
|
|
|
1981
1999
|
|
|
1982
2000
|
assert(get_impl_options.column_family);
|
|
1983
2001
|
|
|
2002
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
2003
|
+
return Status::InvalidArgument(
|
|
2004
|
+
"Cannot call Get with `ReadOptions::io_activity` != "
|
|
2005
|
+
"`Env::IOActivity::kUnknown`");
|
|
2006
|
+
}
|
|
2007
|
+
|
|
1984
2008
|
if (read_options.timestamp) {
|
|
1985
2009
|
const Status s = FailIfTsMismatchCf(get_impl_options.column_family,
|
|
1986
2010
|
*(read_options.timestamp),
|
|
@@ -2454,7 +2478,6 @@ std::vector<Status> DBImpl::MultiGet(
|
|
|
2454
2478
|
|
|
2455
2479
|
// Post processing (decrement reference counts and record statistics)
|
|
2456
2480
|
PERF_TIMER_GUARD(get_post_process_time);
|
|
2457
|
-
autovector<SuperVersion*> superversions_to_delete;
|
|
2458
2481
|
|
|
2459
2482
|
for (auto mgd_iter : multiget_cf_data) {
|
|
2460
2483
|
auto mgd = mgd_iter.second;
|
|
@@ -2931,6 +2954,11 @@ Status DBImpl::MultiGetImpl(
|
|
|
2931
2954
|
autovector<KeyContext*, MultiGetContext::MAX_BATCH_SIZE>* sorted_keys,
|
|
2932
2955
|
SuperVersion* super_version, SequenceNumber snapshot,
|
|
2933
2956
|
ReadCallback* callback) {
|
|
2957
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
2958
|
+
return Status::InvalidArgument(
|
|
2959
|
+
"Cannot call MultiGet with `ReadOptions::io_activity` != "
|
|
2960
|
+
"`Env::IOActivity::kUnknown`");
|
|
2961
|
+
}
|
|
2934
2962
|
PERF_CPU_TIMER_GUARD(get_cpu_nanos, immutable_db_options_.clock);
|
|
2935
2963
|
StopWatch sw(immutable_db_options_.clock, stats_, DB_MULTIGET);
|
|
2936
2964
|
|
|
@@ -3129,6 +3157,8 @@ Status DBImpl::CreateColumnFamilies(
|
|
|
3129
3157
|
Status DBImpl::CreateColumnFamilyImpl(const ColumnFamilyOptions& cf_options,
|
|
3130
3158
|
const std::string& column_family_name,
|
|
3131
3159
|
ColumnFamilyHandle** handle) {
|
|
3160
|
+
// TODO: plumb Env::IOActivity
|
|
3161
|
+
const ReadOptions read_options;
|
|
3132
3162
|
Status s;
|
|
3133
3163
|
*handle = nullptr;
|
|
3134
3164
|
|
|
@@ -3169,9 +3199,9 @@ Status DBImpl::CreateColumnFamilyImpl(const ColumnFamilyOptions& cf_options,
|
|
|
3169
3199
|
write_thread_.EnterUnbatched(&w, &mutex_);
|
|
3170
3200
|
// LogAndApply will both write the creation in MANIFEST and create
|
|
3171
3201
|
// ColumnFamilyData object
|
|
3172
|
-
s = versions_->LogAndApply(nullptr, MutableCFOptions(cf_options),
|
|
3173
|
-
|
|
3174
|
-
&cf_options);
|
|
3202
|
+
s = versions_->LogAndApply(nullptr, MutableCFOptions(cf_options),
|
|
3203
|
+
read_options, &edit, &mutex_,
|
|
3204
|
+
directories_.GetDbDir(), false, &cf_options);
|
|
3175
3205
|
write_thread_.ExitUnbatched(&w);
|
|
3176
3206
|
}
|
|
3177
3207
|
if (s.ok()) {
|
|
@@ -3250,6 +3280,8 @@ Status DBImpl::DropColumnFamilies(
|
|
|
3250
3280
|
}
|
|
3251
3281
|
|
|
3252
3282
|
Status DBImpl::DropColumnFamilyImpl(ColumnFamilyHandle* column_family) {
|
|
3283
|
+
// TODO: plumb Env::IOActivity
|
|
3284
|
+
const ReadOptions read_options;
|
|
3253
3285
|
auto cfh = static_cast_with_check<ColumnFamilyHandleImpl>(column_family);
|
|
3254
3286
|
auto cfd = cfh->cfd();
|
|
3255
3287
|
if (cfd->GetID() == 0) {
|
|
@@ -3272,8 +3304,9 @@ Status DBImpl::DropColumnFamilyImpl(ColumnFamilyHandle* column_family) {
|
|
|
3272
3304
|
// we drop column family from a single write thread
|
|
3273
3305
|
WriteThread::Writer w;
|
|
3274
3306
|
write_thread_.EnterUnbatched(&w, &mutex_);
|
|
3275
|
-
s = versions_->LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
|
|
3276
|
-
&mutex_,
|
|
3307
|
+
s = versions_->LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
|
|
3308
|
+
read_options, &edit, &mutex_,
|
|
3309
|
+
directories_.GetDbDir());
|
|
3277
3310
|
write_thread_.ExitUnbatched(&w);
|
|
3278
3311
|
}
|
|
3279
3312
|
if (s.ok()) {
|
|
@@ -3324,10 +3357,13 @@ bool DBImpl::KeyMayExist(const ReadOptions& read_options,
|
|
|
3324
3357
|
std::string* value, std::string* timestamp,
|
|
3325
3358
|
bool* value_found) {
|
|
3326
3359
|
assert(value != nullptr);
|
|
3360
|
+
assert(read_options.io_activity == Env::IOActivity::kUnknown);
|
|
3361
|
+
|
|
3327
3362
|
if (value_found != nullptr) {
|
|
3328
3363
|
// falsify later if key-may-exist but can't fetch value
|
|
3329
3364
|
*value_found = true;
|
|
3330
3365
|
}
|
|
3366
|
+
// TODO: plumb Env::IOActivity
|
|
3331
3367
|
ReadOptions roptions = read_options;
|
|
3332
3368
|
roptions.read_tier = kBlockCacheTier; // read from block cache only
|
|
3333
3369
|
PinnableSlice pinnable_val;
|
|
@@ -3356,6 +3392,11 @@ Iterator* DBImpl::NewIterator(const ReadOptions& read_options,
|
|
|
3356
3392
|
return NewErrorIterator(Status::NotSupported(
|
|
3357
3393
|
"ReadTier::kPersistedData is not yet supported in iterators."));
|
|
3358
3394
|
}
|
|
3395
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
3396
|
+
return NewErrorIterator(Status::InvalidArgument(
|
|
3397
|
+
"Cannot call NewIterator with `ReadOptions::io_activity` != "
|
|
3398
|
+
"`Env::IOActivity::kUnknown`"));
|
|
3399
|
+
}
|
|
3359
3400
|
|
|
3360
3401
|
assert(column_family);
|
|
3361
3402
|
|
|
@@ -3491,6 +3532,11 @@ Status DBImpl::NewIterators(
|
|
|
3491
3532
|
return Status::NotSupported(
|
|
3492
3533
|
"ReadTier::kPersistedData is not yet supported in iterators.");
|
|
3493
3534
|
}
|
|
3535
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
3536
|
+
return Status::InvalidArgument(
|
|
3537
|
+
"Cannot call NewIterators with `ReadOptions::io_activity` != "
|
|
3538
|
+
"`Env::IOActivity::kUnknown`");
|
|
3539
|
+
}
|
|
3494
3540
|
|
|
3495
3541
|
if (read_options.timestamp) {
|
|
3496
3542
|
for (auto* cf : column_families) {
|
|
@@ -3808,7 +3854,9 @@ Status DBImpl::GetPropertiesOfAllTables(ColumnFamilyHandle* column_family,
|
|
|
3808
3854
|
version->Ref();
|
|
3809
3855
|
mutex_.Unlock();
|
|
3810
3856
|
|
|
3811
|
-
|
|
3857
|
+
// TODO: plumb Env::IOActivity
|
|
3858
|
+
const ReadOptions read_options;
|
|
3859
|
+
auto s = version->GetPropertiesOfAllTables(read_options, props);
|
|
3812
3860
|
|
|
3813
3861
|
// Decrement the ref count
|
|
3814
3862
|
mutex_.Lock();
|
|
@@ -3830,7 +3878,9 @@ Status DBImpl::GetPropertiesOfTablesInRange(ColumnFamilyHandle* column_family,
|
|
|
3830
3878
|
version->Ref();
|
|
3831
3879
|
mutex_.Unlock();
|
|
3832
3880
|
|
|
3833
|
-
|
|
3881
|
+
// TODO: plumb Env::IOActivity
|
|
3882
|
+
const ReadOptions read_options;
|
|
3883
|
+
auto s = version->GetPropertiesOfTablesInRange(read_options, range, n, props);
|
|
3834
3884
|
|
|
3835
3885
|
// Decrement the ref count
|
|
3836
3886
|
mutex_.Lock();
|
|
@@ -4163,6 +4213,8 @@ Status DBImpl::GetApproximateSizes(const SizeApproximationOptions& options,
|
|
|
4163
4213
|
SuperVersion* sv = GetAndRefSuperVersion(cfd);
|
|
4164
4214
|
v = sv->current;
|
|
4165
4215
|
|
|
4216
|
+
// TODO: plumb Env::IOActivity
|
|
4217
|
+
const ReadOptions read_options;
|
|
4166
4218
|
for (int i = 0; i < n; i++) {
|
|
4167
4219
|
Slice start = range[i].start;
|
|
4168
4220
|
Slice limit = range[i].limit;
|
|
@@ -4184,7 +4236,7 @@ Status DBImpl::GetApproximateSizes(const SizeApproximationOptions& options,
|
|
|
4184
4236
|
sizes[i] = 0;
|
|
4185
4237
|
if (options.include_files) {
|
|
4186
4238
|
sizes[i] += versions_->ApproximateSize(
|
|
4187
|
-
options, v, k1.Encode(), k2.Encode(), /*start_level=*/0,
|
|
4239
|
+
options, read_options, v, k1.Encode(), k2.Encode(), /*start_level=*/0,
|
|
4188
4240
|
/*end_level=*/-1, TableReaderCaller::kUserApproximateSize);
|
|
4189
4241
|
}
|
|
4190
4242
|
if (options.include_memtables) {
|
|
@@ -4232,6 +4284,8 @@ Status DBImpl::GetUpdatesSince(
|
|
|
4232
4284
|
}
|
|
4233
4285
|
|
|
4234
4286
|
Status DBImpl::DeleteFile(std::string name) {
|
|
4287
|
+
// TODO: plumb Env::IOActivity
|
|
4288
|
+
const ReadOptions read_options;
|
|
4235
4289
|
uint64_t number;
|
|
4236
4290
|
FileType type;
|
|
4237
4291
|
WalFileType log_type;
|
|
@@ -4311,7 +4365,8 @@ Status DBImpl::DeleteFile(std::string name) {
|
|
|
4311
4365
|
edit.SetColumnFamily(cfd->GetID());
|
|
4312
4366
|
edit.DeleteFile(level, number);
|
|
4313
4367
|
status = versions_->LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
|
|
4314
|
-
&edit, &mutex_,
|
|
4368
|
+
read_options, &edit, &mutex_,
|
|
4369
|
+
directories_.GetDbDir());
|
|
4315
4370
|
if (status.ok()) {
|
|
4316
4371
|
InstallSuperVersionAndScheduleWork(cfd,
|
|
4317
4372
|
&job_context.superversion_contexts[0],
|
|
@@ -4333,6 +4388,8 @@ Status DBImpl::DeleteFile(std::string name) {
|
|
|
4333
4388
|
Status DBImpl::DeleteFilesInRanges(ColumnFamilyHandle* column_family,
|
|
4334
4389
|
const RangePtr* ranges, size_t n,
|
|
4335
4390
|
bool include_end) {
|
|
4391
|
+
// TODO: plumb Env::IOActivity
|
|
4392
|
+
const ReadOptions read_options;
|
|
4336
4393
|
Status status = Status::OK();
|
|
4337
4394
|
auto cfh = static_cast_with_check<ColumnFamilyHandleImpl>(column_family);
|
|
4338
4395
|
ColumnFamilyData* cfd = cfh->cfd();
|
|
@@ -4398,7 +4455,8 @@ Status DBImpl::DeleteFilesInRanges(ColumnFamilyHandle* column_family,
|
|
|
4398
4455
|
}
|
|
4399
4456
|
input_version->Ref();
|
|
4400
4457
|
status = versions_->LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
|
|
4401
|
-
&edit, &mutex_,
|
|
4458
|
+
read_options, &edit, &mutex_,
|
|
4459
|
+
directories_.GetDbDir());
|
|
4402
4460
|
if (status.ok()) {
|
|
4403
4461
|
InstallSuperVersionAndScheduleWork(cfd,
|
|
4404
4462
|
&job_context.superversion_contexts[0],
|
|
@@ -4464,7 +4522,6 @@ void DBImpl::GetAllColumnFamilyMetaData(
|
|
|
4464
4522
|
}
|
|
4465
4523
|
}
|
|
4466
4524
|
|
|
4467
|
-
|
|
4468
4525
|
Status DBImpl::CheckConsistency() {
|
|
4469
4526
|
mutex_.AssertHeld();
|
|
4470
4527
|
std::vector<LiveFileMetaData> metadata;
|
|
@@ -4855,6 +4912,15 @@ Status DBImpl::WriteOptionsFile(bool need_mutex_lock,
|
|
|
4855
4912
|
if (s.ok()) {
|
|
4856
4913
|
s = RenameTempFileToOptionsFile(file_name);
|
|
4857
4914
|
}
|
|
4915
|
+
|
|
4916
|
+
if (!s.ok() && GetEnv()->FileExists(file_name).ok()) {
|
|
4917
|
+
if (!GetEnv()->DeleteFile(file_name).ok()) {
|
|
4918
|
+
ROCKS_LOG_WARN(immutable_db_options_.info_log,
|
|
4919
|
+
"Unable to delete temp options file %s",
|
|
4920
|
+
file_name.c_str());
|
|
4921
|
+
}
|
|
4922
|
+
}
|
|
4923
|
+
|
|
4858
4924
|
// restore lock
|
|
4859
4925
|
if (!need_mutex_lock) {
|
|
4860
4926
|
mutex_.Lock();
|
|
@@ -5034,6 +5100,7 @@ Status DBImpl::GetLatestSequenceForKey(
|
|
|
5034
5100
|
MergeContext merge_context;
|
|
5035
5101
|
SequenceNumber max_covering_tombstone_seq = 0;
|
|
5036
5102
|
|
|
5103
|
+
// TODO: plumb Env::IOActivity
|
|
5037
5104
|
ReadOptions read_options;
|
|
5038
5105
|
SequenceNumber current_seq = versions_->LastSequence();
|
|
5039
5106
|
|
|
@@ -5189,6 +5256,8 @@ Status DBImpl::IngestExternalFile(
|
|
|
5189
5256
|
|
|
5190
5257
|
Status DBImpl::IngestExternalFiles(
|
|
5191
5258
|
const std::vector<IngestExternalFileArg>& args) {
|
|
5259
|
+
// TODO: plumb Env::IOActivity
|
|
5260
|
+
const ReadOptions read_options;
|
|
5192
5261
|
if (args.empty()) {
|
|
5193
5262
|
return Status::InvalidArgument("ingestion arg list is empty");
|
|
5194
5263
|
}
|
|
@@ -5406,9 +5475,9 @@ Status DBImpl::IngestExternalFiles(
|
|
|
5406
5475
|
}
|
|
5407
5476
|
assert(0 == num_entries);
|
|
5408
5477
|
}
|
|
5409
|
-
status =
|
|
5410
|
-
|
|
5411
|
-
|
|
5478
|
+
status = versions_->LogAndApply(cfds_to_commit, mutable_cf_options_list,
|
|
5479
|
+
read_options, edit_lists, &mutex_,
|
|
5480
|
+
directories_.GetDbDir());
|
|
5412
5481
|
// It is safe to update VersionSet last seqno here after LogAndApply since
|
|
5413
5482
|
// LogAndApply persists last sequence number from VersionEdits,
|
|
5414
5483
|
// which are from file's largest seqno and not from VersionSet.
|
|
@@ -5509,6 +5578,8 @@ Status DBImpl::CreateColumnFamilyWithImport(
|
|
|
5509
5578
|
const ExportImportFilesMetaData& metadata, ColumnFamilyHandle** handle) {
|
|
5510
5579
|
assert(handle != nullptr);
|
|
5511
5580
|
assert(*handle == nullptr);
|
|
5581
|
+
// TODO: plumb Env::IOActivity
|
|
5582
|
+
const ReadOptions read_options;
|
|
5512
5583
|
std::string cf_comparator_name = options.comparator->Name();
|
|
5513
5584
|
if (cf_comparator_name != metadata.db_comparator_name) {
|
|
5514
5585
|
return Status::InvalidArgument("Comparator name mismatch");
|
|
@@ -5550,8 +5621,9 @@ Status DBImpl::CreateColumnFamilyWithImport(
|
|
|
5550
5621
|
// file, we have to make sure the file number will never being reused.
|
|
5551
5622
|
next_file_number = versions_->FetchAddFileNumber(metadata.files.size());
|
|
5552
5623
|
auto cf_options = cfd->GetLatestMutableCFOptions();
|
|
5553
|
-
status =
|
|
5554
|
-
|
|
5624
|
+
status =
|
|
5625
|
+
versions_->LogAndApply(cfd, *cf_options, read_options, &dummy_edit,
|
|
5626
|
+
&mutex_, directories_.GetDbDir());
|
|
5555
5627
|
if (status.ok()) {
|
|
5556
5628
|
InstallSuperVersionAndScheduleWork(cfd, &dummy_sv_ctx, *cf_options);
|
|
5557
5629
|
}
|
|
@@ -5587,8 +5659,9 @@ Status DBImpl::CreateColumnFamilyWithImport(
|
|
|
5587
5659
|
// Install job edit [Mutex will be unlocked here]
|
|
5588
5660
|
if (status.ok()) {
|
|
5589
5661
|
auto cf_options = cfd->GetLatestMutableCFOptions();
|
|
5590
|
-
status = versions_->LogAndApply(cfd, *cf_options,
|
|
5591
|
-
&mutex_,
|
|
5662
|
+
status = versions_->LogAndApply(cfd, *cf_options, read_options,
|
|
5663
|
+
import_job.edit(), &mutex_,
|
|
5664
|
+
directories_.GetDbDir());
|
|
5592
5665
|
if (status.ok()) {
|
|
5593
5666
|
InstallSuperVersionAndScheduleWork(cfd, &sv_context, *cf_options);
|
|
5594
5667
|
}
|
|
@@ -5631,6 +5704,81 @@ Status DBImpl::CreateColumnFamilyWithImport(
|
|
|
5631
5704
|
return status;
|
|
5632
5705
|
}
|
|
5633
5706
|
|
|
5707
|
+
Status DBImpl::ClipColumnFamily(ColumnFamilyHandle* column_family,
|
|
5708
|
+
const Slice& begin_key, const Slice& end_key) {
|
|
5709
|
+
assert(column_family);
|
|
5710
|
+
Status status;
|
|
5711
|
+
// Flush memtable
|
|
5712
|
+
FlushOptions flush_opts;
|
|
5713
|
+
flush_opts.allow_write_stall = true;
|
|
5714
|
+
auto* cfd =
|
|
5715
|
+
static_cast_with_check<ColumnFamilyHandleImpl>(column_family)->cfd();
|
|
5716
|
+
if (immutable_db_options_.atomic_flush) {
|
|
5717
|
+
status = AtomicFlushMemTables(flush_opts, FlushReason::kDeleteFiles,
|
|
5718
|
+
{} /* provided_candidate_cfds */,
|
|
5719
|
+
false /* entered_write_thread */);
|
|
5720
|
+
} else {
|
|
5721
|
+
status = FlushMemTable(cfd, flush_opts, FlushReason::kDeleteFiles,
|
|
5722
|
+
false /* entered_write_thread */);
|
|
5723
|
+
}
|
|
5724
|
+
|
|
5725
|
+
if (status.ok()) {
|
|
5726
|
+
// DeleteFilesInRanges non-overlap files except L0
|
|
5727
|
+
std::vector<RangePtr> ranges;
|
|
5728
|
+
ranges.push_back(RangePtr(nullptr, &begin_key));
|
|
5729
|
+
ranges.push_back(RangePtr(&end_key, nullptr));
|
|
5730
|
+
status = DeleteFilesInRanges(column_family, ranges.data(), ranges.size());
|
|
5731
|
+
}
|
|
5732
|
+
|
|
5733
|
+
// DeleteRange the remaining overlapping keys
|
|
5734
|
+
bool empty_after_delete = false;
|
|
5735
|
+
if (status.ok()) {
|
|
5736
|
+
Slice smallest_user_key, largest_user_key;
|
|
5737
|
+
{
|
|
5738
|
+
// Lock db mutex
|
|
5739
|
+
InstrumentedMutexLock l(&mutex_);
|
|
5740
|
+
cfd->current()->GetSstFilesBoundaryKeys(&smallest_user_key,
|
|
5741
|
+
&largest_user_key);
|
|
5742
|
+
}
|
|
5743
|
+
// all the files has been deleted after DeleteFilesInRanges;
|
|
5744
|
+
if (smallest_user_key.empty() && largest_user_key.empty()) {
|
|
5745
|
+
empty_after_delete = true;
|
|
5746
|
+
} else {
|
|
5747
|
+
const Comparator* const ucmp = column_family->GetComparator();
|
|
5748
|
+
WriteOptions wo;
|
|
5749
|
+
// Delete [smallest_user_key, clip_begin_key)
|
|
5750
|
+
if (ucmp->Compare(smallest_user_key, begin_key) < 0) {
|
|
5751
|
+
status = DeleteRange(wo, column_family, smallest_user_key, begin_key);
|
|
5752
|
+
}
|
|
5753
|
+
|
|
5754
|
+
if (status.ok()) {
|
|
5755
|
+
// Delete [clip_end_key, largest_use_key]
|
|
5756
|
+
if (ucmp->Compare(end_key, largest_user_key) < 0) {
|
|
5757
|
+
status = DeleteRange(wo, column_family, end_key, largest_user_key);
|
|
5758
|
+
if (status.ok()) {
|
|
5759
|
+
status = Delete(wo, column_family, largest_user_key);
|
|
5760
|
+
}
|
|
5761
|
+
}
|
|
5762
|
+
}
|
|
5763
|
+
}
|
|
5764
|
+
}
|
|
5765
|
+
|
|
5766
|
+
if (status.ok() && !empty_after_delete) {
|
|
5767
|
+
// CompactRange delete all the tombstones
|
|
5768
|
+
CompactRangeOptions compact_options;
|
|
5769
|
+
compact_options.exclusive_manual_compaction = true;
|
|
5770
|
+
compact_options.bottommost_level_compaction =
|
|
5771
|
+
BottommostLevelCompaction::kForceOptimized;
|
|
5772
|
+
// We could just compact the ranges [null, clip_begin_key] and
|
|
5773
|
+
// [clip_end_key, null]. But due to how manual compaction calculates the
|
|
5774
|
+
// last level to compact to and that range tombstones are not dropped
|
|
5775
|
+
// during non-bottommost compactions, calling CompactRange() on these two
|
|
5776
|
+
// ranges may not clear all range tombstones.
|
|
5777
|
+
status = CompactRange(compact_options, nullptr, nullptr);
|
|
5778
|
+
}
|
|
5779
|
+
return status;
|
|
5780
|
+
}
|
|
5781
|
+
|
|
5634
5782
|
Status DBImpl::VerifyFileChecksums(const ReadOptions& read_options) {
|
|
5635
5783
|
return VerifyChecksumInternal(read_options, /*use_file_checksum=*/true);
|
|
5636
5784
|
}
|
|
@@ -5648,6 +5796,12 @@ Status DBImpl::VerifyChecksumInternal(const ReadOptions& read_options,
|
|
|
5648
5796
|
|
|
5649
5797
|
Status s;
|
|
5650
5798
|
|
|
5799
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
5800
|
+
s = Status::InvalidArgument(
|
|
5801
|
+
"Cannot verify file checksum with `ReadOptions::io_activity` != "
|
|
5802
|
+
"`Env::IOActivity::kUnknown`");
|
|
5803
|
+
return s;
|
|
5804
|
+
}
|
|
5651
5805
|
if (use_file_checksum) {
|
|
5652
5806
|
FileChecksumGenFactory* const file_checksum_gen_factory =
|
|
5653
5807
|
immutable_db_options_.file_checksum_gen_factory.get();
|
|
@@ -5761,6 +5915,12 @@ Status DBImpl::VerifyFullFileChecksum(const std::string& file_checksum_expected,
|
|
|
5761
5915
|
const std::string& func_name_expected,
|
|
5762
5916
|
const std::string& fname,
|
|
5763
5917
|
const ReadOptions& read_options) {
|
|
5918
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
5919
|
+
return Status::InvalidArgument(
|
|
5920
|
+
"Cannot call VerifyChecksum with `ReadOptions::io_activity` != "
|
|
5921
|
+
"`Env::IOActivity::kUnknown`");
|
|
5922
|
+
}
|
|
5923
|
+
|
|
5764
5924
|
Status s;
|
|
5765
5925
|
if (file_checksum_expected == kUnknownFileChecksum) {
|
|
5766
5926
|
return s;
|
|
@@ -5893,6 +6053,8 @@ Status DBImpl::ReserveFileNumbersBeforeIngestion(
|
|
|
5893
6053
|
ColumnFamilyData* cfd, uint64_t num,
|
|
5894
6054
|
std::unique_ptr<std::list<uint64_t>::iterator>& pending_output_elem,
|
|
5895
6055
|
uint64_t* next_file_number) {
|
|
6056
|
+
// TODO: plumb Env::IOActivity
|
|
6057
|
+
const ReadOptions read_options;
|
|
5896
6058
|
Status s;
|
|
5897
6059
|
SuperVersionContext dummy_sv_ctx(true /* create_superversion */);
|
|
5898
6060
|
assert(nullptr != next_file_number);
|
|
@@ -5910,8 +6072,8 @@ Status DBImpl::ReserveFileNumbersBeforeIngestion(
|
|
|
5910
6072
|
// reuse the file number that has already assigned to the internal file,
|
|
5911
6073
|
// and this will overwrite the external file. To protect the external
|
|
5912
6074
|
// file, we have to make sure the file number will never being reused.
|
|
5913
|
-
s = versions_->LogAndApply(cfd, *cf_options,
|
|
5914
|
-
directories_.GetDbDir());
|
|
6075
|
+
s = versions_->LogAndApply(cfd, *cf_options, read_options, &dummy_edit,
|
|
6076
|
+
&mutex_, directories_.GetDbDir());
|
|
5915
6077
|
if (s.ok()) {
|
|
5916
6078
|
InstallSuperVersionAndScheduleWork(cfd, &dummy_sv_ctx, *cf_options);
|
|
5917
6079
|
}
|
|
@@ -534,6 +534,11 @@ class DBImpl : public DB {
|
|
|
534
534
|
const ExportImportFilesMetaData& metadata,
|
|
535
535
|
ColumnFamilyHandle** handle) override;
|
|
536
536
|
|
|
537
|
+
using DB::ClipColumnFamily;
|
|
538
|
+
virtual Status ClipColumnFamily(ColumnFamilyHandle* column_family,
|
|
539
|
+
const Slice& begin_key,
|
|
540
|
+
const Slice& end_key) override;
|
|
541
|
+
|
|
537
542
|
using DB::VerifyFileChecksums;
|
|
538
543
|
Status VerifyFileChecksums(const ReadOptions& read_options) override;
|
|
539
544
|
|
|
@@ -734,13 +739,17 @@ class DBImpl : public DB {
|
|
|
734
739
|
// max_file_num_to_ignore allows bottom level compaction to filter out newly
|
|
735
740
|
// compacted SST files. Setting max_file_num_to_ignore to kMaxUint64 will
|
|
736
741
|
// disable the filtering
|
|
742
|
+
// If `final_output_level` is not nullptr, it is set to manual compaction's
|
|
743
|
+
// output level if returned status is OK, and it may or may not be set to
|
|
744
|
+
// manual compaction's output level if returned status is not OK.
|
|
737
745
|
Status RunManualCompaction(ColumnFamilyData* cfd, int input_level,
|
|
738
746
|
int output_level,
|
|
739
747
|
const CompactRangeOptions& compact_range_options,
|
|
740
748
|
const Slice* begin, const Slice* end,
|
|
741
749
|
bool exclusive, bool disallow_trivial_move,
|
|
742
750
|
uint64_t max_file_num_to_ignore,
|
|
743
|
-
const std::string& trim_ts
|
|
751
|
+
const std::string& trim_ts,
|
|
752
|
+
int* final_output_level = nullptr);
|
|
744
753
|
|
|
745
754
|
// Return an internal iterator over the current state of the database.
|
|
746
755
|
// The keys of this iterator are internal keys (see format.h).
|
|
@@ -1049,10 +1058,16 @@ class DBImpl : public DB {
|
|
|
1049
1058
|
|
|
1050
1059
|
VersionSet* GetVersionSet() const { return versions_.get(); }
|
|
1051
1060
|
|
|
1052
|
-
// Wait for
|
|
1053
|
-
//
|
|
1054
|
-
//
|
|
1055
|
-
|
|
1061
|
+
// Wait for all flush and compactions jobs to finish. Jobs to wait include the
|
|
1062
|
+
// unscheduled (queued, but not scheduled yet). If the db is shutting down,
|
|
1063
|
+
// Status::ShutdownInProgress will be returned. If PauseBackgroundWork() was
|
|
1064
|
+
// called prior to this, this may potentially wait for unscheduled jobs
|
|
1065
|
+
// indefinitely. abort_on_pause can be set to true to abort, and
|
|
1066
|
+
// Status::Aborted will be returned immediately. This may also never return if
|
|
1067
|
+
// there's sufficient ongoing writes that keeps flush and compaction going
|
|
1068
|
+
// without stopping. The user would have to cease all the writes to DB to make
|
|
1069
|
+
// this eventually return in a stable state.
|
|
1070
|
+
Status WaitForCompact(bool abort_on_pause = false);
|
|
1056
1071
|
|
|
1057
1072
|
#ifndef NDEBUG
|
|
1058
1073
|
// Compact any files in the named level that overlap [*begin, *end]
|
|
@@ -1092,9 +1107,7 @@ class DBImpl : public DB {
|
|
|
1092
1107
|
Status TEST_WaitForFlushMemTable(ColumnFamilyHandle* column_family = nullptr);
|
|
1093
1108
|
|
|
1094
1109
|
// Wait for any compaction
|
|
1095
|
-
|
|
1096
|
-
// is only for the special test of CancelledCompactions
|
|
1097
|
-
Status TEST_WaitForCompact(bool waitUnscheduled = false);
|
|
1110
|
+
Status TEST_WaitForCompact(bool abort_on_pause = false);
|
|
1098
1111
|
|
|
1099
1112
|
// Wait for any background purge
|
|
1100
1113
|
Status TEST_WaitForPurge();
|
|
@@ -2123,7 +2136,7 @@ class DBImpl : public DB {
|
|
|
2123
2136
|
|
|
2124
2137
|
// helper function to call after some of the logs_ were synced
|
|
2125
2138
|
void MarkLogsSynced(uint64_t up_to, bool synced_dir, VersionEdit* edit);
|
|
2126
|
-
Status ApplyWALToManifest(VersionEdit* edit);
|
|
2139
|
+
Status ApplyWALToManifest(const ReadOptions& read_options, VersionEdit* edit);
|
|
2127
2140
|
// WALs with log number up to up_to are not synced successfully.
|
|
2128
2141
|
void MarkLogsNotSynced(uint64_t up_to);
|
|
2129
2142
|
|
|
@@ -2306,7 +2319,7 @@ class DBImpl : public DB {
|
|
|
2306
2319
|
// logfile_number_. With two_write_queues it also protects alive_log_files_,
|
|
2307
2320
|
// and log_empty_. Refer to the definition of each variable below for more
|
|
2308
2321
|
// details.
|
|
2309
|
-
// Note: to avoid
|
|
2322
|
+
// Note: to avoid deadlock, if needed to acquire both log_write_mutex_ and
|
|
2310
2323
|
// mutex_, the order should be first mutex_ and then log_write_mutex_.
|
|
2311
2324
|
InstrumentedMutex log_write_mutex_;
|
|
2312
2325
|
|