@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
|
@@ -650,6 +650,12 @@ class VersionStorageInfo {
|
|
|
650
650
|
// be empty. -1 if it is not level-compaction so it's not applicable.
|
|
651
651
|
int base_level_;
|
|
652
652
|
|
|
653
|
+
// Applies to level compaction when
|
|
654
|
+
// `level_compaction_dynamic_level_bytes=true`. All non-empty levels <=
|
|
655
|
+
// lowest_unnecessary_level_ are not needed and will be drained automatically.
|
|
656
|
+
// -1 if there is no unnecessary level,
|
|
657
|
+
int lowest_unnecessary_level_;
|
|
658
|
+
|
|
653
659
|
double level_multiplier_;
|
|
654
660
|
|
|
655
661
|
// A list for the same set of files that are stored in files_,
|
|
@@ -907,7 +913,7 @@ class Version {
|
|
|
907
913
|
// populates derived data structures. Call without mutex held. It needs to be
|
|
908
914
|
// called before appending the version to the version set.
|
|
909
915
|
void PrepareAppend(const MutableCFOptions& mutable_cf_options,
|
|
910
|
-
bool update_stats);
|
|
916
|
+
const ReadOptions& read_options, bool update_stats);
|
|
911
917
|
|
|
912
918
|
// Reference count management (so Versions do not disappear out from
|
|
913
919
|
// under live iterators)
|
|
@@ -937,7 +943,8 @@ class Version {
|
|
|
937
943
|
// specified in "file_meta". If the file name of "file_meta" is
|
|
938
944
|
// known ahead, passing it by a non-null "fname" can save a
|
|
939
945
|
// file-name conversion.
|
|
940
|
-
Status GetTableProperties(
|
|
946
|
+
Status GetTableProperties(const ReadOptions& read_options,
|
|
947
|
+
std::shared_ptr<const TableProperties>* tp,
|
|
941
948
|
const FileMetaData* file_meta,
|
|
942
949
|
const std::string* fname = nullptr) const;
|
|
943
950
|
|
|
@@ -945,9 +952,12 @@ class Version {
|
|
|
945
952
|
// On success, *props will be populated with all SSTables' table properties.
|
|
946
953
|
// The keys of `props` are the sst file name, the values of `props` are the
|
|
947
954
|
// tables' properties, represented as std::shared_ptr.
|
|
948
|
-
Status GetPropertiesOfAllTables(
|
|
949
|
-
|
|
950
|
-
Status
|
|
955
|
+
Status GetPropertiesOfAllTables(const ReadOptions& read_options,
|
|
956
|
+
TablePropertiesCollection* props);
|
|
957
|
+
Status GetPropertiesOfAllTables(const ReadOptions& read_options,
|
|
958
|
+
TablePropertiesCollection* props, int level);
|
|
959
|
+
Status GetPropertiesOfTablesInRange(const ReadOptions& read_options,
|
|
960
|
+
const Range* range, std::size_t n,
|
|
951
961
|
TablePropertiesCollection* props) const;
|
|
952
962
|
|
|
953
963
|
// Print summary of range delete tombstones in SST files into out_str,
|
|
@@ -959,13 +969,14 @@ class Version {
|
|
|
959
969
|
// On success, "tp" will contains the aggregated table property among
|
|
960
970
|
// the table properties of all sst files in this version.
|
|
961
971
|
Status GetAggregatedTableProperties(
|
|
972
|
+
const ReadOptions& read_options,
|
|
962
973
|
std::shared_ptr<const TableProperties>* tp, int level = -1);
|
|
963
974
|
|
|
964
975
|
uint64_t GetEstimatedActiveKeys() {
|
|
965
976
|
return storage_info_.GetEstimatedActiveKeys();
|
|
966
977
|
}
|
|
967
978
|
|
|
968
|
-
size_t GetMemoryUsageByTableReaders();
|
|
979
|
+
size_t GetMemoryUsageByTableReaders(const ReadOptions& read_options);
|
|
969
980
|
|
|
970
981
|
ColumnFamilyData* cfd() const { return cfd_; }
|
|
971
982
|
|
|
@@ -981,6 +992,9 @@ class Version {
|
|
|
981
992
|
|
|
982
993
|
void GetColumnFamilyMetaData(ColumnFamilyMetaData* cf_meta);
|
|
983
994
|
|
|
995
|
+
void GetSstFilesBoundaryKeys(Slice* smallest_user_key,
|
|
996
|
+
Slice* largest_user_key);
|
|
997
|
+
|
|
984
998
|
uint64_t GetSstFilesSize();
|
|
985
999
|
|
|
986
1000
|
// Retrieves the file_creation_time of the oldest file in the DB.
|
|
@@ -1018,11 +1032,12 @@ class Version {
|
|
|
1018
1032
|
// The helper function of UpdateAccumulatedStats, which may fill the missing
|
|
1019
1033
|
// fields of file_meta from its associated TableProperties.
|
|
1020
1034
|
// Returns true if it does initialize FileMetaData.
|
|
1021
|
-
bool MaybeInitializeFileMetaData(
|
|
1035
|
+
bool MaybeInitializeFileMetaData(const ReadOptions& read_options,
|
|
1036
|
+
FileMetaData* file_meta);
|
|
1022
1037
|
|
|
1023
1038
|
// Update the accumulated stats associated with the current version.
|
|
1024
1039
|
// This accumulated stats will be used in compaction.
|
|
1025
|
-
void UpdateAccumulatedStats();
|
|
1040
|
+
void UpdateAccumulatedStats(const ReadOptions& read_options);
|
|
1026
1041
|
|
|
1027
1042
|
DECLARE_SYNC_AND_ASYNC(
|
|
1028
1043
|
/* ret_type */ Status, /* func_name */ MultiGetFromSST,
|
|
@@ -1130,13 +1145,13 @@ class VersionSet {
|
|
|
1130
1145
|
virtual ~VersionSet();
|
|
1131
1146
|
|
|
1132
1147
|
Status LogAndApplyToDefaultColumnFamily(
|
|
1133
|
-
VersionEdit* edit, InstrumentedMutex* mu,
|
|
1148
|
+
const ReadOptions& read_options, VersionEdit* edit, InstrumentedMutex* mu,
|
|
1134
1149
|
FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
|
|
1135
1150
|
const ColumnFamilyOptions* column_family_options = nullptr) {
|
|
1136
1151
|
ColumnFamilyData* default_cf = GetColumnFamilySet()->GetDefault();
|
|
1137
1152
|
const MutableCFOptions* cf_options =
|
|
1138
1153
|
default_cf->GetLatestMutableCFOptions();
|
|
1139
|
-
return LogAndApply(default_cf, *cf_options, edit, mu,
|
|
1154
|
+
return LogAndApply(default_cf, *cf_options, read_options, edit, mu,
|
|
1140
1155
|
dir_contains_current_file, new_descriptor_log,
|
|
1141
1156
|
column_family_options);
|
|
1142
1157
|
}
|
|
@@ -1149,9 +1164,9 @@ class VersionSet {
|
|
|
1149
1164
|
// REQUIRES: no other thread concurrently calls LogAndApply()
|
|
1150
1165
|
Status LogAndApply(
|
|
1151
1166
|
ColumnFamilyData* column_family_data,
|
|
1152
|
-
const MutableCFOptions& mutable_cf_options,
|
|
1153
|
-
|
|
1154
|
-
bool new_descriptor_log = false,
|
|
1167
|
+
const MutableCFOptions& mutable_cf_options,
|
|
1168
|
+
const ReadOptions& read_options, VersionEdit* edit, InstrumentedMutex* mu,
|
|
1169
|
+
FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
|
|
1155
1170
|
const ColumnFamilyOptions* column_family_options = nullptr) {
|
|
1156
1171
|
autovector<ColumnFamilyData*> cfds;
|
|
1157
1172
|
cfds.emplace_back(column_family_data);
|
|
@@ -1161,8 +1176,8 @@ class VersionSet {
|
|
|
1161
1176
|
autovector<VersionEdit*> edit_list;
|
|
1162
1177
|
edit_list.emplace_back(edit);
|
|
1163
1178
|
edit_lists.emplace_back(edit_list);
|
|
1164
|
-
return LogAndApply(cfds, mutable_cf_options_list,
|
|
1165
|
-
dir_contains_current_file, new_descriptor_log,
|
|
1179
|
+
return LogAndApply(cfds, mutable_cf_options_list, read_options, edit_lists,
|
|
1180
|
+
mu, dir_contains_current_file, new_descriptor_log,
|
|
1166
1181
|
column_family_options);
|
|
1167
1182
|
}
|
|
1168
1183
|
// The batch version. If edit_list.size() > 1, caller must ensure that
|
|
@@ -1170,6 +1185,7 @@ class VersionSet {
|
|
|
1170
1185
|
Status LogAndApply(
|
|
1171
1186
|
ColumnFamilyData* column_family_data,
|
|
1172
1187
|
const MutableCFOptions& mutable_cf_options,
|
|
1188
|
+
const ReadOptions& read_options,
|
|
1173
1189
|
const autovector<VersionEdit*>& edit_list, InstrumentedMutex* mu,
|
|
1174
1190
|
FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
|
|
1175
1191
|
const ColumnFamilyOptions* column_family_options = nullptr,
|
|
@@ -1180,8 +1196,8 @@ class VersionSet {
|
|
|
1180
1196
|
mutable_cf_options_list.emplace_back(&mutable_cf_options);
|
|
1181
1197
|
autovector<autovector<VersionEdit*>> edit_lists;
|
|
1182
1198
|
edit_lists.emplace_back(edit_list);
|
|
1183
|
-
return LogAndApply(cfds, mutable_cf_options_list,
|
|
1184
|
-
dir_contains_current_file, new_descriptor_log,
|
|
1199
|
+
return LogAndApply(cfds, mutable_cf_options_list, read_options, edit_lists,
|
|
1200
|
+
mu, dir_contains_current_file, new_descriptor_log,
|
|
1185
1201
|
column_family_options, {manifest_wcb});
|
|
1186
1202
|
}
|
|
1187
1203
|
|
|
@@ -1191,6 +1207,7 @@ class VersionSet {
|
|
|
1191
1207
|
virtual Status LogAndApply(
|
|
1192
1208
|
const autovector<ColumnFamilyData*>& cfds,
|
|
1193
1209
|
const autovector<const MutableCFOptions*>& mutable_cf_options_list,
|
|
1210
|
+
const ReadOptions& read_options,
|
|
1194
1211
|
const autovector<autovector<VersionEdit*>>& edit_lists,
|
|
1195
1212
|
InstrumentedMutex* mu, FSDirectory* dir_contains_current_file,
|
|
1196
1213
|
bool new_descriptor_log = false,
|
|
@@ -1204,7 +1221,7 @@ class VersionSet {
|
|
|
1204
1221
|
uint64_t* manifest_file_number);
|
|
1205
1222
|
void WakeUpWaitingManifestWriters();
|
|
1206
1223
|
|
|
1207
|
-
// Recover the last saved descriptor from persistent storage.
|
|
1224
|
+
// Recover the last saved descriptor (MANIFEST) from persistent storage.
|
|
1208
1225
|
// If read_only == true, Recover() will not complain if some column families
|
|
1209
1226
|
// are not opened
|
|
1210
1227
|
Status Recover(const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
@@ -1421,7 +1438,8 @@ class VersionSet {
|
|
|
1421
1438
|
// Return the approximate size of data to be scanned for range [start, end)
|
|
1422
1439
|
// in levels [start_level, end_level). If end_level == -1 it will search
|
|
1423
1440
|
// through all non-empty levels
|
|
1424
|
-
uint64_t ApproximateSize(const SizeApproximationOptions& options,
|
|
1441
|
+
uint64_t ApproximateSize(const SizeApproximationOptions& options,
|
|
1442
|
+
const ReadOptions& read_options, Version* v,
|
|
1425
1443
|
const Slice& start, const Slice& end,
|
|
1426
1444
|
int start_level, int end_level,
|
|
1427
1445
|
TableReaderCaller caller);
|
|
@@ -1481,7 +1499,8 @@ class VersionSet {
|
|
|
1481
1499
|
new Version(cfd, this, file_options_, mutable_cf_options, io_tracer_);
|
|
1482
1500
|
|
|
1483
1501
|
constexpr bool update_stats = false;
|
|
1484
|
-
|
|
1502
|
+
const ReadOptions read_options;
|
|
1503
|
+
version->PrepareAppend(mutable_cf_options, read_options, update_stats);
|
|
1485
1504
|
AppendVersion(cfd, version);
|
|
1486
1505
|
}
|
|
1487
1506
|
|
|
@@ -1510,14 +1529,15 @@ class VersionSet {
|
|
|
1510
1529
|
void Reset();
|
|
1511
1530
|
|
|
1512
1531
|
// Returns approximated offset of a key in a file for a given version.
|
|
1513
|
-
uint64_t ApproximateOffsetOf(Version* v,
|
|
1514
|
-
const Slice& key,
|
|
1532
|
+
uint64_t ApproximateOffsetOf(const ReadOptions& read_options, Version* v,
|
|
1533
|
+
const FdWithKeyRange& f, const Slice& key,
|
|
1534
|
+
TableReaderCaller caller);
|
|
1515
1535
|
|
|
1516
1536
|
// Returns approximated data size between start and end keys in a file
|
|
1517
1537
|
// for a given version.
|
|
1518
|
-
uint64_t ApproximateSize(Version* v,
|
|
1519
|
-
const
|
|
1520
|
-
TableReaderCaller caller);
|
|
1538
|
+
uint64_t ApproximateSize(const ReadOptions& read_options, Version* v,
|
|
1539
|
+
const FdWithKeyRange& f, const Slice& start,
|
|
1540
|
+
const Slice& end, TableReaderCaller caller);
|
|
1521
1541
|
|
|
1522
1542
|
struct MutableCFState {
|
|
1523
1543
|
uint64_t log_number;
|
|
@@ -1536,9 +1556,11 @@ class VersionSet {
|
|
|
1536
1556
|
void AppendVersion(ColumnFamilyData* column_family_data, Version* v);
|
|
1537
1557
|
|
|
1538
1558
|
ColumnFamilyData* CreateColumnFamily(const ColumnFamilyOptions& cf_options,
|
|
1559
|
+
const ReadOptions& read_options,
|
|
1539
1560
|
const VersionEdit* edit);
|
|
1540
1561
|
|
|
1541
|
-
Status VerifyFileMetadata(
|
|
1562
|
+
Status VerifyFileMetadata(const ReadOptions& read_options,
|
|
1563
|
+
ColumnFamilyData* cfd, const std::string& fpath,
|
|
1542
1564
|
int level, const FileMetaData& meta);
|
|
1543
1565
|
|
|
1544
1566
|
// Protected by DB mutex.
|
|
@@ -1614,7 +1636,8 @@ class VersionSet {
|
|
|
1614
1636
|
InstrumentedMutex* mu,
|
|
1615
1637
|
FSDirectory* dir_contains_current_file,
|
|
1616
1638
|
bool new_descriptor_log,
|
|
1617
|
-
const ColumnFamilyOptions* new_cf_options
|
|
1639
|
+
const ColumnFamilyOptions* new_cf_options,
|
|
1640
|
+
const ReadOptions& read_options);
|
|
1618
1641
|
|
|
1619
1642
|
void LogAndApplyCFHelper(VersionEdit* edit,
|
|
1620
1643
|
SequenceNumber* max_last_sequence);
|
|
@@ -1666,13 +1689,15 @@ class ReactiveVersionSet : public VersionSet {
|
|
|
1666
1689
|
|
|
1667
1690
|
private:
|
|
1668
1691
|
std::unique_ptr<ManifestTailer> manifest_tailer_;
|
|
1669
|
-
|
|
1692
|
+
// TODO: plumb Env::IOActivity
|
|
1693
|
+
const ReadOptions read_options_;
|
|
1670
1694
|
using VersionSet::LogAndApply;
|
|
1671
1695
|
using VersionSet::Recover;
|
|
1672
1696
|
|
|
1673
1697
|
Status LogAndApply(
|
|
1674
1698
|
const autovector<ColumnFamilyData*>& /*cfds*/,
|
|
1675
1699
|
const autovector<const MutableCFOptions*>& /*mutable_cf_options_list*/,
|
|
1700
|
+
const ReadOptions& /* read_options */,
|
|
1676
1701
|
const autovector<autovector<VersionEdit*>>& /*edit_lists*/,
|
|
1677
1702
|
InstrumentedMutex* /*mu*/, FSDirectory* /*dir_contains_current_file*/,
|
|
1678
1703
|
bool /*new_descriptor_log*/, const ColumnFamilyOptions* /*new_cf_option*/,
|
|
@@ -25,6 +25,7 @@ DEFINE_SYNC_AND_ASYNC(Status, Version::MultiGetFromSST)
|
|
|
25
25
|
StopWatchNano timer(clock_, timer_enabled /* auto_start */);
|
|
26
26
|
s = CO_AWAIT(table_cache_->MultiGet)(
|
|
27
27
|
read_options, *internal_comparator(), *f->file_metadata, &file_range,
|
|
28
|
+
mutable_cf_options_.block_protection_bytes_per_key,
|
|
28
29
|
mutable_cf_options_.prefix_extractor,
|
|
29
30
|
cfd_->internal_stats()->GetFileReadHist(hit_file_level), skip_filters,
|
|
30
31
|
skip_range_deletions, hit_file_level, table_handle);
|
|
@@ -51,7 +51,7 @@ class GenerateLevelFilesBriefTest : public testing::Test {
|
|
|
51
51
|
largest_seq, /* marked_for_compact */ false, Temperature::kUnknown,
|
|
52
52
|
kInvalidBlobFileNumber, kUnknownOldestAncesterTime,
|
|
53
53
|
kUnknownFileCreationTime, kUnknownEpochNumber, kUnknownFileChecksum,
|
|
54
|
-
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
|
|
54
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0);
|
|
55
55
|
files_.push_back(f);
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -163,7 +163,7 @@ class VersionStorageInfoTestBase : public testing::Test {
|
|
|
163
163
|
Temperature::kUnknown, oldest_blob_file_number,
|
|
164
164
|
kUnknownOldestAncesterTime, kUnknownFileCreationTime,
|
|
165
165
|
kUnknownEpochNumber, kUnknownFileChecksum, kUnknownFileChecksumFuncName,
|
|
166
|
-
kNullUniqueId64x2, compensated_range_deletion_size);
|
|
166
|
+
kNullUniqueId64x2, compensated_range_deletion_size, 0);
|
|
167
167
|
vstorage_.AddFile(level, f);
|
|
168
168
|
}
|
|
169
169
|
|
|
@@ -454,6 +454,37 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicWithLargeL0_3) {
|
|
|
454
454
|
ASSERT_EQ(4, vstorage_.CompactionScoreLevel(2));
|
|
455
455
|
}
|
|
456
456
|
|
|
457
|
+
TEST_F(VersionStorageInfoTest, DrainUnnecessaryLevel) {
|
|
458
|
+
ioptions_.level_compaction_dynamic_level_bytes = true;
|
|
459
|
+
mutable_cf_options_.max_bytes_for_level_base = 1000;
|
|
460
|
+
mutable_cf_options_.max_bytes_for_level_multiplier = 10;
|
|
461
|
+
|
|
462
|
+
// Create a few unnecessary levels.
|
|
463
|
+
// See if score is calculated correctly.
|
|
464
|
+
Add(5, 1U, "1", "2", 2000U); // target size 1010000
|
|
465
|
+
Add(4, 2U, "1", "2", 200U); // target size 101000
|
|
466
|
+
// Unnecessary levels
|
|
467
|
+
Add(3, 3U, "1", "2", 100U); // target size 10100
|
|
468
|
+
// Level 2: target size 1010
|
|
469
|
+
Add(1, 4U, "1", "2",
|
|
470
|
+
10U); // target size 1000 = max(base_bytes_min + 1, base_bytes_max)
|
|
471
|
+
|
|
472
|
+
UpdateVersionStorageInfo();
|
|
473
|
+
|
|
474
|
+
ASSERT_EQ(1, vstorage_.base_level());
|
|
475
|
+
ASSERT_EQ(1000, vstorage_.MaxBytesForLevel(1));
|
|
476
|
+
ASSERT_EQ(10100, vstorage_.MaxBytesForLevel(3));
|
|
477
|
+
vstorage_.ComputeCompactionScore(ioptions_, mutable_cf_options_);
|
|
478
|
+
|
|
479
|
+
// Tests that levels 1 and 3 are eligible for compaction.
|
|
480
|
+
// Levels 1 and 3 are much smaller than target size,
|
|
481
|
+
// so size does not contribute to a high compaction score.
|
|
482
|
+
ASSERT_EQ(1, vstorage_.CompactionScoreLevel(0));
|
|
483
|
+
ASSERT_GT(vstorage_.CompactionScore(0), 10);
|
|
484
|
+
ASSERT_EQ(3, vstorage_.CompactionScoreLevel(1));
|
|
485
|
+
ASSERT_GT(vstorage_.CompactionScore(1), 10);
|
|
486
|
+
}
|
|
487
|
+
|
|
457
488
|
TEST_F(VersionStorageInfoTest, EstimateLiveDataSize) {
|
|
458
489
|
// Test whether the overlaps are detected as expected
|
|
459
490
|
Add(1, 1U, "4", "7", 1U); // Perfect overlap with last level
|
|
@@ -1276,9 +1307,9 @@ class VersionSetTestBase {
|
|
|
1276
1307
|
|
|
1277
1308
|
Status LogAndApplyToDefaultCF(VersionEdit& edit) {
|
|
1278
1309
|
mutex_.Lock();
|
|
1279
|
-
Status s =
|
|
1280
|
-
versions_->
|
|
1281
|
-
|
|
1310
|
+
Status s = versions_->LogAndApply(
|
|
1311
|
+
versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
|
|
1312
|
+
read_options_, &edit, &mutex_, nullptr);
|
|
1282
1313
|
mutex_.Unlock();
|
|
1283
1314
|
return s;
|
|
1284
1315
|
}
|
|
@@ -1290,9 +1321,9 @@ class VersionSetTestBase {
|
|
|
1290
1321
|
vedits.push_back(e.get());
|
|
1291
1322
|
}
|
|
1292
1323
|
mutex_.Lock();
|
|
1293
|
-
Status s =
|
|
1294
|
-
versions_->
|
|
1295
|
-
|
|
1324
|
+
Status s = versions_->LogAndApply(
|
|
1325
|
+
versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
|
|
1326
|
+
read_options_, vedits, &mutex_, nullptr);
|
|
1296
1327
|
mutex_.Unlock();
|
|
1297
1328
|
return s;
|
|
1298
1329
|
}
|
|
@@ -1304,7 +1335,7 @@ class VersionSetTestBase {
|
|
|
1304
1335
|
VersionEdit dummy;
|
|
1305
1336
|
ASSERT_OK(versions_->LogAndApply(
|
|
1306
1337
|
versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
|
|
1307
|
-
&dummy, &mutex_, db_directory, new_descriptor_log));
|
|
1338
|
+
read_options_, &dummy, &mutex_, db_directory, new_descriptor_log));
|
|
1308
1339
|
mutex_.Unlock();
|
|
1309
1340
|
}
|
|
1310
1341
|
|
|
@@ -1319,7 +1350,8 @@ class VersionSetTestBase {
|
|
|
1319
1350
|
Status s;
|
|
1320
1351
|
mutex_.Lock();
|
|
1321
1352
|
s = versions_->LogAndApply(/*column_family_data=*/nullptr,
|
|
1322
|
-
MutableCFOptions(cf_options),
|
|
1353
|
+
MutableCFOptions(cf_options), read_options_,
|
|
1354
|
+
&new_cf, &mutex_,
|
|
1323
1355
|
/*db_directory=*/nullptr,
|
|
1324
1356
|
/*new_descriptor_log=*/false, &cf_options);
|
|
1325
1357
|
mutex_.Unlock();
|
|
@@ -1341,6 +1373,7 @@ class VersionSetTestBase {
|
|
|
1341
1373
|
ColumnFamilyOptions cf_options_;
|
|
1342
1374
|
ImmutableOptions immutable_options_;
|
|
1343
1375
|
MutableCFOptions mutable_cf_options_;
|
|
1376
|
+
const ReadOptions read_options_;
|
|
1344
1377
|
std::shared_ptr<Cache> table_cache_;
|
|
1345
1378
|
WriteController write_controller_;
|
|
1346
1379
|
WriteBufferManager write_buffer_manager_;
|
|
@@ -1364,6 +1397,8 @@ class VersionSetTest : public VersionSetTestBase, public testing::Test {
|
|
|
1364
1397
|
TEST_F(VersionSetTest, SameColumnFamilyGroupCommit) {
|
|
1365
1398
|
NewDB();
|
|
1366
1399
|
const int kGroupSize = 5;
|
|
1400
|
+
const ReadOptions read_options;
|
|
1401
|
+
|
|
1367
1402
|
autovector<VersionEdit> edits;
|
|
1368
1403
|
for (int i = 0; i != kGroupSize; ++i) {
|
|
1369
1404
|
edits.emplace_back(VersionEdit());
|
|
@@ -1390,8 +1425,8 @@ TEST_F(VersionSetTest, SameColumnFamilyGroupCommit) {
|
|
|
1390
1425
|
});
|
|
1391
1426
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
1392
1427
|
mutex_.Lock();
|
|
1393
|
-
Status s = versions_->LogAndApply(cfds, all_mutable_cf_options,
|
|
1394
|
-
&mutex_, nullptr);
|
|
1428
|
+
Status s = versions_->LogAndApply(cfds, all_mutable_cf_options, read_options,
|
|
1429
|
+
edit_lists, &mutex_, nullptr);
|
|
1395
1430
|
mutex_.Unlock();
|
|
1396
1431
|
EXPECT_OK(s);
|
|
1397
1432
|
EXPECT_EQ(kGroupSize - 1, count);
|
|
@@ -1591,9 +1626,9 @@ TEST_F(VersionSetTest, ObsoleteBlobFile) {
|
|
|
1591
1626
|
edit.AddBlobFileGarbage(blob_file_number, total_blob_count, total_blob_bytes);
|
|
1592
1627
|
|
|
1593
1628
|
mutex_.Lock();
|
|
1594
|
-
Status s =
|
|
1595
|
-
versions_->
|
|
1596
|
-
|
|
1629
|
+
Status s = versions_->LogAndApply(
|
|
1630
|
+
versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
|
|
1631
|
+
read_options_, &edit, &mutex_, nullptr);
|
|
1597
1632
|
mutex_.Unlock();
|
|
1598
1633
|
|
|
1599
1634
|
ASSERT_OK(s);
|
|
@@ -2211,7 +2246,7 @@ class VersionSetWithTimestampTest : public VersionSetTest {
|
|
|
2211
2246
|
Status s;
|
|
2212
2247
|
mutex_.Lock();
|
|
2213
2248
|
s = versions_->LogAndApply(cfd_, *(cfd_->GetLatestMutableCFOptions()),
|
|
2214
|
-
edits_, &mutex_, nullptr);
|
|
2249
|
+
read_options_, edits_, &mutex_, nullptr);
|
|
2215
2250
|
mutex_.Unlock();
|
|
2216
2251
|
ASSERT_OK(s);
|
|
2217
2252
|
VerifyFullHistoryTsLow(*std::max_element(ts_lbs.begin(), ts_lbs.end()));
|
|
@@ -2221,6 +2256,9 @@ class VersionSetWithTimestampTest : public VersionSetTest {
|
|
|
2221
2256
|
ColumnFamilyData* cfd_{nullptr};
|
|
2222
2257
|
// edits_ must contain and own pointers to heap-alloc VersionEdit objects.
|
|
2223
2258
|
autovector<VersionEdit*> edits_;
|
|
2259
|
+
|
|
2260
|
+
private:
|
|
2261
|
+
const ReadOptions read_options_;
|
|
2224
2262
|
};
|
|
2225
2263
|
|
|
2226
2264
|
const std::string VersionSetWithTimestampTest::kNewCfName("new_cf");
|
|
@@ -2649,6 +2687,8 @@ class VersionSetTestDropOneCF : public VersionSetTestBase,
|
|
|
2649
2687
|
// Repeat the test for i = 1, 2, 3 to simulate dropping the first, middle and
|
|
2650
2688
|
// last column family in an atomic group.
|
|
2651
2689
|
TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
|
|
2690
|
+
const ReadOptions read_options;
|
|
2691
|
+
|
|
2652
2692
|
std::vector<ColumnFamilyDescriptor> column_families;
|
|
2653
2693
|
SequenceNumber last_seqno;
|
|
2654
2694
|
std::unique_ptr<log::Writer> log_writer;
|
|
@@ -2678,7 +2718,7 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
|
|
|
2678
2718
|
mutex_.Lock();
|
|
2679
2719
|
s = versions_->LogAndApply(cfd_to_drop,
|
|
2680
2720
|
*cfd_to_drop->GetLatestMutableCFOptions(),
|
|
2681
|
-
&drop_cf_edit, &mutex_, nullptr);
|
|
2721
|
+
read_options, &drop_cf_edit, &mutex_, nullptr);
|
|
2682
2722
|
mutex_.Unlock();
|
|
2683
2723
|
ASSERT_OK(s);
|
|
2684
2724
|
|
|
@@ -2727,8 +2767,8 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
|
|
|
2727
2767
|
});
|
|
2728
2768
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
2729
2769
|
mutex_.Lock();
|
|
2730
|
-
s = versions_->LogAndApply(cfds, mutable_cf_options_list,
|
|
2731
|
-
nullptr);
|
|
2770
|
+
s = versions_->LogAndApply(cfds, mutable_cf_options_list, read_options,
|
|
2771
|
+
edit_lists, &mutex_, nullptr);
|
|
2732
2772
|
mutex_.Unlock();
|
|
2733
2773
|
ASSERT_OK(s);
|
|
2734
2774
|
ASSERT_EQ(1, called);
|
|
@@ -3256,7 +3296,7 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
|
|
|
3256
3296
|
ikey, 0, 0, false, Temperature::kUnknown, 0, 0,
|
|
3257
3297
|
0, info.epoch_number, kUnknownFileChecksum,
|
|
3258
3298
|
kUnknownFileChecksumFuncName, kNullUniqueId64x2,
|
|
3259
|
-
0);
|
|
3299
|
+
0, 0);
|
|
3260
3300
|
}
|
|
3261
3301
|
}
|
|
3262
3302
|
|
|
@@ -3313,7 +3353,7 @@ TEST_F(VersionSetTestMissingFiles, ManifestFarBehindSst) {
|
|
|
3313
3353
|
file_num, /*file_path_id=*/0, /*file_size=*/12, smallest_ikey,
|
|
3314
3354
|
largest_ikey, 0, 0, false, Temperature::kUnknown, 0, 0, 0,
|
|
3315
3355
|
file_num /* epoch_number */, kUnknownFileChecksum,
|
|
3316
|
-
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
|
|
3356
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0);
|
|
3317
3357
|
added_files.emplace_back(0, meta);
|
|
3318
3358
|
}
|
|
3319
3359
|
WriteFileAdditionAndDeletionToManifest(
|
|
@@ -3374,7 +3414,7 @@ TEST_F(VersionSetTestMissingFiles, ManifestAheadofSst) {
|
|
|
3374
3414
|
file_num, /*file_path_id=*/0, /*file_size=*/12, smallest_ikey,
|
|
3375
3415
|
largest_ikey, 0, 0, false, Temperature::kUnknown, 0, 0, 0,
|
|
3376
3416
|
file_num /* epoch_number */, kUnknownFileChecksum,
|
|
3377
|
-
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
|
|
3417
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0);
|
|
3378
3418
|
added_files.emplace_back(0, meta);
|
|
3379
3419
|
}
|
|
3380
3420
|
WriteFileAdditionAndDeletionToManifest(
|
|
@@ -33,14 +33,15 @@ class OfflineManifestWriter {
|
|
|
33
33
|
/*no_error_if_files_missing*/ true);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
Status LogAndApply(
|
|
36
|
+
Status LogAndApply(const ReadOptions& read_options, ColumnFamilyData* cfd,
|
|
37
|
+
VersionEdit* edit,
|
|
37
38
|
FSDirectory* dir_contains_current_file) {
|
|
38
39
|
// Use `mutex` to imitate a locked DB mutex when calling `LogAndApply()`.
|
|
39
40
|
InstrumentedMutex mutex;
|
|
40
41
|
mutex.Lock();
|
|
41
|
-
Status s = versions_.LogAndApply(
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
Status s = versions_.LogAndApply(
|
|
43
|
+
cfd, *cfd->GetLatestMutableCFOptions(), read_options, edit, &mutex,
|
|
44
|
+
dir_contains_current_file, false /* new_descriptor_log */);
|
|
44
45
|
mutex.Unlock();
|
|
45
46
|
return s;
|
|
46
47
|
}
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
#include "db/wide/wide_column_serialization.h"
|
|
60
60
|
#include "db/write_batch_internal.h"
|
|
61
61
|
#include "monitoring/perf_context_imp.h"
|
|
62
|
-
#include "monitoring/
|
|
62
|
+
#include "monitoring/statistics_impl.h"
|
|
63
63
|
#include "port/lang.h"
|
|
64
64
|
#include "rocksdb/merge_operator.h"
|
|
65
65
|
#include "rocksdb/system_clock.h"
|
|
@@ -2036,6 +2036,7 @@ class MemTableInserter : public WriteBatch::Handler {
|
|
|
2036
2036
|
// key not found in memtable. Do sst get, update, add
|
|
2037
2037
|
SnapshotImpl read_from_snapshot;
|
|
2038
2038
|
read_from_snapshot.number_ = sequence_;
|
|
2039
|
+
// TODO: plumb Env::IOActivity
|
|
2039
2040
|
ReadOptions ropts;
|
|
2040
2041
|
// it's going to be overwritten for sure, so no point caching data block
|
|
2041
2042
|
// containing the old version
|
|
@@ -2480,6 +2481,7 @@ class MemTableInserter : public WriteBatch::Handler {
|
|
|
2480
2481
|
// operations in the same batch.
|
|
2481
2482
|
SnapshotImpl read_from_snapshot;
|
|
2482
2483
|
read_from_snapshot.number_ = sequence_;
|
|
2484
|
+
// TODO: plumb Env::IOActivity
|
|
2483
2485
|
ReadOptions read_options;
|
|
2484
2486
|
read_options.snapshot = &read_from_snapshot;
|
|
2485
2487
|
|
|
@@ -11,6 +11,7 @@ add_executable(db_stress${ARTIFACT_SUFFIX}
|
|
|
11
11
|
db_stress_test_base.cc
|
|
12
12
|
db_stress_tool.cc
|
|
13
13
|
expected_state.cc
|
|
14
|
+
expected_value.cc
|
|
14
15
|
multi_ops_txns_stress.cc
|
|
15
16
|
no_batched_ops_stress.cc)
|
|
16
17
|
target_link_libraries(db_stress${ARTIFACT_SUFFIX} ${ROCKSDB_LIB} ${THIRDPARTY_LIBS})
|