@nxtedition/rocksdb 15.4.1 → 16.0.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 +70 -23
- 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 +70 -10
- package/iterator.js +25 -3
- package/max_rev_operator.h +9 -5
- 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
|
@@ -39,7 +39,7 @@ class DBTest2 : public DBTestBase {
|
|
|
39
39
|
};
|
|
40
40
|
|
|
41
41
|
TEST_F(DBTest2, OpenForReadOnly) {
|
|
42
|
-
DB
|
|
42
|
+
std::unique_ptr<DB> db_ptr;
|
|
43
43
|
std::string dbname = test::PerThreadDBPath("db_readonly");
|
|
44
44
|
Options options = CurrentOptions();
|
|
45
45
|
options.create_if_missing = true;
|
|
@@ -63,7 +63,7 @@ TEST_F(DBTest2, OpenForReadOnly) {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
TEST_F(DBTest2, OpenForReadOnlyWithColumnFamilies) {
|
|
66
|
-
DB
|
|
66
|
+
std::unique_ptr<DB> db_ptr;
|
|
67
67
|
std::string dbname = test::PerThreadDBPath("db_readonly");
|
|
68
68
|
Options options = CurrentOptions();
|
|
69
69
|
options.create_if_missing = true;
|
|
@@ -94,6 +94,44 @@ TEST_F(DBTest2, OpenForReadOnlyWithColumnFamilies) {
|
|
|
94
94
|
ASSERT_NOK(env_->FileExists(dbname));
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
// Regression test: wal_in_db_path_ was not initialized in the read-only DB
|
|
98
|
+
// open path, causing UBSan "invalid-bool-load" when CloseHelper calls
|
|
99
|
+
// PurgeObsoleteFiles -> DeleteObsoleteFileImpl which reads wal_in_db_path_.
|
|
100
|
+
TEST_F(DBTest2, ReadOnlyDBWalInDbPathInitialized) {
|
|
101
|
+
// Create a normal DB with some data and WAL files
|
|
102
|
+
Options options = CurrentOptions();
|
|
103
|
+
options.create_if_missing = true;
|
|
104
|
+
DestroyAndReopen(options);
|
|
105
|
+
ASSERT_OK(Put("key1", "value1"));
|
|
106
|
+
ASSERT_OK(Flush());
|
|
107
|
+
ASSERT_OK(Put("key2", "value2"));
|
|
108
|
+
Close();
|
|
109
|
+
|
|
110
|
+
// Reopen as read-only — wal_in_db_path_ must be properly initialized.
|
|
111
|
+
// Before the fix, closing this DB would read an uninitialized bool in
|
|
112
|
+
// DeleteObsoleteFileImpl, which UBSan catches as undefined behavior.
|
|
113
|
+
std::unique_ptr<DB> db_ptr;
|
|
114
|
+
ASSERT_OK(DB::OpenForReadOnly(options, dbname_, &db_ptr));
|
|
115
|
+
std::string value;
|
|
116
|
+
ASSERT_OK(db_ptr->Get(ReadOptions(), "key1", &value));
|
|
117
|
+
ASSERT_EQ("value1", value);
|
|
118
|
+
// Close the read-only DB — this triggers PurgeObsoleteFiles which reads
|
|
119
|
+
// wal_in_db_path_. Under UBSan, an uninitialized bool here would fail.
|
|
120
|
+
db_ptr.reset();
|
|
121
|
+
|
|
122
|
+
// Also test the column-families variant
|
|
123
|
+
std::vector<ColumnFamilyDescriptor> column_families;
|
|
124
|
+
column_families.emplace_back(kDefaultColumnFamilyName,
|
|
125
|
+
ColumnFamilyOptions(options));
|
|
126
|
+
std::vector<ColumnFamilyHandle*> handles;
|
|
127
|
+
ASSERT_OK(DB::OpenForReadOnly(DBOptions(options), dbname_, column_families,
|
|
128
|
+
&handles, &db_ptr));
|
|
129
|
+
for (auto* h : handles) {
|
|
130
|
+
delete h;
|
|
131
|
+
}
|
|
132
|
+
db_ptr.reset();
|
|
133
|
+
}
|
|
134
|
+
|
|
97
135
|
class PartitionedIndexTestListener : public EventListener {
|
|
98
136
|
public:
|
|
99
137
|
void OnFlushCompleted(DB* /*db*/, const FlushJobInfo& info) override {
|
|
@@ -349,9 +387,9 @@ TEST_P(DBTestSharedWriteBufferAcrossCFs, SharedWriteBufferAcrossCFs) {
|
|
|
349
387
|
ASSERT_OK(Put(3, Key(1), DummyString(1), wo));
|
|
350
388
|
ASSERT_OK(Put(0, Key(1), DummyString(1), wo));
|
|
351
389
|
ASSERT_OK(Flush(0));
|
|
352
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
|
|
390
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default"),
|
|
353
391
|
static_cast<uint64_t>(1));
|
|
354
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
|
|
392
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "nikitich"),
|
|
355
393
|
static_cast<uint64_t>(1));
|
|
356
394
|
|
|
357
395
|
flush_listener->expected_flush_reason = FlushReason::kWriteBufferManager;
|
|
@@ -371,13 +409,13 @@ TEST_P(DBTestSharedWriteBufferAcrossCFs, SharedWriteBufferAcrossCFs) {
|
|
|
371
409
|
// No flush should trigger
|
|
372
410
|
wait_flush();
|
|
373
411
|
{
|
|
374
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
|
|
412
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default"),
|
|
375
413
|
static_cast<uint64_t>(1));
|
|
376
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"),
|
|
414
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"),
|
|
377
415
|
static_cast<uint64_t>(0));
|
|
378
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "dobrynia"),
|
|
416
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "dobrynia"),
|
|
379
417
|
static_cast<uint64_t>(0));
|
|
380
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
|
|
418
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "nikitich"),
|
|
381
419
|
static_cast<uint64_t>(1));
|
|
382
420
|
}
|
|
383
421
|
|
|
@@ -387,13 +425,13 @@ TEST_P(DBTestSharedWriteBufferAcrossCFs, SharedWriteBufferAcrossCFs) {
|
|
|
387
425
|
ASSERT_OK(Put(0, Key(1), DummyString(1), wo));
|
|
388
426
|
wait_flush();
|
|
389
427
|
{
|
|
390
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
|
|
428
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default"),
|
|
391
429
|
static_cast<uint64_t>(1));
|
|
392
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"),
|
|
430
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"),
|
|
393
431
|
static_cast<uint64_t>(0));
|
|
394
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "dobrynia"),
|
|
432
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "dobrynia"),
|
|
395
433
|
static_cast<uint64_t>(0));
|
|
396
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
|
|
434
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "nikitich"),
|
|
397
435
|
static_cast<uint64_t>(2));
|
|
398
436
|
}
|
|
399
437
|
|
|
@@ -405,13 +443,13 @@ TEST_P(DBTestSharedWriteBufferAcrossCFs, SharedWriteBufferAcrossCFs) {
|
|
|
405
443
|
ASSERT_OK(Put(2, Key(1), DummyString(1), wo));
|
|
406
444
|
wait_flush();
|
|
407
445
|
{
|
|
408
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
|
|
446
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default"),
|
|
409
447
|
static_cast<uint64_t>(1));
|
|
410
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"),
|
|
448
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"),
|
|
411
449
|
static_cast<uint64_t>(0));
|
|
412
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "dobrynia"),
|
|
450
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "dobrynia"),
|
|
413
451
|
static_cast<uint64_t>(0));
|
|
414
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
|
|
452
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "nikitich"),
|
|
415
453
|
static_cast<uint64_t>(2));
|
|
416
454
|
}
|
|
417
455
|
|
|
@@ -428,13 +466,13 @@ TEST_P(DBTestSharedWriteBufferAcrossCFs, SharedWriteBufferAcrossCFs) {
|
|
|
428
466
|
ASSERT_OK(Put(0, Key(1), DummyString(1), wo));
|
|
429
467
|
wait_flush();
|
|
430
468
|
{
|
|
431
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
|
|
469
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default"),
|
|
432
470
|
static_cast<uint64_t>(2));
|
|
433
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"),
|
|
471
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"),
|
|
434
472
|
static_cast<uint64_t>(0));
|
|
435
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "dobrynia"),
|
|
473
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "dobrynia"),
|
|
436
474
|
static_cast<uint64_t>(0));
|
|
437
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
|
|
475
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "nikitich"),
|
|
438
476
|
static_cast<uint64_t>(2));
|
|
439
477
|
}
|
|
440
478
|
|
|
@@ -450,13 +488,13 @@ TEST_P(DBTestSharedWriteBufferAcrossCFs, SharedWriteBufferAcrossCFs) {
|
|
|
450
488
|
wait_flush();
|
|
451
489
|
|
|
452
490
|
{
|
|
453
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
|
|
491
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default"),
|
|
454
492
|
static_cast<uint64_t>(2));
|
|
455
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"),
|
|
493
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"),
|
|
456
494
|
static_cast<uint64_t>(0));
|
|
457
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "dobrynia"),
|
|
495
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "dobrynia"),
|
|
458
496
|
static_cast<uint64_t>(1));
|
|
459
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
|
|
497
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "nikitich"),
|
|
460
498
|
static_cast<uint64_t>(2));
|
|
461
499
|
}
|
|
462
500
|
if (cost_cache_) {
|
|
@@ -506,7 +544,7 @@ TEST_F(DBTest2, SharedWriteBufferLimitAcrossDB) {
|
|
|
506
544
|
CreateAndReopenWithCF({"cf1", "cf2"}, options);
|
|
507
545
|
|
|
508
546
|
ASSERT_OK(DestroyDB(dbname2, options));
|
|
509
|
-
DB
|
|
547
|
+
std::unique_ptr<DB> db2;
|
|
510
548
|
ASSERT_OK(DB::Open(options, dbname2, &db2));
|
|
511
549
|
|
|
512
550
|
WriteOptions wo;
|
|
@@ -516,12 +554,12 @@ TEST_F(DBTest2, SharedWriteBufferLimitAcrossDB) {
|
|
|
516
554
|
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable(handles_[0]));
|
|
517
555
|
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable(handles_[1]));
|
|
518
556
|
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable(handles_[2]));
|
|
519
|
-
ASSERT_OK(static_cast<DBImpl*>(db2)->TEST_WaitForFlushMemTable());
|
|
557
|
+
ASSERT_OK(static_cast<DBImpl*>(db2.get())->TEST_WaitForFlushMemTable());
|
|
520
558
|
// Ensure background work is fully finished including listener callbacks
|
|
521
559
|
// before accessing listener state.
|
|
522
560
|
ASSERT_OK(dbfull()->TEST_WaitForBackgroundWork());
|
|
523
|
-
ASSERT_OK(
|
|
524
|
-
|
|
561
|
+
ASSERT_OK(static_cast_with_check<DBImpl>(db2.get())
|
|
562
|
+
->TEST_WaitForBackgroundWork());
|
|
525
563
|
};
|
|
526
564
|
|
|
527
565
|
// Trigger a flush on cf2
|
|
@@ -537,13 +575,13 @@ TEST_F(DBTest2, SharedWriteBufferLimitAcrossDB) {
|
|
|
537
575
|
|
|
538
576
|
ASSERT_OK(Put(2, Key(1), DummyString(1), wo));
|
|
539
577
|
wait_flush();
|
|
540
|
-
ASSERT_OK(static_cast<DBImpl*>(db2)->TEST_WaitForFlushMemTable());
|
|
578
|
+
ASSERT_OK(static_cast<DBImpl*>(db2.get())->TEST_WaitForFlushMemTable());
|
|
541
579
|
{
|
|
542
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default") +
|
|
543
|
-
GetNumberOfSstFilesForColumnFamily(db_, "cf1") +
|
|
544
|
-
GetNumberOfSstFilesForColumnFamily(db_, "cf2"),
|
|
580
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default") +
|
|
581
|
+
GetNumberOfSstFilesForColumnFamily(db_.get(), "cf1") +
|
|
582
|
+
GetNumberOfSstFilesForColumnFamily(db_.get(), "cf2"),
|
|
545
583
|
static_cast<uint64_t>(1));
|
|
546
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db2, "default"),
|
|
584
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db2.get(), "default"),
|
|
547
585
|
static_cast<uint64_t>(0));
|
|
548
586
|
}
|
|
549
587
|
|
|
@@ -553,13 +591,13 @@ TEST_F(DBTest2, SharedWriteBufferLimitAcrossDB) {
|
|
|
553
591
|
ASSERT_OK(Put(2, Key(1), DummyString(1), wo));
|
|
554
592
|
wait_flush();
|
|
555
593
|
{
|
|
556
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
|
|
594
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default"),
|
|
557
595
|
static_cast<uint64_t>(1));
|
|
558
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "cf1"),
|
|
596
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "cf1"),
|
|
559
597
|
static_cast<uint64_t>(0));
|
|
560
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "cf2"),
|
|
598
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "cf2"),
|
|
561
599
|
static_cast<uint64_t>(1));
|
|
562
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db2, "default"),
|
|
600
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db2.get(), "default"),
|
|
563
601
|
static_cast<uint64_t>(0));
|
|
564
602
|
}
|
|
565
603
|
|
|
@@ -568,19 +606,19 @@ TEST_F(DBTest2, SharedWriteBufferLimitAcrossDB) {
|
|
|
568
606
|
wait_flush();
|
|
569
607
|
ASSERT_OK(db2->Put(wo, Key(1), DummyString(1)));
|
|
570
608
|
wait_flush();
|
|
571
|
-
ASSERT_OK(static_cast<DBImpl*>(db2)->TEST_WaitForFlushMemTable());
|
|
609
|
+
ASSERT_OK(static_cast<DBImpl*>(db2.get())->TEST_WaitForFlushMemTable());
|
|
572
610
|
{
|
|
573
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
|
|
611
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default"),
|
|
574
612
|
static_cast<uint64_t>(1));
|
|
575
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "cf1"),
|
|
613
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "cf1"),
|
|
576
614
|
static_cast<uint64_t>(0));
|
|
577
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "cf2"),
|
|
615
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "cf2"),
|
|
578
616
|
static_cast<uint64_t>(1));
|
|
579
|
-
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db2, "default"),
|
|
617
|
+
ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db2.get(), "default"),
|
|
580
618
|
static_cast<uint64_t>(1));
|
|
581
619
|
}
|
|
582
620
|
|
|
583
|
-
|
|
621
|
+
db2.reset();
|
|
584
622
|
ASSERT_OK(DestroyDB(dbname2, options));
|
|
585
623
|
|
|
586
624
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
@@ -785,7 +823,7 @@ TEST_F(DBTest2, WalFilterTest) {
|
|
|
785
823
|
while (true) {
|
|
786
824
|
// Ensure that expected keys exists
|
|
787
825
|
// and not expected keys don't exist after recovery
|
|
788
|
-
ValidateKeyExistence(db_, keys_must_exist, keys_must_not_exist);
|
|
826
|
+
ValidateKeyExistence(db_.get(), keys_must_exist, keys_must_not_exist);
|
|
789
827
|
|
|
790
828
|
if (checked_after_reopen) {
|
|
791
829
|
break;
|
|
@@ -922,7 +960,7 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
|
922
960
|
while (true) {
|
|
923
961
|
// Ensure that expected keys exists
|
|
924
962
|
// and not expected keys don't exist after recovery
|
|
925
|
-
ValidateKeyExistence(db_, keys_must_exist, keys_must_not_exist);
|
|
963
|
+
ValidateKeyExistence(db_.get(), keys_must_exist, keys_must_not_exist);
|
|
926
964
|
|
|
927
965
|
if (checked_after_reopen) {
|
|
928
966
|
break;
|
|
@@ -1004,7 +1042,7 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatchExtraKeys) {
|
|
|
1004
1042
|
}
|
|
1005
1043
|
}
|
|
1006
1044
|
|
|
1007
|
-
ValidateKeyExistence(db_, keys_must_exist, keys_must_not_exist);
|
|
1045
|
+
ValidateKeyExistence(db_.get(), keys_must_exist, keys_must_not_exist);
|
|
1008
1046
|
}
|
|
1009
1047
|
|
|
1010
1048
|
TEST_F(DBTest2, WalFilterTestWithColumnFamilies) {
|
|
@@ -1292,7 +1330,7 @@ TEST_F(DBTest2, DuplicateSnapshot) {
|
|
|
1292
1330
|
Options options;
|
|
1293
1331
|
options = CurrentOptions(options);
|
|
1294
1332
|
std::vector<const Snapshot*> snapshots;
|
|
1295
|
-
DBImpl* dbi =
|
|
1333
|
+
DBImpl* dbi = dbfull();
|
|
1296
1334
|
SequenceNumber oldest_ww_snap, first_ww_snap;
|
|
1297
1335
|
|
|
1298
1336
|
ASSERT_OK(Put("k", "v")); // inc seq
|
|
@@ -3694,16 +3732,16 @@ TEST_F(DBTest2, TraceAndReplay) {
|
|
|
3694
3732
|
|
|
3695
3733
|
// Using a different name than db2, to pacify infer's use-after-lifetime
|
|
3696
3734
|
// warnings (http://fbinfer.com).
|
|
3697
|
-
DB
|
|
3735
|
+
std::unique_ptr<DB> db2_init;
|
|
3698
3736
|
options.create_if_missing = true;
|
|
3699
3737
|
ASSERT_OK(DB::Open(options, dbname2, &db2_init));
|
|
3700
3738
|
ColumnFamilyHandle* cf;
|
|
3701
3739
|
ASSERT_OK(
|
|
3702
3740
|
db2_init->CreateColumnFamily(ColumnFamilyOptions(), "pikachu", &cf));
|
|
3703
3741
|
delete cf;
|
|
3704
|
-
|
|
3742
|
+
db2_init.reset();
|
|
3705
3743
|
|
|
3706
|
-
DB
|
|
3744
|
+
std::unique_ptr<DB> db2;
|
|
3707
3745
|
std::vector<ColumnFamilyDescriptor> column_families;
|
|
3708
3746
|
ColumnFamilyOptions cf_options;
|
|
3709
3747
|
cf_options.merge_operator = MergeOperators::CreatePutOperator();
|
|
@@ -3790,7 +3828,7 @@ TEST_F(DBTest2, TraceAndReplay) {
|
|
|
3790
3828
|
for (auto handle : handles) {
|
|
3791
3829
|
delete handle;
|
|
3792
3830
|
}
|
|
3793
|
-
|
|
3831
|
+
db2.reset();
|
|
3794
3832
|
ASSERT_OK(DestroyDB(dbname2, options));
|
|
3795
3833
|
}
|
|
3796
3834
|
|
|
@@ -3885,16 +3923,16 @@ TEST_F(DBTest2, TraceAndManualReplay) {
|
|
|
3885
3923
|
|
|
3886
3924
|
// Using a different name than db2, to pacify infer's use-after-lifetime
|
|
3887
3925
|
// warnings (http://fbinfer.com).
|
|
3888
|
-
DB
|
|
3926
|
+
std::unique_ptr<DB> db2_init;
|
|
3889
3927
|
options.create_if_missing = true;
|
|
3890
3928
|
ASSERT_OK(DB::Open(options, dbname2, &db2_init));
|
|
3891
3929
|
ColumnFamilyHandle* cf;
|
|
3892
3930
|
ASSERT_OK(
|
|
3893
3931
|
db2_init->CreateColumnFamily(ColumnFamilyOptions(), "pikachu", &cf));
|
|
3894
3932
|
delete cf;
|
|
3895
|
-
|
|
3933
|
+
db2_init.reset();
|
|
3896
3934
|
|
|
3897
|
-
DB
|
|
3935
|
+
std::unique_ptr<DB> db2;
|
|
3898
3936
|
std::vector<ColumnFamilyDescriptor> column_families;
|
|
3899
3937
|
ColumnFamilyOptions cf_options;
|
|
3900
3938
|
cf_options.merge_operator = MergeOperators::CreatePutOperator();
|
|
@@ -4130,7 +4168,7 @@ TEST_F(DBTest2, TraceAndManualReplay) {
|
|
|
4130
4168
|
for (auto handle : handles) {
|
|
4131
4169
|
delete handle;
|
|
4132
4170
|
}
|
|
4133
|
-
|
|
4171
|
+
db2.reset();
|
|
4134
4172
|
ASSERT_OK(DestroyDB(dbname2, options));
|
|
4135
4173
|
}
|
|
4136
4174
|
|
|
@@ -4161,16 +4199,16 @@ TEST_F(DBTest2, TraceWithLimit) {
|
|
|
4161
4199
|
|
|
4162
4200
|
// Using a different name than db2, to pacify infer's use-after-lifetime
|
|
4163
4201
|
// warnings (http://fbinfer.com).
|
|
4164
|
-
DB
|
|
4202
|
+
std::unique_ptr<DB> db2_init;
|
|
4165
4203
|
options.create_if_missing = true;
|
|
4166
4204
|
ASSERT_OK(DB::Open(options, dbname2, &db2_init));
|
|
4167
4205
|
ColumnFamilyHandle* cf;
|
|
4168
4206
|
ASSERT_OK(
|
|
4169
4207
|
db2_init->CreateColumnFamily(ColumnFamilyOptions(), "pikachu", &cf));
|
|
4170
4208
|
delete cf;
|
|
4171
|
-
|
|
4209
|
+
db2_init.reset();
|
|
4172
4210
|
|
|
4173
|
-
DB
|
|
4211
|
+
std::unique_ptr<DB> db2;
|
|
4174
4212
|
std::vector<ColumnFamilyDescriptor> column_families;
|
|
4175
4213
|
ColumnFamilyOptions cf_options;
|
|
4176
4214
|
cf_options.merge_operator = MergeOperators::CreatePutOperator();
|
|
@@ -4203,7 +4241,7 @@ TEST_F(DBTest2, TraceWithLimit) {
|
|
|
4203
4241
|
for (auto handle : handles) {
|
|
4204
4242
|
delete handle;
|
|
4205
4243
|
}
|
|
4206
|
-
|
|
4244
|
+
db2.reset();
|
|
4207
4245
|
ASSERT_OK(DestroyDB(dbname2, options));
|
|
4208
4246
|
}
|
|
4209
4247
|
|
|
@@ -4235,16 +4273,16 @@ TEST_F(DBTest2, TraceWithSampling) {
|
|
|
4235
4273
|
|
|
4236
4274
|
// Using a different name than db2, to pacify infer's use-after-lifetime
|
|
4237
4275
|
// warnings (http://fbinfer.com).
|
|
4238
|
-
DB
|
|
4276
|
+
std::unique_ptr<DB> db2_init;
|
|
4239
4277
|
options.create_if_missing = true;
|
|
4240
4278
|
ASSERT_OK(DB::Open(options, dbname2, &db2_init));
|
|
4241
4279
|
ColumnFamilyHandle* cf;
|
|
4242
4280
|
ASSERT_OK(
|
|
4243
4281
|
db2_init->CreateColumnFamily(ColumnFamilyOptions(), "pikachu", &cf));
|
|
4244
4282
|
delete cf;
|
|
4245
|
-
|
|
4283
|
+
db2_init.reset();
|
|
4246
4284
|
|
|
4247
|
-
DB
|
|
4285
|
+
std::unique_ptr<DB> db2;
|
|
4248
4286
|
std::vector<ColumnFamilyDescriptor> column_families;
|
|
4249
4287
|
ColumnFamilyOptions cf_options;
|
|
4250
4288
|
column_families.emplace_back("default", cf_options);
|
|
@@ -4279,7 +4317,7 @@ TEST_F(DBTest2, TraceWithSampling) {
|
|
|
4279
4317
|
for (auto handle : handles) {
|
|
4280
4318
|
delete handle;
|
|
4281
4319
|
}
|
|
4282
|
-
|
|
4320
|
+
db2.reset();
|
|
4283
4321
|
ASSERT_OK(DestroyDB(dbname2, options));
|
|
4284
4322
|
}
|
|
4285
4323
|
|
|
@@ -4339,16 +4377,16 @@ TEST_F(DBTest2, TraceWithFilter) {
|
|
|
4339
4377
|
|
|
4340
4378
|
// Using a different name than db2, to pacify infer's use-after-lifetime
|
|
4341
4379
|
// warnings (http://fbinfer.com).
|
|
4342
|
-
DB
|
|
4380
|
+
std::unique_ptr<DB> db2_init;
|
|
4343
4381
|
options.create_if_missing = true;
|
|
4344
4382
|
ASSERT_OK(DB::Open(options, dbname2, &db2_init));
|
|
4345
4383
|
ColumnFamilyHandle* cf;
|
|
4346
4384
|
ASSERT_OK(
|
|
4347
4385
|
db2_init->CreateColumnFamily(ColumnFamilyOptions(), "pikachu", &cf));
|
|
4348
4386
|
delete cf;
|
|
4349
|
-
|
|
4387
|
+
db2_init.reset();
|
|
4350
4388
|
|
|
4351
|
-
DB
|
|
4389
|
+
std::unique_ptr<DB> db2;
|
|
4352
4390
|
std::vector<ColumnFamilyDescriptor> column_families;
|
|
4353
4391
|
ColumnFamilyOptions cf_options;
|
|
4354
4392
|
cf_options.merge_operator = MergeOperators::CreatePutOperator();
|
|
@@ -4384,28 +4422,28 @@ TEST_F(DBTest2, TraceWithFilter) {
|
|
|
4384
4422
|
for (auto handle : handles) {
|
|
4385
4423
|
delete handle;
|
|
4386
4424
|
}
|
|
4387
|
-
|
|
4425
|
+
db2.reset();
|
|
4388
4426
|
ASSERT_OK(DestroyDB(dbname2, options));
|
|
4389
4427
|
|
|
4390
4428
|
// Set up a new db.
|
|
4391
4429
|
std::string dbname3 = test::PerThreadDBPath(env_, "db_not_trace_read");
|
|
4392
4430
|
ASSERT_OK(DestroyDB(dbname3, options));
|
|
4393
4431
|
|
|
4394
|
-
DB
|
|
4432
|
+
std::unique_ptr<DB> db3_init;
|
|
4395
4433
|
options.create_if_missing = true;
|
|
4396
4434
|
ColumnFamilyHandle* cf3;
|
|
4397
4435
|
ASSERT_OK(DB::Open(options, dbname3, &db3_init));
|
|
4398
4436
|
ASSERT_OK(
|
|
4399
4437
|
db3_init->CreateColumnFamily(ColumnFamilyOptions(), "pikachu", &cf3));
|
|
4400
4438
|
delete cf3;
|
|
4401
|
-
|
|
4439
|
+
db3_init.reset();
|
|
4402
4440
|
|
|
4403
4441
|
column_families.clear();
|
|
4404
4442
|
column_families.emplace_back("default", cf_options);
|
|
4405
4443
|
column_families.emplace_back("pikachu", ColumnFamilyOptions());
|
|
4406
4444
|
handles.clear();
|
|
4407
4445
|
|
|
4408
|
-
DB
|
|
4446
|
+
std::unique_ptr<DB> db3;
|
|
4409
4447
|
ASSERT_OK(DB::Open(db_opts, dbname3, column_families, &handles, &db3));
|
|
4410
4448
|
|
|
4411
4449
|
env_->SleepForMicroseconds(100);
|
|
@@ -4435,7 +4473,7 @@ TEST_F(DBTest2, TraceWithFilter) {
|
|
|
4435
4473
|
for (auto handle : handles) {
|
|
4436
4474
|
delete handle;
|
|
4437
4475
|
}
|
|
4438
|
-
|
|
4476
|
+
db3.reset();
|
|
4439
4477
|
ASSERT_OK(DestroyDB(dbname3, options));
|
|
4440
4478
|
|
|
4441
4479
|
std::unique_ptr<TraceReader> trace_reader3;
|
|
@@ -4626,7 +4664,7 @@ TEST_F(DBTest2, TestGetColumnFamilyHandleUnlocked) {
|
|
|
4626
4664
|
CreateColumnFamilies({"test1", "test2"}, Options());
|
|
4627
4665
|
ASSERT_EQ(handles_.size(), 2);
|
|
4628
4666
|
|
|
4629
|
-
DBImpl* dbi =
|
|
4667
|
+
DBImpl* dbi = dbfull();
|
|
4630
4668
|
port::Thread user_thread1([&]() {
|
|
4631
4669
|
auto cfh = dbi->GetColumnFamilyHandleUnlocked(handles_[0]->GetID());
|
|
4632
4670
|
ASSERT_EQ(cfh->GetID(), handles_[0]->GetID());
|
|
@@ -4830,7 +4868,7 @@ TEST_F(DBTest2, MultiDBParallelOpenTest) {
|
|
|
4830
4868
|
|
|
4831
4869
|
// Verify empty DBs can be created in parallel
|
|
4832
4870
|
std::vector<std::thread> open_threads;
|
|
4833
|
-
std::vector<DB
|
|
4871
|
+
std::vector<std::unique_ptr<DB>> dbs(kNumDbs);
|
|
4834
4872
|
options.create_if_missing = true;
|
|
4835
4873
|
for (int i = 0; i < kNumDbs; ++i) {
|
|
4836
4874
|
open_threads.emplace_back(
|
|
@@ -4845,7 +4883,7 @@ TEST_F(DBTest2, MultiDBParallelOpenTest) {
|
|
|
4845
4883
|
for (int i = 0; i < kNumDbs; ++i) {
|
|
4846
4884
|
open_threads[i].join();
|
|
4847
4885
|
ASSERT_OK(dbs[i]->Put(WriteOptions(), "xi", "gua"));
|
|
4848
|
-
|
|
4886
|
+
dbs[i].reset();
|
|
4849
4887
|
}
|
|
4850
4888
|
|
|
4851
4889
|
// Verify non-empty DBs can be recovered in parallel
|
|
@@ -4861,7 +4899,7 @@ TEST_F(DBTest2, MultiDBParallelOpenTest) {
|
|
|
4861
4899
|
// Wait and cleanup
|
|
4862
4900
|
for (int i = 0; i < kNumDbs; ++i) {
|
|
4863
4901
|
open_threads[i].join();
|
|
4864
|
-
|
|
4902
|
+
dbs[i].reset();
|
|
4865
4903
|
ASSERT_OK(DestroyDB(dbnames[i], options));
|
|
4866
4904
|
}
|
|
4867
4905
|
}
|
|
@@ -4922,8 +4960,7 @@ TEST_F(DBTest2, CloseWithUnreleasedSnapshot) {
|
|
|
4922
4960
|
ASSERT_NOK(db_->Close());
|
|
4923
4961
|
db_->ReleaseSnapshot(ss);
|
|
4924
4962
|
ASSERT_OK(db_->Close());
|
|
4925
|
-
|
|
4926
|
-
db_ = nullptr;
|
|
4963
|
+
db_.reset();
|
|
4927
4964
|
}
|
|
4928
4965
|
|
|
4929
4966
|
TEST_F(DBTest2, PrefixBloomReseek) {
|
|
@@ -6544,6 +6581,9 @@ TEST_F(DBTest2, LastLevelStatistics) {
|
|
|
6544
6581
|
|
|
6545
6582
|
DestroyAndReopen(options);
|
|
6546
6583
|
|
|
6584
|
+
get_iostats_context()->Reset();
|
|
6585
|
+
IOStatsContext* iostats = get_iostats_context();
|
|
6586
|
+
|
|
6547
6587
|
// generate 1 sst on level 0
|
|
6548
6588
|
ASSERT_OK(Put("foo1", "bar"));
|
|
6549
6589
|
ASSERT_OK(Put("bar", "bar"));
|
|
@@ -6644,9 +6684,87 @@ TEST_F(DBTest2, LastLevelStatistics) {
|
|
|
6644
6684
|
// Control
|
|
6645
6685
|
ASSERT_NE(options.statistics->getTickerCount(LAST_LEVEL_READ_COUNT),
|
|
6646
6686
|
options.statistics->getTickerCount(NON_LAST_LEVEL_READ_COUNT));
|
|
6687
|
+
|
|
6688
|
+
// Control: unknown temperature iostats should be zero since files have
|
|
6689
|
+
// explicit temperatures (mapped or written)
|
|
6690
|
+
EXPECT_EQ(
|
|
6691
|
+
iostats->file_io_stats_by_temperature.unknown_non_last_level_bytes_read,
|
|
6692
|
+
0);
|
|
6693
|
+
EXPECT_EQ(
|
|
6694
|
+
iostats->file_io_stats_by_temperature.unknown_non_last_level_read_count,
|
|
6695
|
+
0);
|
|
6696
|
+
EXPECT_EQ(
|
|
6697
|
+
iostats->file_io_stats_by_temperature.unknown_last_level_bytes_read, 0);
|
|
6698
|
+
EXPECT_EQ(
|
|
6699
|
+
iostats->file_io_stats_by_temperature.unknown_last_level_read_count, 0);
|
|
6647
6700
|
}
|
|
6648
6701
|
}
|
|
6649
6702
|
|
|
6703
|
+
// Test the iostats for files with Temperature::kUnknown that is not mapped
|
|
6704
|
+
// to another temperature. These stats are used to indicate which non-tiered
|
|
6705
|
+
// workloads are most promising for tiering (so this test doesn't set
|
|
6706
|
+
// temperatures).
|
|
6707
|
+
TEST_F(DBTest2, UnknownLastLevelStatistics) {
|
|
6708
|
+
Options options = CurrentOptions();
|
|
6709
|
+
options.statistics = CreateDBStatistics();
|
|
6710
|
+
BlockBasedTableOptions bbto;
|
|
6711
|
+
bbto.no_block_cache = true;
|
|
6712
|
+
options.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
6713
|
+
|
|
6714
|
+
DestroyAndReopen(options);
|
|
6715
|
+
|
|
6716
|
+
get_iostats_context()->Reset();
|
|
6717
|
+
IOStatsContext* iostats = get_iostats_context();
|
|
6718
|
+
|
|
6719
|
+
// Generate 1 sst file on level 0 with kUnknown temperature
|
|
6720
|
+
ASSERT_OK(Put("foo", "bar"));
|
|
6721
|
+
ASSERT_OK(Flush());
|
|
6722
|
+
|
|
6723
|
+
// Read from the kUnknown file on non-last level
|
|
6724
|
+
ASSERT_EQ("bar", Get("foo"));
|
|
6725
|
+
|
|
6726
|
+
// Verify unknown_non_last_level stats are populated
|
|
6727
|
+
EXPECT_GT(
|
|
6728
|
+
iostats->file_io_stats_by_temperature.unknown_non_last_level_bytes_read,
|
|
6729
|
+
0);
|
|
6730
|
+
EXPECT_GT(
|
|
6731
|
+
iostats->file_io_stats_by_temperature.unknown_non_last_level_read_count,
|
|
6732
|
+
0);
|
|
6733
|
+
// No reads from last level yet
|
|
6734
|
+
EXPECT_EQ(iostats->file_io_stats_by_temperature.unknown_last_level_bytes_read,
|
|
6735
|
+
0);
|
|
6736
|
+
EXPECT_EQ(iostats->file_io_stats_by_temperature.unknown_last_level_read_count,
|
|
6737
|
+
0);
|
|
6738
|
+
|
|
6739
|
+
// Compact to the last level (level 6) explicitly using MoveFilesToLevel
|
|
6740
|
+
ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
|
6741
|
+
MoveFilesToLevel(6);
|
|
6742
|
+
|
|
6743
|
+
// Reopen DB to ensure table cache is cleared and files are re-opened
|
|
6744
|
+
// with correct is_last_level flag
|
|
6745
|
+
Reopen(options);
|
|
6746
|
+
|
|
6747
|
+
// Reset iostats to measure only the following reads
|
|
6748
|
+
get_iostats_context()->Reset();
|
|
6749
|
+
|
|
6750
|
+
// Read from the file now on last level (still kUnknown since
|
|
6751
|
+
// last_level_temperature is not set)
|
|
6752
|
+
ASSERT_EQ("bar", Get("foo"));
|
|
6753
|
+
|
|
6754
|
+
// Verify unknown_last_level stats are populated
|
|
6755
|
+
EXPECT_GT(iostats->file_io_stats_by_temperature.unknown_last_level_bytes_read,
|
|
6756
|
+
0);
|
|
6757
|
+
EXPECT_GT(iostats->file_io_stats_by_temperature.unknown_last_level_read_count,
|
|
6758
|
+
0);
|
|
6759
|
+
// No new reads from non-last level
|
|
6760
|
+
EXPECT_EQ(
|
|
6761
|
+
iostats->file_io_stats_by_temperature.unknown_non_last_level_bytes_read,
|
|
6762
|
+
0);
|
|
6763
|
+
EXPECT_EQ(
|
|
6764
|
+
iostats->file_io_stats_by_temperature.unknown_non_last_level_read_count,
|
|
6765
|
+
0);
|
|
6766
|
+
}
|
|
6767
|
+
|
|
6650
6768
|
TEST_F(DBTest2, CheckpointFileTemperature) {
|
|
6651
6769
|
class NoLinkTestFS : public FileTemperatureTestFS {
|
|
6652
6770
|
using FileTemperatureTestFS::FileTemperatureTestFS;
|
|
@@ -6693,7 +6811,7 @@ TEST_F(DBTest2, CheckpointFileTemperature) {
|
|
|
6693
6811
|
|
|
6694
6812
|
test_fs->PopRequestedSstFileTemperatures();
|
|
6695
6813
|
Checkpoint* checkpoint;
|
|
6696
|
-
ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
|
|
6814
|
+
ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
|
|
6697
6815
|
ASSERT_OK(
|
|
6698
6816
|
checkpoint->CreateCheckpoint(dbname_ + kFilePathSeparator + "tempcp"));
|
|
6699
6817
|
|
|
@@ -7455,7 +7573,7 @@ TEST_F(DBTest2, GetFileChecksumsFromCurrentManifest_CRC32) {
|
|
|
7455
7573
|
opts.level0_file_num_compaction_trigger = 10;
|
|
7456
7574
|
|
|
7457
7575
|
// Bootstrap the test database.
|
|
7458
|
-
DB
|
|
7576
|
+
std::unique_ptr<DB> db;
|
|
7459
7577
|
std::string dbname = test::PerThreadDBPath("file_chksum");
|
|
7460
7578
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
7461
7579
|
|
|
@@ -7489,8 +7607,7 @@ TEST_F(DBTest2, GetFileChecksumsFromCurrentManifest_CRC32) {
|
|
|
7489
7607
|
db->GetLiveFilesMetaData(&live_files);
|
|
7490
7608
|
|
|
7491
7609
|
ASSERT_OK(db->Close());
|
|
7492
|
-
|
|
7493
|
-
db = nullptr;
|
|
7610
|
+
db.reset();
|
|
7494
7611
|
|
|
7495
7612
|
// Process current MANIFEST file and build internal file checksum mappings.
|
|
7496
7613
|
std::unique_ptr<FileChecksumList> checksum_list(NewFileChecksumList());
|