@nxtedition/rocksdb 15.4.0 → 15.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +24 -19
- package/cache.js +1 -1
- package/chained-batch.js +12 -3
- package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
- package/deps/rocksdb/rocksdb/BUCK +42 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
- package/deps/rocksdb/rocksdb/Makefile +59 -32
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
- package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
- package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
- package/deps/rocksdb/rocksdb/db/builder.h +7 -0
- package/deps/rocksdb/rocksdb/db/c.cc +373 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
- package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
- package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
- package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
- package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
- package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
- package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
- package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
- package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
- package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
- package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
- package/deps/rocksdb/rocksdb/env/env.cc +1 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
- package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
- package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
- package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
- package/deps/rocksdb/rocksdb/folly.mk +22 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
- package/deps/rocksdb/rocksdb/options/options.cc +5 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
- package/deps/rocksdb/rocksdb/port/lang.h +4 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
- package/deps/rocksdb/rocksdb/src.mk +12 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
- package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
- package/deps/rocksdb/rocksdb/table/format.cc +27 -15
- package/deps/rocksdb/rocksdb/table/format.h +41 -15
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
- package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
- package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
- package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
- package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
- package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
- package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
- package/deps/rocksdb/rocksdb/util/coding.h +14 -27
- package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
- package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
- package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
- package/deps/rocksdb/rocksdb/util/math.h +3 -1
- package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
- package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
- package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
- package/deps/rocksdb/rocksdb/util/status.cc +3 -1
- package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
- package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
- package/deps/rocksdb/rocksdb.gyp +7 -0
- package/index.js +11 -2
- package/iterator.js +15 -7
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
#include "db/db_test_util.h"
|
|
17
17
|
#include "port/port.h"
|
|
18
18
|
#include "port/stack_trace.h"
|
|
19
|
+
#include "rocksdb/io_dispatcher.h"
|
|
19
20
|
#include "rocksdb/iostats_context.h"
|
|
20
21
|
#include "rocksdb/perf_context.h"
|
|
21
22
|
#include "table/block_based/flush_block_policy_impl.h"
|
|
@@ -1841,11 +1842,6 @@ class SliceTransformLimitedDomainGeneric : public SliceTransform {
|
|
|
1841
1842
|
// prefix will be x????
|
|
1842
1843
|
return src.size() >= 1;
|
|
1843
1844
|
}
|
|
1844
|
-
|
|
1845
|
-
bool InRange(const Slice& dst) const override {
|
|
1846
|
-
// prefix will be x????
|
|
1847
|
-
return dst.size() == 1;
|
|
1848
|
-
}
|
|
1849
1845
|
};
|
|
1850
1846
|
|
|
1851
1847
|
TEST_P(DBIteratorTest, IterSeekForPrevCrossingFiles) {
|
|
@@ -2573,7 +2569,7 @@ TEST_P(DBIteratorTest, AutoRefreshIterator) {
|
|
|
2573
2569
|
ReadOptions read_options;
|
|
2574
2570
|
std::unique_ptr<ManagedSnapshot> snapshot = nullptr;
|
|
2575
2571
|
if (explicit_snapshot) {
|
|
2576
|
-
snapshot = std::make_unique<ManagedSnapshot>(db_);
|
|
2572
|
+
snapshot = std::make_unique<ManagedSnapshot>(db_.get());
|
|
2577
2573
|
}
|
|
2578
2574
|
read_options.snapshot =
|
|
2579
2575
|
explicit_snapshot ? snapshot->snapshot() : nullptr;
|
|
@@ -5027,6 +5023,375 @@ TEST_P(DBMultiScanIteratorTest, AsyncPrefetchWithExternalFileIngestion) {
|
|
|
5027
5023
|
ASSERT_EQ(total_keys, 400);
|
|
5028
5024
|
iter.reset();
|
|
5029
5025
|
}
|
|
5026
|
+
|
|
5027
|
+
TEST_P(DBMultiScanIteratorTest, IODispatcherStatsVerification) {
|
|
5028
|
+
// Test that verifies all IOs go through the IODispatcher by checking stats
|
|
5029
|
+
auto options = CurrentOptions();
|
|
5030
|
+
options.target_file_size_base = 1 << 15; // 32KiB
|
|
5031
|
+
options.compaction_style = kCompactionStyleUniversal;
|
|
5032
|
+
options.num_levels = 50;
|
|
5033
|
+
options.compression = kNoCompression;
|
|
5034
|
+
DestroyAndReopen(options);
|
|
5035
|
+
|
|
5036
|
+
Random rnd(307);
|
|
5037
|
+
|
|
5038
|
+
// Create data - enough to create multiple data blocks
|
|
5039
|
+
for (int i = 0; i < 500; ++i) {
|
|
5040
|
+
std::stringstream ss;
|
|
5041
|
+
ss << "k" << std::setw(5) << std::setfill('0') << i;
|
|
5042
|
+
ASSERT_OK(Put(ss.str(), rnd.RandomString(1 << 10))); // 1KiB values
|
|
5043
|
+
}
|
|
5044
|
+
ASSERT_OK(Flush());
|
|
5045
|
+
ASSERT_OK(db_->CompactRange({}, nullptr, nullptr));
|
|
5046
|
+
|
|
5047
|
+
// Set up scan ranges
|
|
5048
|
+
std::vector<std::string> key_ranges({"k00000", "k00200", "k00300", "k00400"});
|
|
5049
|
+
ReadOptions ro;
|
|
5050
|
+
ro.fill_cache = GetParam();
|
|
5051
|
+
|
|
5052
|
+
ColumnFamilyHandle* cfh = dbfull()->DefaultColumnFamily();
|
|
5053
|
+
|
|
5054
|
+
// Create a tracking IODispatcher to verify IO statistics
|
|
5055
|
+
auto tracking_dispatcher = std::make_shared<TrackingIODispatcher>();
|
|
5056
|
+
|
|
5057
|
+
MultiScanArgs scan_options(BytewiseComparator());
|
|
5058
|
+
scan_options.use_async_io = false; // Use sync IO for predictable stats
|
|
5059
|
+
scan_options.io_dispatcher = tracking_dispatcher;
|
|
5060
|
+
scan_options.insert(key_ranges[0], key_ranges[1]);
|
|
5061
|
+
scan_options.insert(key_ranges[2], key_ranges[3]);
|
|
5062
|
+
|
|
5063
|
+
std::unique_ptr<MultiScan> iter =
|
|
5064
|
+
dbfull()->NewMultiScan(ro, cfh, scan_options);
|
|
5065
|
+
ASSERT_NE(iter, nullptr);
|
|
5066
|
+
|
|
5067
|
+
// Scan through all data
|
|
5068
|
+
int total_keys = 0;
|
|
5069
|
+
try {
|
|
5070
|
+
for (auto range : *iter) {
|
|
5071
|
+
for (auto it : range) {
|
|
5072
|
+
it.first.ToString();
|
|
5073
|
+
total_keys++;
|
|
5074
|
+
}
|
|
5075
|
+
}
|
|
5076
|
+
} catch (MultiScanException& ex) {
|
|
5077
|
+
ASSERT_NOK(ex.status());
|
|
5078
|
+
std::cerr << "Iterator returned status " << ex.what();
|
|
5079
|
+
abort();
|
|
5080
|
+
} catch (std::logic_error& ex) {
|
|
5081
|
+
std::cerr << "Iterator returned logic error " << ex.what();
|
|
5082
|
+
abort();
|
|
5083
|
+
}
|
|
5084
|
+
|
|
5085
|
+
// We scanned ~200 keys in range 1 and ~100 keys in range 2
|
|
5086
|
+
ASSERT_EQ(total_keys, 300);
|
|
5087
|
+
|
|
5088
|
+
// Verify that IO operations went through the IODispatcher
|
|
5089
|
+
// The total IO operations should be > 0 (either sync reads, async reads, or
|
|
5090
|
+
// cache hits)
|
|
5091
|
+
uint64_t total_ops = tracking_dispatcher->GetTotalIOOperations();
|
|
5092
|
+
ASSERT_GT(total_ops, 0) << "Expected some IO operations through IODispatcher";
|
|
5093
|
+
|
|
5094
|
+
// Verify that we have at least one ReadSet created
|
|
5095
|
+
ASSERT_GT(tracking_dispatcher->GetReadSets().size(), 0)
|
|
5096
|
+
<< "Expected at least one ReadSet to be created";
|
|
5097
|
+
|
|
5098
|
+
// Since we used sync IO, we should have sync reads (or cache hits if cached)
|
|
5099
|
+
uint64_t sync_reads = tracking_dispatcher->GetTotalSyncReads();
|
|
5100
|
+
uint64_t cache_hits = tracking_dispatcher->GetTotalCacheHits();
|
|
5101
|
+
ASSERT_GT(sync_reads + cache_hits, 0)
|
|
5102
|
+
<< "Expected sync reads or cache hits for sync IO mode";
|
|
5103
|
+
|
|
5104
|
+
iter.reset();
|
|
5105
|
+
}
|
|
5106
|
+
|
|
5107
|
+
TEST_P(DBMultiScanIteratorTest, IODispatcherPrefetchKnownBlocks) {
|
|
5108
|
+
// Test that verifies we prefetch a known/expected number of blocks.
|
|
5109
|
+
// Uses FlushBlockEveryKeyPolicyFactory to create exactly one block per key,
|
|
5110
|
+
// making the block count predictable and verifiable.
|
|
5111
|
+
auto options = CurrentOptions();
|
|
5112
|
+
options.compression = kNoCompression;
|
|
5113
|
+
options.disable_auto_compactions = true;
|
|
5114
|
+
|
|
5115
|
+
// Configure to create exactly one block per key
|
|
5116
|
+
BlockBasedTableOptions table_options;
|
|
5117
|
+
table_options.flush_block_policy_factory =
|
|
5118
|
+
std::make_shared<FlushBlockEveryKeyPolicyFactory>();
|
|
5119
|
+
// Use a block cache (required by IODispatcher), but use a fresh one
|
|
5120
|
+
// that won't have any cached data
|
|
5121
|
+
table_options.block_cache = NewLRUCache(10 * 1024 * 1024); // 10MB cache
|
|
5122
|
+
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
5123
|
+
DestroyAndReopen(options);
|
|
5124
|
+
|
|
5125
|
+
// Create exactly 100 keys, each in its own block
|
|
5126
|
+
const int kNumKeys = 100;
|
|
5127
|
+
const int kValueSize = 100; // Fixed value size for predictability
|
|
5128
|
+
std::string value(kValueSize, 'v');
|
|
5129
|
+
|
|
5130
|
+
for (int i = 0; i < kNumKeys; ++i) {
|
|
5131
|
+
std::stringstream ss;
|
|
5132
|
+
ss << "k" << std::setw(3) << std::setfill('0') << i;
|
|
5133
|
+
ASSERT_OK(Put(ss.str(), value));
|
|
5134
|
+
}
|
|
5135
|
+
ASSERT_OK(Flush());
|
|
5136
|
+
|
|
5137
|
+
ColumnFamilyHandle* cfh = dbfull()->DefaultColumnFamily();
|
|
5138
|
+
|
|
5139
|
+
// Create a tracking IODispatcher to verify IO statistics
|
|
5140
|
+
auto tracking_dispatcher = std::make_shared<TrackingIODispatcher>();
|
|
5141
|
+
|
|
5142
|
+
// Define scan ranges with known block counts:
|
|
5143
|
+
// Range 1: k000 to k020 (20 keys = 20 blocks)
|
|
5144
|
+
// Range 2: k050 to k060 (10 keys = 10 blocks)
|
|
5145
|
+
// Total expected blocks to read: 30
|
|
5146
|
+
MultiScanArgs scan_options(BytewiseComparator());
|
|
5147
|
+
scan_options.use_async_io = false; // Use sync IO for predictable stats
|
|
5148
|
+
scan_options.io_dispatcher = tracking_dispatcher;
|
|
5149
|
+
scan_options.insert("k000", "k020");
|
|
5150
|
+
scan_options.insert("k050", "k060");
|
|
5151
|
+
|
|
5152
|
+
ReadOptions ro;
|
|
5153
|
+
ro.fill_cache = false; // Don't fill cache, ensure fresh reads
|
|
5154
|
+
|
|
5155
|
+
std::unique_ptr<MultiScan> iter =
|
|
5156
|
+
dbfull()->NewMultiScan(ro, cfh, scan_options);
|
|
5157
|
+
ASSERT_NE(iter, nullptr);
|
|
5158
|
+
|
|
5159
|
+
// Scan through all data and count keys
|
|
5160
|
+
int total_keys = 0;
|
|
5161
|
+
try {
|
|
5162
|
+
for (auto range : *iter) {
|
|
5163
|
+
for (auto it : range) {
|
|
5164
|
+
it.first.ToString();
|
|
5165
|
+
total_keys++;
|
|
5166
|
+
}
|
|
5167
|
+
}
|
|
5168
|
+
} catch (MultiScanException& ex) {
|
|
5169
|
+
ASSERT_NOK(ex.status());
|
|
5170
|
+
std::cerr << "Iterator returned status " << ex.what();
|
|
5171
|
+
abort();
|
|
5172
|
+
} catch (std::logic_error& ex) {
|
|
5173
|
+
std::cerr << "Iterator returned logic error " << ex.what();
|
|
5174
|
+
abort();
|
|
5175
|
+
}
|
|
5176
|
+
|
|
5177
|
+
// Verify we scanned the expected number of keys
|
|
5178
|
+
// Range 1: k000-k019 = 20 keys, Range 2: k050-k059 = 10 keys
|
|
5179
|
+
ASSERT_EQ(total_keys, 30) << "Expected 30 keys from two ranges";
|
|
5180
|
+
|
|
5181
|
+
// Verify IODispatcher statistics
|
|
5182
|
+
uint64_t total_ops = tracking_dispatcher->GetTotalIOOperations();
|
|
5183
|
+
uint64_t sync_reads = tracking_dispatcher->GetTotalSyncReads();
|
|
5184
|
+
|
|
5185
|
+
// We should have at least as many IO operations as blocks we need to read
|
|
5186
|
+
// (could be more due to index/filter blocks)
|
|
5187
|
+
ASSERT_GE(total_ops, 30)
|
|
5188
|
+
<< "Expected at least 30 IO operations for 30 data blocks";
|
|
5189
|
+
|
|
5190
|
+
// Since cache is fresh and fill_cache=false, all should be sync reads
|
|
5191
|
+
ASSERT_GE(sync_reads, 30)
|
|
5192
|
+
<< "Expected at least 30 sync reads for 30 data blocks";
|
|
5193
|
+
|
|
5194
|
+
// Verify we created ReadSets (one per range)
|
|
5195
|
+
size_t num_readsets = tracking_dispatcher->GetReadSets().size();
|
|
5196
|
+
ASSERT_GE(num_readsets, 1) << "Expected at least one ReadSet";
|
|
5197
|
+
|
|
5198
|
+
// Log the stats for debugging
|
|
5199
|
+
std::cout << "IODispatcher Stats: total_ops=" << total_ops
|
|
5200
|
+
<< ", sync_reads=" << sync_reads
|
|
5201
|
+
<< ", async_reads=" << tracking_dispatcher->GetTotalAsyncReads()
|
|
5202
|
+
<< ", cache_hits=" << tracking_dispatcher->GetTotalCacheHits()
|
|
5203
|
+
<< ", readsets=" << num_readsets << std::endl;
|
|
5204
|
+
|
|
5205
|
+
iter.reset();
|
|
5206
|
+
}
|
|
5207
|
+
|
|
5208
|
+
TEST_P(DBMultiScanIteratorTest, IODispatcherCacheHitVerification) {
|
|
5209
|
+
// Test that verifies cache hits are properly tracked through IODispatcher.
|
|
5210
|
+
// First scan populates cache, second scan should show cache hits.
|
|
5211
|
+
auto options = CurrentOptions();
|
|
5212
|
+
options.compression = kNoCompression;
|
|
5213
|
+
options.disable_auto_compactions = true;
|
|
5214
|
+
|
|
5215
|
+
BlockBasedTableOptions table_options;
|
|
5216
|
+
table_options.flush_block_policy_factory =
|
|
5217
|
+
std::make_shared<FlushBlockEveryKeyPolicyFactory>();
|
|
5218
|
+
// Enable block cache with enough space for all blocks
|
|
5219
|
+
table_options.block_cache = NewLRUCache(10 * 1024 * 1024); // 10MB cache
|
|
5220
|
+
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
5221
|
+
DestroyAndReopen(options);
|
|
5222
|
+
|
|
5223
|
+
// Create 50 keys, each in its own block
|
|
5224
|
+
const int kNumKeys = 50;
|
|
5225
|
+
std::string value(100, 'v');
|
|
5226
|
+
|
|
5227
|
+
for (int i = 0; i < kNumKeys; ++i) {
|
|
5228
|
+
std::stringstream ss;
|
|
5229
|
+
ss << "k" << std::setw(3) << std::setfill('0') << i;
|
|
5230
|
+
ASSERT_OK(Put(ss.str(), value));
|
|
5231
|
+
}
|
|
5232
|
+
ASSERT_OK(Flush());
|
|
5233
|
+
|
|
5234
|
+
ColumnFamilyHandle* cfh = dbfull()->DefaultColumnFamily();
|
|
5235
|
+
|
|
5236
|
+
// First scan: populate the cache
|
|
5237
|
+
{
|
|
5238
|
+
auto dispatcher1 = std::make_shared<TrackingIODispatcher>();
|
|
5239
|
+
MultiScanArgs scan_options(BytewiseComparator());
|
|
5240
|
+
scan_options.use_async_io = false;
|
|
5241
|
+
scan_options.io_dispatcher = dispatcher1;
|
|
5242
|
+
scan_options.insert("k000", "k025"); // 25 keys
|
|
5243
|
+
|
|
5244
|
+
ReadOptions ro;
|
|
5245
|
+
ro.fill_cache = true; // Fill cache on first scan
|
|
5246
|
+
|
|
5247
|
+
std::unique_ptr<MultiScan> iter =
|
|
5248
|
+
dbfull()->NewMultiScan(ro, cfh, scan_options);
|
|
5249
|
+
ASSERT_NE(iter, nullptr);
|
|
5250
|
+
|
|
5251
|
+
int count = 0;
|
|
5252
|
+
try {
|
|
5253
|
+
for (auto range : *iter) {
|
|
5254
|
+
for (auto it : range) {
|
|
5255
|
+
it.first.ToString();
|
|
5256
|
+
count++;
|
|
5257
|
+
}
|
|
5258
|
+
}
|
|
5259
|
+
} catch (MultiScanException& ex) {
|
|
5260
|
+
FAIL() << "First scan failed: " << ex.what();
|
|
5261
|
+
}
|
|
5262
|
+
ASSERT_EQ(count, 25);
|
|
5263
|
+
|
|
5264
|
+
// First scan should have sync reads (cache was empty)
|
|
5265
|
+
uint64_t first_sync = dispatcher1->GetTotalSyncReads();
|
|
5266
|
+
ASSERT_GE(first_sync, 25) << "First scan should have sync reads";
|
|
5267
|
+
|
|
5268
|
+
std::cout << "First scan stats: sync_reads=" << first_sync
|
|
5269
|
+
<< ", cache_hits=" << dispatcher1->GetTotalCacheHits()
|
|
5270
|
+
<< std::endl;
|
|
5271
|
+
}
|
|
5272
|
+
|
|
5273
|
+
// Second scan: should get cache hits
|
|
5274
|
+
{
|
|
5275
|
+
auto dispatcher2 = std::make_shared<TrackingIODispatcher>();
|
|
5276
|
+
MultiScanArgs scan_options(BytewiseComparator());
|
|
5277
|
+
scan_options.use_async_io = false;
|
|
5278
|
+
scan_options.io_dispatcher = dispatcher2;
|
|
5279
|
+
scan_options.insert("k000", "k025"); // Same range as before
|
|
5280
|
+
|
|
5281
|
+
ReadOptions ro;
|
|
5282
|
+
ro.fill_cache = true;
|
|
5283
|
+
|
|
5284
|
+
std::unique_ptr<MultiScan> iter =
|
|
5285
|
+
dbfull()->NewMultiScan(ro, cfh, scan_options);
|
|
5286
|
+
ASSERT_NE(iter, nullptr);
|
|
5287
|
+
|
|
5288
|
+
int count = 0;
|
|
5289
|
+
try {
|
|
5290
|
+
for (auto range : *iter) {
|
|
5291
|
+
for (auto it : range) {
|
|
5292
|
+
it.first.ToString();
|
|
5293
|
+
count++;
|
|
5294
|
+
}
|
|
5295
|
+
}
|
|
5296
|
+
} catch (MultiScanException& ex) {
|
|
5297
|
+
FAIL() << "Second scan failed: " << ex.what();
|
|
5298
|
+
}
|
|
5299
|
+
ASSERT_EQ(count, 25);
|
|
5300
|
+
|
|
5301
|
+
// Second scan should have cache hits (blocks were cached in first scan)
|
|
5302
|
+
uint64_t second_cache_hits = dispatcher2->GetTotalCacheHits();
|
|
5303
|
+
uint64_t second_sync = dispatcher2->GetTotalSyncReads();
|
|
5304
|
+
|
|
5305
|
+
std::cout << "Second scan stats: sync_reads=" << second_sync
|
|
5306
|
+
<< ", cache_hits=" << second_cache_hits << std::endl;
|
|
5307
|
+
|
|
5308
|
+
// We expect cache hits on the second scan for data blocks
|
|
5309
|
+
// Note: Some blocks might still need sync reads (e.g., if cache was
|
|
5310
|
+
// evicted)
|
|
5311
|
+
ASSERT_GE(second_cache_hits, 20)
|
|
5312
|
+
<< "Second scan should have cache hits for most blocks";
|
|
5313
|
+
}
|
|
5314
|
+
}
|
|
5315
|
+
|
|
5316
|
+
TEST_P(DBMultiScanIteratorTest, WastedBlocksTracking) {
|
|
5317
|
+
// Test that verifies wasted prefetch blocks are properly tracked.
|
|
5318
|
+
// When blocks are prefetched but skipped (e.g., due to seek), they should
|
|
5319
|
+
// be counted as wasted and recorded to MULTISCAN_PREFETCH_BLOCKS_WASTED.
|
|
5320
|
+
auto options = CurrentOptions();
|
|
5321
|
+
options.compression = kNoCompression;
|
|
5322
|
+
options.disable_auto_compactions = true;
|
|
5323
|
+
options.statistics = CreateDBStatistics();
|
|
5324
|
+
|
|
5325
|
+
BlockBasedTableOptions table_options;
|
|
5326
|
+
table_options.flush_block_policy_factory =
|
|
5327
|
+
std::make_shared<FlushBlockEveryKeyPolicyFactory>();
|
|
5328
|
+
table_options.block_cache = NewLRUCache(10 * 1024 * 1024); // 10MB cache
|
|
5329
|
+
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
5330
|
+
DestroyAndReopen(options);
|
|
5331
|
+
|
|
5332
|
+
// Create 100 keys, each in its own block
|
|
5333
|
+
const int kNumKeys = 100;
|
|
5334
|
+
std::string value(100, 'v');
|
|
5335
|
+
|
|
5336
|
+
for (int i = 0; i < kNumKeys; ++i) {
|
|
5337
|
+
std::stringstream ss;
|
|
5338
|
+
ss << "k" << std::setw(3) << std::setfill('0') << i;
|
|
5339
|
+
ASSERT_OK(Put(ss.str(), value));
|
|
5340
|
+
}
|
|
5341
|
+
ASSERT_OK(Flush());
|
|
5342
|
+
ASSERT_OK(db_->CompactRange({}, nullptr, nullptr));
|
|
5343
|
+
|
|
5344
|
+
ColumnFamilyHandle* cfh = dbfull()->DefaultColumnFamily();
|
|
5345
|
+
|
|
5346
|
+
// Reset the wasted blocks counter before test
|
|
5347
|
+
options.statistics->setTickerCount(MULTISCAN_PREFETCH_BLOCKS_WASTED, 0);
|
|
5348
|
+
|
|
5349
|
+
// Set up MultiScan with two non-contiguous ranges:
|
|
5350
|
+
// Range 1: k000-k020 (20 keys/blocks)
|
|
5351
|
+
// Range 2: k050-k070 (20 keys/blocks)
|
|
5352
|
+
// The blocks between k020-k050 (30 blocks) should be wasted if prefetched
|
|
5353
|
+
MultiScanArgs scan_options(BytewiseComparator());
|
|
5354
|
+
scan_options.use_async_io = false;
|
|
5355
|
+
scan_options.insert("k000", "k020");
|
|
5356
|
+
scan_options.insert("k050", "k070");
|
|
5357
|
+
|
|
5358
|
+
ReadOptions ro;
|
|
5359
|
+
ro.fill_cache = GetParam();
|
|
5360
|
+
|
|
5361
|
+
{
|
|
5362
|
+
std::unique_ptr<MultiScan> iter =
|
|
5363
|
+
dbfull()->NewMultiScan(ro, cfh, scan_options);
|
|
5364
|
+
ASSERT_NE(iter, nullptr);
|
|
5365
|
+
|
|
5366
|
+
int count = 0;
|
|
5367
|
+
try {
|
|
5368
|
+
for (auto range : *iter) {
|
|
5369
|
+
for (auto it : range) {
|
|
5370
|
+
it.first.ToString();
|
|
5371
|
+
count++;
|
|
5372
|
+
}
|
|
5373
|
+
}
|
|
5374
|
+
} catch (MultiScanException& ex) {
|
|
5375
|
+
FAIL() << "Scan failed: " << ex.what();
|
|
5376
|
+
}
|
|
5377
|
+
|
|
5378
|
+
// We should have scanned 40 keys total (20 + 20)
|
|
5379
|
+
ASSERT_EQ(count, 40);
|
|
5380
|
+
} // Iterator destroyed here, wasted blocks recorded
|
|
5381
|
+
|
|
5382
|
+
// Check that wasted blocks were recorded
|
|
5383
|
+
// The exact count depends on how many blocks were prefetched between ranges
|
|
5384
|
+
uint64_t wasted =
|
|
5385
|
+
options.statistics->getTickerCount(MULTISCAN_PREFETCH_BLOCKS_WASTED);
|
|
5386
|
+
|
|
5387
|
+
// We expect some wasted blocks due to the gap between ranges
|
|
5388
|
+
// The exact number depends on prefetch behavior, but should be > 0
|
|
5389
|
+
// if blocks between k020-k050 were prefetched
|
|
5390
|
+
std::cout << "Wasted blocks: " << wasted << std::endl;
|
|
5391
|
+
|
|
5392
|
+
// Note: The test verifies the tracking mechanism works.
|
|
5393
|
+
// The actual count depends on prefetch heuristics which may vary.
|
|
5394
|
+
}
|
|
5030
5395
|
} // namespace ROCKSDB_NAMESPACE
|
|
5031
5396
|
|
|
5032
5397
|
int main(int argc, char** argv) {
|
|
@@ -180,13 +180,15 @@ TEST_F(DBTestXactLogIterator, TransactionLogIteratorCheckWhenArchive) {
|
|
|
180
180
|
|
|
181
181
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
|
|
182
182
|
ASSERT_OK(dbfull()->Flush(FlushOptions(), cf));
|
|
183
|
+
// Try lots of things to ensure callback is triggered
|
|
184
|
+
ASSERT_OK(dbfull()->TEST_SwitchWAL());
|
|
185
|
+
ASSERT_OK(dbfull()->TEST_WaitForBackgroundWork());
|
|
186
|
+
ASSERT_OK(dbfull()->TEST_WaitForPurge());
|
|
183
187
|
delete cf;
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
188
|
+
ASSERT_TRUE(callback_hit.LoadRelaxed());
|
|
189
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
190
|
+
Close();
|
|
187
191
|
} while (ChangeCompactOptions());
|
|
188
|
-
Close();
|
|
189
|
-
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
190
192
|
}
|
|
191
193
|
#endif
|
|
192
194
|
|
|
@@ -67,7 +67,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, OpenClose) {
|
|
|
67
67
|
options.db_paths = {{data_path_0_, 2048}, {data_path_1_, 2048}};
|
|
68
68
|
|
|
69
69
|
for (int i = 0; i < 2; i++) {
|
|
70
|
-
DB
|
|
70
|
+
std::unique_ptr<DB> db;
|
|
71
71
|
if (!i) {
|
|
72
72
|
printf("Open\n");
|
|
73
73
|
ASSERT_OK(DB::Open(options, dbname_, &db));
|
|
@@ -82,7 +82,6 @@ TEST_F(DBLogicalBlockSizeCacheTest, OpenClose) {
|
|
|
82
82
|
ASSERT_EQ(1, cache_->GetRefCount(data_path_1_));
|
|
83
83
|
ASSERT_OK(db->Close());
|
|
84
84
|
ASSERT_EQ(0, cache_->Size());
|
|
85
|
-
delete db;
|
|
86
85
|
}
|
|
87
86
|
ASSERT_OK(DestroyDB(dbname_, options, {}));
|
|
88
87
|
}
|
|
@@ -95,7 +94,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, OpenDelete) {
|
|
|
95
94
|
options.env = env_.get();
|
|
96
95
|
|
|
97
96
|
for (int i = 0; i < 2; i++) {
|
|
98
|
-
DB
|
|
97
|
+
std::unique_ptr<DB> db;
|
|
99
98
|
if (!i) {
|
|
100
99
|
printf("Open\n");
|
|
101
100
|
ASSERT_OK(DB::Open(options, dbname_, &db));
|
|
@@ -106,7 +105,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, OpenDelete) {
|
|
|
106
105
|
ASSERT_EQ(1, cache_->Size());
|
|
107
106
|
ASSERT_TRUE(cache_->Contains(dbname_));
|
|
108
107
|
ASSERT_EQ(1, cache_->GetRefCount(dbname_));
|
|
109
|
-
|
|
108
|
+
db.reset();
|
|
110
109
|
ASSERT_EQ(0, cache_->Size());
|
|
111
110
|
}
|
|
112
111
|
ASSERT_OK(DestroyDB(dbname_, options, {}));
|
|
@@ -122,7 +121,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, CreateColumnFamily) {
|
|
|
122
121
|
ColumnFamilyOptions cf_options;
|
|
123
122
|
cf_options.cf_paths = {{cf_path_0_, 1024}, {cf_path_1_, 2048}};
|
|
124
123
|
|
|
125
|
-
DB
|
|
124
|
+
std::unique_ptr<DB> db;
|
|
126
125
|
ASSERT_OK(DB::Open(options, dbname_, &db));
|
|
127
126
|
ASSERT_EQ(1, cache_->Size());
|
|
128
127
|
ASSERT_TRUE(cache_->Contains(dbname_));
|
|
@@ -153,7 +152,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, CreateColumnFamily) {
|
|
|
153
152
|
ASSERT_TRUE(cache_->Contains(dbname_));
|
|
154
153
|
ASSERT_EQ(1, cache_->GetRefCount(dbname_));
|
|
155
154
|
|
|
156
|
-
|
|
155
|
+
db.reset();
|
|
157
156
|
ASSERT_EQ(0, cache_->Size());
|
|
158
157
|
ASSERT_OK(DestroyDB(dbname_, options, {{"cf", cf_options}}));
|
|
159
158
|
}
|
|
@@ -173,7 +172,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, CreateColumnFamilies) {
|
|
|
173
172
|
ColumnFamilyOptions cf_options;
|
|
174
173
|
cf_options.cf_paths = {{cf_path_0_, 1024}};
|
|
175
174
|
|
|
176
|
-
DB
|
|
175
|
+
std::unique_ptr<DB> db;
|
|
177
176
|
ASSERT_OK(DB::Open(options, dbname_, &db));
|
|
178
177
|
ASSERT_EQ(1, cache_->Size());
|
|
179
178
|
ASSERT_TRUE(cache_->Contains(dbname_));
|
|
@@ -211,7 +210,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, CreateColumnFamilies) {
|
|
|
211
210
|
ASSERT_OK(db->DestroyColumnFamilyHandle(cfs[1]));
|
|
212
211
|
ASSERT_TRUE(cache_->Contains(dbname_));
|
|
213
212
|
ASSERT_EQ(1, cache_->GetRefCount(dbname_));
|
|
214
|
-
|
|
213
|
+
db.reset();
|
|
215
214
|
|
|
216
215
|
// Now cf_path_0_ in cache_ has been properly decreased and cf_path_0_'s entry
|
|
217
216
|
// is dropped from cache
|
|
@@ -233,15 +232,15 @@ TEST_F(DBLogicalBlockSizeCacheTest, OpenWithColumnFamilies) {
|
|
|
233
232
|
cf_options.cf_paths = {{cf_path_0_, 1024}};
|
|
234
233
|
|
|
235
234
|
for (int i = 0; i < 2; i++) {
|
|
236
|
-
DB
|
|
235
|
+
std::unique_ptr<DB> db;
|
|
236
|
+
ASSERT_OK(DB::Open(options, dbname_, &db));
|
|
237
237
|
ColumnFamilyHandle* cf1 = nullptr;
|
|
238
238
|
ColumnFamilyHandle* cf2 = nullptr;
|
|
239
|
-
ASSERT_OK(DB::Open(options, dbname_, &db));
|
|
240
239
|
ASSERT_OK(db->CreateColumnFamily(cf_options, "cf1", &cf1));
|
|
241
240
|
ASSERT_OK(db->CreateColumnFamily(cf_options, "cf2", &cf2));
|
|
242
241
|
ASSERT_OK(db->DestroyColumnFamilyHandle(cf1));
|
|
243
242
|
ASSERT_OK(db->DestroyColumnFamilyHandle(cf2));
|
|
244
|
-
|
|
243
|
+
db.reset();
|
|
245
244
|
ASSERT_EQ(0, cache_->Size());
|
|
246
245
|
|
|
247
246
|
std::vector<ColumnFamilyHandle*> cfs;
|
|
@@ -298,7 +297,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, OpenWithColumnFamilies) {
|
|
|
298
297
|
ASSERT_TRUE(cache_->Contains(dbname_));
|
|
299
298
|
ASSERT_EQ(1, cache_->GetRefCount(dbname_));
|
|
300
299
|
|
|
301
|
-
|
|
300
|
+
db.reset();
|
|
302
301
|
ASSERT_EQ(0, cache_->Size());
|
|
303
302
|
}
|
|
304
303
|
ASSERT_OK(
|
|
@@ -315,7 +314,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, DestroyColumnFamilyHandle) {
|
|
|
315
314
|
ColumnFamilyOptions cf_options;
|
|
316
315
|
cf_options.cf_paths = {{cf_path_0_, 1024}};
|
|
317
316
|
|
|
318
|
-
DB
|
|
317
|
+
std::unique_ptr<DB> db;
|
|
319
318
|
ASSERT_OK(DB::Open(options, dbname_, &db));
|
|
320
319
|
ASSERT_EQ(1, cache_->Size());
|
|
321
320
|
ASSERT_TRUE(cache_->Contains(dbname_));
|
|
@@ -336,7 +335,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, DestroyColumnFamilyHandle) {
|
|
|
336
335
|
ASSERT_TRUE(cache_->Contains(cf_path_0_));
|
|
337
336
|
ASSERT_EQ(1, cache_->GetRefCount(cf_path_0_));
|
|
338
337
|
|
|
339
|
-
|
|
338
|
+
db.reset();
|
|
340
339
|
ASSERT_EQ(0, cache_->Size());
|
|
341
340
|
|
|
342
341
|
// Open with column families.
|
|
@@ -369,7 +368,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, DestroyColumnFamilyHandle) {
|
|
|
369
368
|
ASSERT_TRUE(cache_->Contains(cf_path_0_));
|
|
370
369
|
ASSERT_EQ(1, cache_->GetRefCount(cf_path_0_));
|
|
371
370
|
|
|
372
|
-
|
|
371
|
+
db.reset();
|
|
373
372
|
ASSERT_EQ(0, cache_->Size());
|
|
374
373
|
}
|
|
375
374
|
ASSERT_OK(DestroyDB(dbname_, options, {{"cf", cf_options}}));
|
|
@@ -384,7 +383,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, MultiDBWithDifferentPaths) {
|
|
|
384
383
|
|
|
385
384
|
ASSERT_OK(env_->CreateDirIfMissing(dbname_));
|
|
386
385
|
|
|
387
|
-
DB
|
|
386
|
+
std::unique_ptr<DB> db0;
|
|
388
387
|
ASSERT_OK(DB::Open(options, data_path_0_, &db0));
|
|
389
388
|
ASSERT_EQ(1, cache_->Size());
|
|
390
389
|
ASSERT_TRUE(cache_->Contains(data_path_0_));
|
|
@@ -399,7 +398,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, MultiDBWithDifferentPaths) {
|
|
|
399
398
|
ASSERT_TRUE(cache_->Contains(cf_path_0_));
|
|
400
399
|
ASSERT_EQ(1, cache_->GetRefCount(cf_path_0_));
|
|
401
400
|
|
|
402
|
-
DB
|
|
401
|
+
std::unique_ptr<DB> db1;
|
|
403
402
|
ASSERT_OK(DB::Open(options, data_path_1_, &db1));
|
|
404
403
|
ASSERT_EQ(3, cache_->Size());
|
|
405
404
|
ASSERT_TRUE(cache_->Contains(data_path_0_));
|
|
@@ -424,7 +423,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, MultiDBWithDifferentPaths) {
|
|
|
424
423
|
ASSERT_EQ(1, cache_->GetRefCount(cf_path_1_));
|
|
425
424
|
|
|
426
425
|
ASSERT_OK(db0->DestroyColumnFamilyHandle(cf0));
|
|
427
|
-
|
|
426
|
+
db0.reset();
|
|
428
427
|
ASSERT_EQ(2, cache_->Size());
|
|
429
428
|
ASSERT_TRUE(cache_->Contains(data_path_1_));
|
|
430
429
|
ASSERT_EQ(1, cache_->GetRefCount(data_path_1_));
|
|
@@ -433,7 +432,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, MultiDBWithDifferentPaths) {
|
|
|
433
432
|
ASSERT_OK(DestroyDB(data_path_0_, options, {{"cf", cf_options0}}));
|
|
434
433
|
|
|
435
434
|
ASSERT_OK(db1->DestroyColumnFamilyHandle(cf1));
|
|
436
|
-
|
|
435
|
+
db1.reset();
|
|
437
436
|
ASSERT_EQ(0, cache_->Size());
|
|
438
437
|
ASSERT_OK(DestroyDB(data_path_1_, options, {{"cf", cf_options1}}));
|
|
439
438
|
}
|
|
@@ -450,7 +449,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, MultiDBWithSamePaths) {
|
|
|
450
449
|
|
|
451
450
|
ASSERT_OK(env_->CreateDirIfMissing(dbname_));
|
|
452
451
|
|
|
453
|
-
DB
|
|
452
|
+
std::unique_ptr<DB> db0;
|
|
454
453
|
ASSERT_OK(DB::Open(options, dbname_ + "/db0", &db0));
|
|
455
454
|
ASSERT_EQ(1, cache_->Size());
|
|
456
455
|
ASSERT_TRUE(cache_->Contains(data_path_0_));
|
|
@@ -464,7 +463,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, MultiDBWithSamePaths) {
|
|
|
464
463
|
ASSERT_TRUE(cache_->Contains(cf_path_0_));
|
|
465
464
|
ASSERT_EQ(1, cache_->GetRefCount(cf_path_0_));
|
|
466
465
|
|
|
467
|
-
DB
|
|
466
|
+
std::unique_ptr<DB> db1;
|
|
468
467
|
ASSERT_OK(DB::Open(options, dbname_ + "/db1", &db1));
|
|
469
468
|
ASSERT_EQ(2, cache_->Size());
|
|
470
469
|
ASSERT_TRUE(cache_->Contains(data_path_0_));
|
|
@@ -481,7 +480,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, MultiDBWithSamePaths) {
|
|
|
481
480
|
ASSERT_EQ(2, cache_->GetRefCount(cf_path_0_));
|
|
482
481
|
|
|
483
482
|
ASSERT_OK(db0->DestroyColumnFamilyHandle(cf0));
|
|
484
|
-
|
|
483
|
+
db0.reset();
|
|
485
484
|
ASSERT_EQ(2, cache_->Size());
|
|
486
485
|
ASSERT_TRUE(cache_->Contains(data_path_0_));
|
|
487
486
|
ASSERT_EQ(1, cache_->GetRefCount(data_path_0_));
|
|
@@ -490,7 +489,7 @@ TEST_F(DBLogicalBlockSizeCacheTest, MultiDBWithSamePaths) {
|
|
|
490
489
|
ASSERT_OK(DestroyDB(dbname_ + "/db0", options, {{"cf", cf_options}}));
|
|
491
490
|
|
|
492
491
|
ASSERT_OK(db1->DestroyColumnFamilyHandle(cf1));
|
|
493
|
-
|
|
492
|
+
db1.reset();
|
|
494
493
|
ASSERT_EQ(0, cache_->Size());
|
|
495
494
|
ASSERT_OK(DestroyDB(dbname_ + "/db1", options, {{"cf", cf_options}}));
|
|
496
495
|
}
|
|
@@ -117,8 +117,6 @@ class TestPrefixExtractor : public SliceTransform {
|
|
|
117
117
|
return separator(key) != nullptr;
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
bool InRange(const Slice& /*key*/) const override { return false; }
|
|
121
|
-
|
|
122
120
|
private:
|
|
123
121
|
const char* separator(const Slice& key) const {
|
|
124
122
|
return static_cast<const char*>(memchr(key.data(), '_', key.size()));
|
|
@@ -386,7 +386,7 @@ TEST_F(DBMergeOperatorTest, MergeOperandThresholdExceeded) {
|
|
|
386
386
|
snapshots.reserve(3);
|
|
387
387
|
|
|
388
388
|
for (size_t i = 0; i < keys.size(); ++i) {
|
|
389
|
-
snapshots.emplace_back(db_);
|
|
389
|
+
snapshots.emplace_back(db_.get());
|
|
390
390
|
|
|
391
391
|
const std::string suffix = std::to_string(i + 1);
|
|
392
392
|
|
|
@@ -985,7 +985,7 @@ TEST_F(DBMergeOperatorTest, MaxSuccessiveMergesBaseValues) {
|
|
|
985
985
|
// max_successive_merges.
|
|
986
986
|
constexpr size_t max_key_versions = 8;
|
|
987
987
|
std::vector<KeyVersion> key_versions;
|
|
988
|
-
ASSERT_OK(GetAllKeyVersions(db_, db_->DefaultColumnFamily(), key, key,
|
|
988
|
+
ASSERT_OK(GetAllKeyVersions(db_.get(), db_->DefaultColumnFamily(), key, key,
|
|
989
989
|
max_key_versions, &key_versions));
|
|
990
990
|
ASSERT_EQ(key_versions.size(), 2);
|
|
991
991
|
ASSERT_EQ(key_versions[0].type, kTypeValue);
|
|
@@ -1009,7 +1009,7 @@ TEST_F(DBMergeOperatorTest, MaxSuccessiveMergesBaseValues) {
|
|
|
1009
1009
|
// max_successive_merges.
|
|
1010
1010
|
constexpr size_t max_key_versions = 8;
|
|
1011
1011
|
std::vector<KeyVersion> key_versions;
|
|
1012
|
-
ASSERT_OK(GetAllKeyVersions(db_, db_->DefaultColumnFamily(), key, key,
|
|
1012
|
+
ASSERT_OK(GetAllKeyVersions(db_.get(), db_->DefaultColumnFamily(), key, key,
|
|
1013
1013
|
max_key_versions, &key_versions));
|
|
1014
1014
|
ASSERT_EQ(key_versions.size(), 3);
|
|
1015
1015
|
ASSERT_EQ(key_versions[0].type, kTypeValue);
|
|
@@ -1038,7 +1038,7 @@ TEST_F(DBMergeOperatorTest, MaxSuccessiveMergesBaseValues) {
|
|
|
1038
1038
|
// max_successive_merges.
|
|
1039
1039
|
constexpr size_t max_key_versions = 8;
|
|
1040
1040
|
std::vector<KeyVersion> key_versions;
|
|
1041
|
-
ASSERT_OK(GetAllKeyVersions(db_, db_->DefaultColumnFamily(), key, key,
|
|
1041
|
+
ASSERT_OK(GetAllKeyVersions(db_.get(), db_->DefaultColumnFamily(), key, key,
|
|
1042
1042
|
max_key_versions, &key_versions));
|
|
1043
1043
|
ASSERT_EQ(key_versions.size(), 3);
|
|
1044
1044
|
ASSERT_EQ(key_versions[0].type, kTypeWideColumnEntity);
|