@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
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
#include "options/cf_options.h"
|
|
48
48
|
#include "port/port.h"
|
|
49
49
|
#include "port/stack_trace.h"
|
|
50
|
+
#include "rocksdb/advanced_compression.h"
|
|
50
51
|
#include "rocksdb/cache.h"
|
|
51
52
|
#include "rocksdb/convenience.h"
|
|
52
53
|
#include "rocksdb/db.h"
|
|
@@ -93,6 +94,7 @@
|
|
|
93
94
|
#include "utilities/merge_operators/bytesxor.h"
|
|
94
95
|
#include "utilities/merge_operators/sortlist.h"
|
|
95
96
|
#include "utilities/persistent_cache/block_cache_tier.h"
|
|
97
|
+
#include "utilities/trie_index/trie_index_factory.h"
|
|
96
98
|
#ifdef MEMKIND
|
|
97
99
|
#include "memory/memkind_kmem_allocator.h"
|
|
98
100
|
#endif
|
|
@@ -454,6 +456,10 @@ DEFINE_int32(max_manifest_space_amp_pct,
|
|
|
454
456
|
ROCKSDB_NAMESPACE::Options().max_manifest_space_amp_pct,
|
|
455
457
|
"Max manifest space amp percentage for auto-tuning");
|
|
456
458
|
|
|
459
|
+
DEFINE_bool(verify_manifest_content_on_close,
|
|
460
|
+
ROCKSDB_NAMESPACE::Options().verify_manifest_content_on_close,
|
|
461
|
+
"If true, verify MANIFEST content (CRC + decode) on DB close");
|
|
462
|
+
|
|
457
463
|
DEFINE_bool(cost_write_buffer_to_cache, false,
|
|
458
464
|
"The usage of memtable is costed to the block cache");
|
|
459
465
|
|
|
@@ -625,14 +631,6 @@ DEFINE_int32(compressed_secondary_cache_compression_level,
|
|
|
625
631
|
"dependent. If unset, we try to use the default for the library "
|
|
626
632
|
"specified in `--compressed_secondary_cache_compression_type`");
|
|
627
633
|
|
|
628
|
-
DEFINE_uint32(
|
|
629
|
-
compressed_secondary_cache_compress_format_version, 2,
|
|
630
|
-
"compress_format_version can have two values: "
|
|
631
|
-
"compress_format_version == 1 -- decompressed size is not included"
|
|
632
|
-
" in the block header."
|
|
633
|
-
"compress_format_version == 2 -- decompressed size is included"
|
|
634
|
-
" in the block header in varint32 format.");
|
|
635
|
-
|
|
636
634
|
DEFINE_bool(use_tiered_cache, false,
|
|
637
635
|
"If use_compressed_secondary_cache is true and "
|
|
638
636
|
"use_tiered_volatile_cache is true, then allocate a tiered cache "
|
|
@@ -669,6 +667,12 @@ DEFINE_bool(partition_index, false, "Partition index blocks");
|
|
|
669
667
|
|
|
670
668
|
DEFINE_bool(index_with_first_key, false, "Include first key in the index");
|
|
671
669
|
|
|
670
|
+
DEFINE_bool(use_trie_index, false,
|
|
671
|
+
"Use trie-based user-defined index (UDI) for block-based tables. "
|
|
672
|
+
"Builds a LOUDS-encoded succinct trie from separator keys, "
|
|
673
|
+
"providing space reduction compared to the default binary search "
|
|
674
|
+
"index. Requires BytewiseComparator.");
|
|
675
|
+
|
|
672
676
|
DEFINE_bool(
|
|
673
677
|
optimize_filters_for_memory,
|
|
674
678
|
ROCKSDB_NAMESPACE::BlockBasedTableOptions().optimize_filters_for_memory,
|
|
@@ -739,9 +743,15 @@ DEFINE_uint64(super_block_alignment_space_overhead_ratio,
|
|
|
739
743
|
.super_block_alignment_space_overhead_ratio,
|
|
740
744
|
"Configure space overhead for super block alignment");
|
|
741
745
|
|
|
746
|
+
DEFINE_bool(separate_key_value_in_data_block,
|
|
747
|
+
ROCKSDB_NAMESPACE::BlockBasedTableOptions()
|
|
748
|
+
.separate_key_value_in_data_block,
|
|
749
|
+
"If true, data blocks store keys and values separately.");
|
|
750
|
+
|
|
742
751
|
DEFINE_int64(prepopulate_block_cache, 0,
|
|
743
|
-
"Pre-populate hot/warm blocks in block cache. 0 to disable
|
|
744
|
-
"to insert during flush"
|
|
752
|
+
"Pre-populate hot/warm blocks in block cache. 0 to disable, 1 "
|
|
753
|
+
"to insert during flush, and 2 to insert during flush and "
|
|
754
|
+
"compaction");
|
|
745
755
|
|
|
746
756
|
DEFINE_uint32(uncache_aggressiveness,
|
|
747
757
|
ROCKSDB_NAMESPACE::ColumnFamilyOptions().uncache_aggressiveness,
|
|
@@ -759,6 +769,11 @@ DEFINE_double(data_block_hash_table_util_ratio, 0.75,
|
|
|
759
769
|
"This is only valid if use_data_block_hash_index is "
|
|
760
770
|
"set to true");
|
|
761
771
|
|
|
772
|
+
DEFINE_double(uniform_cv_threshold,
|
|
773
|
+
ROCKSDB_NAMESPACE::BlockBasedTableOptions().uniform_cv_threshold,
|
|
774
|
+
"Coefficient of variation threshold for determining if keys in "
|
|
775
|
+
"an index block are uniformly distributed.");
|
|
776
|
+
|
|
762
777
|
DEFINE_int64(compressed_cache_size, -1,
|
|
763
778
|
"Number of bytes to use as a cache of compressed data.");
|
|
764
779
|
|
|
@@ -797,6 +812,8 @@ DEFINE_bool(memtable_whole_key_filtering, false,
|
|
|
797
812
|
"Try to use whole key bloom filter in memtables.");
|
|
798
813
|
DEFINE_bool(memtable_use_huge_page, false,
|
|
799
814
|
"Try to use huge page in memtables.");
|
|
815
|
+
DEFINE_bool(memtable_batch_lookup_optimization, false,
|
|
816
|
+
"Use batch lookup optimization for memtable MultiGet.");
|
|
800
817
|
|
|
801
818
|
DEFINE_bool(whole_key_filtering,
|
|
802
819
|
ROCKSDB_NAMESPACE::BlockBasedTableOptions().whole_key_filtering,
|
|
@@ -1041,6 +1058,14 @@ DEFINE_uint64(fifo_compaction_ttl, 0, "TTL for the SST Files in seconds.");
|
|
|
1041
1058
|
|
|
1042
1059
|
DEFINE_uint64(fifo_age_for_warm, 0, "age_for_warm for FIFO compaction.");
|
|
1043
1060
|
|
|
1061
|
+
DEFINE_uint64(fifo_compaction_max_data_files_size_mb, 0,
|
|
1062
|
+
"Combined SST + blob file size limit for FIFO compaction "
|
|
1063
|
+
"trimming. 0 means use max_table_files_size (SST-only).");
|
|
1064
|
+
|
|
1065
|
+
DEFINE_bool(fifo_compaction_use_kv_ratio_compaction, false,
|
|
1066
|
+
"Enable capacity-derived intra-L0 compaction for FIFO with "
|
|
1067
|
+
"BlobDB. Requires fifo_compaction_max_data_files_size_mb > 0.");
|
|
1068
|
+
|
|
1044
1069
|
// Stacked BlobDB Options
|
|
1045
1070
|
DEFINE_bool(use_blob_db, false, "[Stacked BlobDB] Open a BlobDB instance.");
|
|
1046
1071
|
|
|
@@ -1049,15 +1074,6 @@ DEFINE_bool(
|
|
|
1049
1074
|
ROCKSDB_NAMESPACE::blob_db::BlobDBOptions().enable_garbage_collection,
|
|
1050
1075
|
"[Stacked BlobDB] Enable BlobDB garbage collection.");
|
|
1051
1076
|
|
|
1052
|
-
DEFINE_double(
|
|
1053
|
-
blob_db_gc_cutoff,
|
|
1054
|
-
ROCKSDB_NAMESPACE::blob_db::BlobDBOptions().garbage_collection_cutoff,
|
|
1055
|
-
"[Stacked BlobDB] Cutoff ratio for BlobDB garbage collection.");
|
|
1056
|
-
|
|
1057
|
-
DEFINE_bool(blob_db_is_fifo,
|
|
1058
|
-
ROCKSDB_NAMESPACE::blob_db::BlobDBOptions().is_fifo,
|
|
1059
|
-
"[Stacked BlobDB] Enable FIFO eviction strategy in BlobDB.");
|
|
1060
|
-
|
|
1061
1077
|
DEFINE_uint64(blob_db_max_db_size,
|
|
1062
1078
|
ROCKSDB_NAMESPACE::blob_db::BlobDBOptions().max_db_size,
|
|
1063
1079
|
"[Stacked BlobDB] Max size limit of the directory where blob "
|
|
@@ -1072,26 +1088,10 @@ DEFINE_uint64(
|
|
|
1072
1088
|
ROCKSDB_NAMESPACE::blob_db::BlobDBOptions().ttl_range_secs,
|
|
1073
1089
|
"[Stacked BlobDB] TTL bucket size to use when creating blob files.");
|
|
1074
1090
|
|
|
1075
|
-
DEFINE_uint64(
|
|
1076
|
-
blob_db_min_blob_size,
|
|
1077
|
-
ROCKSDB_NAMESPACE::blob_db::BlobDBOptions().min_blob_size,
|
|
1078
|
-
"[Stacked BlobDB] Smallest blob to store in a file. Blobs "
|
|
1079
|
-
"smaller than this will be inlined with the key in the LSM tree.");
|
|
1080
|
-
|
|
1081
|
-
DEFINE_uint64(blob_db_bytes_per_sync,
|
|
1082
|
-
ROCKSDB_NAMESPACE::blob_db::BlobDBOptions().bytes_per_sync,
|
|
1083
|
-
"[Stacked BlobDB] Bytes to sync blob file at.");
|
|
1084
|
-
|
|
1085
1091
|
DEFINE_uint64(blob_db_file_size,
|
|
1086
1092
|
ROCKSDB_NAMESPACE::blob_db::BlobDBOptions().blob_file_size,
|
|
1087
1093
|
"[Stacked BlobDB] Target size of each blob file.");
|
|
1088
1094
|
|
|
1089
|
-
DEFINE_string(
|
|
1090
|
-
blob_db_compression_type, "snappy",
|
|
1091
|
-
"[Stacked BlobDB] Algorithm to use to compress blobs in blob files.");
|
|
1092
|
-
static enum ROCKSDB_NAMESPACE::CompressionType
|
|
1093
|
-
FLAGS_blob_db_compression_type_e = ROCKSDB_NAMESPACE::kSnappyCompression;
|
|
1094
|
-
|
|
1095
1095
|
// Integrated BlobDB options
|
|
1096
1096
|
DEFINE_bool(
|
|
1097
1097
|
enable_blob_files,
|
|
@@ -1654,6 +1654,12 @@ DEFINE_bool(print_malloc_stats, false,
|
|
|
1654
1654
|
|
|
1655
1655
|
DEFINE_bool(disable_auto_compactions, false, "Do not auto trigger compactions");
|
|
1656
1656
|
|
|
1657
|
+
DEFINE_bool(open_files_async, false,
|
|
1658
|
+
"Open SST files asynchronously during DB open");
|
|
1659
|
+
|
|
1660
|
+
DEFINE_bool(skip_stats_update_on_db_open, false,
|
|
1661
|
+
"Skip loading table properties to update stats during DB open");
|
|
1662
|
+
|
|
1657
1663
|
DEFINE_uint64(wal_ttl_seconds, 0, "Set the TTL for the WAL Files in seconds.");
|
|
1658
1664
|
DEFINE_uint64(wal_size_limit_MB, 0,
|
|
1659
1665
|
"Set the size limit for the WAL Files in MB.");
|
|
@@ -1792,6 +1798,9 @@ DEFINE_double(cuckoo_hash_ratio, 0.9, "Hash ratio for Cuckoo SST table.");
|
|
|
1792
1798
|
DEFINE_bool(use_hash_search, false,
|
|
1793
1799
|
"if use kHashSearch instead of kBinarySearch. "
|
|
1794
1800
|
"This is valid if only we use BlockTable");
|
|
1801
|
+
DEFINE_string(index_block_search_type, "binary_search",
|
|
1802
|
+
"Search algorithm for reading index blocks: binary_search, "
|
|
1803
|
+
"interpolation_search, or auto_search.");
|
|
1795
1804
|
DEFINE_string(merge_operator, "",
|
|
1796
1805
|
"The merge operator to use with the database."
|
|
1797
1806
|
"If a new merge operator is specified, be sure to use fresh"
|
|
@@ -2079,6 +2088,7 @@ static void AppendWithSpace(std::string* str, Slice msg) {
|
|
|
2079
2088
|
|
|
2080
2089
|
struct DBWithColumnFamilies {
|
|
2081
2090
|
std::vector<ColumnFamilyHandle*> cfh;
|
|
2091
|
+
std::unique_ptr<DB> db_owner;
|
|
2082
2092
|
DB* db;
|
|
2083
2093
|
OptimisticTransactionDB* opt_txn_db;
|
|
2084
2094
|
std::atomic<size_t> num_created; // Need to be updated after all the
|
|
@@ -2108,13 +2118,9 @@ struct DBWithColumnFamilies {
|
|
|
2108
2118
|
std::for_each(cfh.begin(), cfh.end(),
|
|
2109
2119
|
[](ColumnFamilyHandle* cfhi) { delete cfhi; });
|
|
2110
2120
|
cfh.clear();
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
} else {
|
|
2115
|
-
delete db;
|
|
2116
|
-
db = nullptr;
|
|
2117
|
-
}
|
|
2121
|
+
db_owner.reset();
|
|
2122
|
+
db = nullptr;
|
|
2123
|
+
opt_txn_db = nullptr;
|
|
2118
2124
|
}
|
|
2119
2125
|
|
|
2120
2126
|
ColumnFamilyHandle* GetCfh(int64_t rand_num) {
|
|
@@ -2856,6 +2862,7 @@ class Benchmark {
|
|
|
2856
2862
|
int64_t max_num_range_tombstones_;
|
|
2857
2863
|
ReadOptions read_options_;
|
|
2858
2864
|
WriteOptions write_options_;
|
|
2865
|
+
std::shared_ptr<ROCKSDB_NAMESPACE::UserDefinedIndexFactory> udi_factory_;
|
|
2859
2866
|
Options open_options_; // keep options around to properly destroy db later
|
|
2860
2867
|
TraceOptions trace_options_;
|
|
2861
2868
|
TraceOptions block_cache_trace_options_;
|
|
@@ -2930,12 +2937,18 @@ class Benchmark {
|
|
|
2930
2937
|
return true;
|
|
2931
2938
|
}
|
|
2932
2939
|
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2940
|
+
std::unique_ptr<Compressor> GetCompressor() {
|
|
2941
|
+
CompressionOptions opts;
|
|
2942
|
+
opts.level = FLAGS_compression_level;
|
|
2943
|
+
// TODO: inter-operate with FLAGS_compression_manager
|
|
2944
|
+
auto compressor = GetBuiltinV2CompressionManager()->GetCompressor(
|
|
2945
|
+
opts, FLAGS_compression_type_e);
|
|
2946
|
+
if (compressor &&
|
|
2947
|
+
compressor->GetPreferredCompressionType() != FLAGS_compression_type_e) {
|
|
2948
|
+
// For benchmarking, don't fall back on a different compression type
|
|
2949
|
+
compressor.reset();
|
|
2950
|
+
}
|
|
2951
|
+
return compressor;
|
|
2939
2952
|
}
|
|
2940
2953
|
|
|
2941
2954
|
void PrintHeader(const Options& options) {
|
|
@@ -3021,18 +3034,30 @@ class Benchmark {
|
|
|
3021
3034
|
// The test string should not be too small.
|
|
3022
3035
|
const int len = FLAGS_block_size;
|
|
3023
3036
|
std::string input_str(len, 'y');
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3037
|
+
auto compressor = GetCompressor();
|
|
3038
|
+
if (compressor) {
|
|
3039
|
+
GrowableBuffer compressed;
|
|
3040
|
+
compressed.ResetForSize(input_str.size());
|
|
3041
|
+
CompressionType actual_type = kNoCompression;
|
|
3042
|
+
auto working_area = compressor->ObtainWorkingArea();
|
|
3043
|
+
Status s = compressor->CompressBlock(
|
|
3044
|
+
Slice(input_str), compressed.data(), &compressed.MutableSize(),
|
|
3045
|
+
&actual_type, &working_area);
|
|
3046
|
+
if (!s.ok()) {
|
|
3047
|
+
fprintf(stdout, "WARNING: compression test run failure: %s\n",
|
|
3048
|
+
s.ToString().c_str());
|
|
3049
|
+
} else if (actual_type == kNoCompression) {
|
|
3050
|
+
fprintf(stdout,
|
|
3051
|
+
"WARNING: %s compression is not effective or declined\n",
|
|
3052
|
+
compression);
|
|
3053
|
+
} else if (actual_type != FLAGS_compression_type_e) {
|
|
3054
|
+
fprintf(
|
|
3055
|
+
stdout,
|
|
3056
|
+
"WARNING: using %s compression in place of %s (unsupported?)\n",
|
|
3057
|
+
CompressionTypeToString(actual_type).c_str(), compression);
|
|
3058
|
+
}
|
|
3059
|
+
} else {
|
|
3060
|
+
fprintf(stdout, "WARNING: %s compression is not available\n",
|
|
3036
3061
|
compression);
|
|
3037
3062
|
}
|
|
3038
3063
|
}
|
|
@@ -3221,8 +3246,6 @@ class Benchmark {
|
|
|
3221
3246
|
FLAGS_compressed_secondary_cache_compression_type_e;
|
|
3222
3247
|
secondary_cache_opts.compression_opts.level =
|
|
3223
3248
|
FLAGS_compressed_secondary_cache_compression_level;
|
|
3224
|
-
secondary_cache_opts.compress_format_version =
|
|
3225
|
-
FLAGS_compressed_secondary_cache_compress_format_version;
|
|
3226
3249
|
if (FLAGS_use_tiered_cache) {
|
|
3227
3250
|
use_tiered_cache = true;
|
|
3228
3251
|
adm_policy = StringToAdmissionPolicy(FLAGS_tiered_adm_policy.c_str());
|
|
@@ -3417,8 +3440,8 @@ class Benchmark {
|
|
|
3417
3440
|
|
|
3418
3441
|
void DeleteDBs() {
|
|
3419
3442
|
db_.DeleteDBs();
|
|
3420
|
-
for (
|
|
3421
|
-
|
|
3443
|
+
for (auto& dbwcf : multi_dbs_) {
|
|
3444
|
+
dbwcf.DeleteDBs();
|
|
3422
3445
|
}
|
|
3423
3446
|
}
|
|
3424
3447
|
|
|
@@ -3523,11 +3546,13 @@ class Benchmark {
|
|
|
3523
3546
|
|
|
3524
3547
|
void VerifyDBFromDB(std::string& truth_db_name) {
|
|
3525
3548
|
DBWithColumnFamilies truth_db;
|
|
3526
|
-
auto s =
|
|
3549
|
+
auto s =
|
|
3550
|
+
DB::OpenForReadOnly(open_options_, truth_db_name, &truth_db.db_owner);
|
|
3527
3551
|
if (!s.ok()) {
|
|
3528
3552
|
fprintf(stderr, "open error: %s\n", s.ToString().c_str());
|
|
3529
3553
|
db_bench_exit(1);
|
|
3530
3554
|
}
|
|
3555
|
+
truth_db.db = truth_db.db_owner.get();
|
|
3531
3556
|
ReadOptions ro;
|
|
3532
3557
|
ro.total_order_seek = true;
|
|
3533
3558
|
std::unique_ptr<Iterator> truth_iter(truth_db.db->NewIterator(ro));
|
|
@@ -3602,6 +3627,9 @@ class Benchmark {
|
|
|
3602
3627
|
read_options_.auto_readahead_size = FLAGS_auto_readahead_size;
|
|
3603
3628
|
read_options_.auto_refresh_iterator_with_snapshot =
|
|
3604
3629
|
FLAGS_auto_refresh_iterator_with_snapshot;
|
|
3630
|
+
if (FLAGS_use_trie_index && udi_factory_) {
|
|
3631
|
+
read_options_.table_index_factory = udi_factory_.get();
|
|
3632
|
+
}
|
|
3605
3633
|
|
|
3606
3634
|
void (Benchmark::*method)(ThreadState*) = nullptr;
|
|
3607
3635
|
void (Benchmark::*post_process_method)() = nullptr;
|
|
@@ -3908,7 +3936,7 @@ class Benchmark {
|
|
|
3908
3936
|
}
|
|
3909
3937
|
Options options = open_options_;
|
|
3910
3938
|
for (size_t i = 0; i < multi_dbs_.size(); i++) {
|
|
3911
|
-
|
|
3939
|
+
multi_dbs_[i].DeleteDBs();
|
|
3912
3940
|
if (!open_options_.wal_dir.empty()) {
|
|
3913
3941
|
options.wal_dir = GetPathForMultiple(open_options_.wal_dir, i);
|
|
3914
3942
|
}
|
|
@@ -4248,24 +4276,37 @@ class Benchmark {
|
|
|
4248
4276
|
Slice input = gen.Generate(FLAGS_block_size);
|
|
4249
4277
|
int64_t bytes = 0;
|
|
4250
4278
|
int64_t produced = 0;
|
|
4251
|
-
|
|
4252
|
-
|
|
4253
|
-
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
|
|
4257
|
-
|
|
4279
|
+
Status s;
|
|
4280
|
+
|
|
4281
|
+
auto compressor = GetCompressor();
|
|
4282
|
+
if (!compressor) {
|
|
4283
|
+
thread->stats.AddMessage("(compression type not supported)");
|
|
4284
|
+
return;
|
|
4285
|
+
}
|
|
4286
|
+
auto working_area = compressor->ObtainWorkingArea();
|
|
4287
|
+
|
|
4288
|
+
GrowableBuffer compressed;
|
|
4258
4289
|
// Compress 1G
|
|
4259
|
-
while (
|
|
4260
|
-
compressed.
|
|
4261
|
-
|
|
4290
|
+
while (bytes < int64_t(1) << 30) {
|
|
4291
|
+
compressed.ResetForSize(input.size());
|
|
4292
|
+
CompressionType actual_type = kNoCompression;
|
|
4293
|
+
s = compressor->CompressBlock(input, compressed.data(),
|
|
4294
|
+
&compressed.MutableSize(), &actual_type,
|
|
4295
|
+
&working_area);
|
|
4296
|
+
if (UNLIKELY(!s.ok())) {
|
|
4297
|
+
break;
|
|
4298
|
+
}
|
|
4299
|
+
if (UNLIKELY(actual_type == kNoCompression)) {
|
|
4300
|
+
s = Status::Aborted("Unable to compress smaller than input");
|
|
4301
|
+
break;
|
|
4302
|
+
}
|
|
4262
4303
|
produced += compressed.size();
|
|
4263
4304
|
bytes += input.size();
|
|
4264
4305
|
thread->stats.FinishedOps(nullptr, nullptr, 1, kCompress);
|
|
4265
4306
|
}
|
|
4266
4307
|
|
|
4267
|
-
if (!ok) {
|
|
4268
|
-
thread->stats.AddMessage("(compression failure)");
|
|
4308
|
+
if (!s.ok()) {
|
|
4309
|
+
thread->stats.AddMessage("(compression failure: " + s.ToString() + ")");
|
|
4269
4310
|
} else {
|
|
4270
4311
|
char buf[340];
|
|
4271
4312
|
snprintf(buf, sizeof(buf), "(output: %.1f%%)",
|
|
@@ -4278,37 +4319,59 @@ class Benchmark {
|
|
|
4278
4319
|
void Uncompress(ThreadState* thread) {
|
|
4279
4320
|
RandomGenerator gen;
|
|
4280
4321
|
Slice input = gen.Generate(FLAGS_block_size);
|
|
4281
|
-
std::string compressed;
|
|
4282
|
-
|
|
4283
|
-
CompressionOptions compression_opts;
|
|
4284
|
-
compression_opts.level = FLAGS_compression_level;
|
|
4285
|
-
CompressionContext compression_ctx(FLAGS_compression_type_e,
|
|
4286
|
-
compression_opts);
|
|
4287
|
-
CompressionInfo compression_info(compression_opts, compression_ctx,
|
|
4288
|
-
CompressionDict::GetEmptyDict(),
|
|
4289
|
-
FLAGS_compression_type_e);
|
|
4290
|
-
UncompressionContext uncompression_ctx(FLAGS_compression_type_e);
|
|
4291
|
-
UncompressionInfo uncompression_info(uncompression_ctx,
|
|
4292
|
-
UncompressionDict::GetEmptyDict(),
|
|
4293
|
-
FLAGS_compression_type_e);
|
|
4294
|
-
|
|
4295
|
-
bool ok = CompressSlice(compression_info, input, &compressed);
|
|
4296
|
-
int64_t bytes = 0;
|
|
4297
|
-
size_t uncompressed_size = 0;
|
|
4298
|
-
while (ok && bytes < 1024 * 1048576) {
|
|
4299
|
-
constexpr uint32_t compress_format_version = 2;
|
|
4300
4322
|
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4323
|
+
auto compressor = GetCompressor();
|
|
4324
|
+
if (!compressor) {
|
|
4325
|
+
thread->stats.AddMessage("(compression type not supported)");
|
|
4326
|
+
return;
|
|
4327
|
+
}
|
|
4304
4328
|
|
|
4305
|
-
|
|
4329
|
+
// Compress the input first
|
|
4330
|
+
GrowableBuffer compressed;
|
|
4331
|
+
compressed.ResetForSize(input.size());
|
|
4332
|
+
CompressionType actual_type = kNoCompression;
|
|
4333
|
+
Status s = compressor->CompressBlock(
|
|
4334
|
+
input, compressed.data(), &compressed.MutableSize(), &actual_type,
|
|
4335
|
+
/*working_area=*/nullptr);
|
|
4336
|
+
if (!s.ok()) {
|
|
4337
|
+
thread->stats.AddMessage("(compression failure: " + s.ToString() + ")");
|
|
4338
|
+
return;
|
|
4339
|
+
}
|
|
4340
|
+
if (actual_type != FLAGS_compression_type_e) {
|
|
4341
|
+
thread->stats.AddMessage("(failed to compress smaller than input)");
|
|
4342
|
+
return;
|
|
4343
|
+
}
|
|
4344
|
+
|
|
4345
|
+
// TODO: inter-operate with FLAGS_compression_manager
|
|
4346
|
+
auto decompressor =
|
|
4347
|
+
GetBuiltinV2CompressionManager()->GetDecompressorOptimizeFor(
|
|
4348
|
+
actual_type);
|
|
4349
|
+
auto decomp_working_area = decompressor->ObtainWorkingArea(actual_type);
|
|
4350
|
+
|
|
4351
|
+
int64_t bytes = 0;
|
|
4352
|
+
while (bytes < 1024 * 1048576) {
|
|
4353
|
+
Decompressor::Args args;
|
|
4354
|
+
args.compression_type = actual_type;
|
|
4355
|
+
args.compressed_data = compressed.AsSlice();
|
|
4356
|
+
args.working_area = &decomp_working_area;
|
|
4357
|
+
|
|
4358
|
+
s = decompressor->ExtractUncompressedSize(args);
|
|
4359
|
+
if (UNLIKELY(!s.ok())) {
|
|
4360
|
+
break;
|
|
4361
|
+
}
|
|
4362
|
+
|
|
4363
|
+
CacheAllocationPtr uncompressed = AllocateBlock(args.uncompressed_size,
|
|
4364
|
+
/*allocator=*/nullptr);
|
|
4365
|
+
s = decompressor->DecompressBlock(args, uncompressed.get());
|
|
4366
|
+
if (UNLIKELY(!s.ok())) {
|
|
4367
|
+
break;
|
|
4368
|
+
}
|
|
4306
4369
|
bytes += input.size();
|
|
4307
4370
|
thread->stats.FinishedOps(nullptr, nullptr, 1, kUncompress);
|
|
4308
4371
|
}
|
|
4309
4372
|
|
|
4310
|
-
if (!ok) {
|
|
4311
|
-
thread->stats.AddMessage("(
|
|
4373
|
+
if (!s.ok()) {
|
|
4374
|
+
thread->stats.AddMessage("(decompression failure: " + s.ToString() + ")");
|
|
4312
4375
|
} else {
|
|
4313
4376
|
thread->stats.AddBytes(bytes);
|
|
4314
4377
|
}
|
|
@@ -4378,6 +4441,8 @@ class Benchmark {
|
|
|
4378
4441
|
}
|
|
4379
4442
|
options.max_manifest_file_size = FLAGS_max_manifest_file_size;
|
|
4380
4443
|
options.max_manifest_space_amp_pct = FLAGS_max_manifest_space_amp_pct;
|
|
4444
|
+
options.verify_manifest_content_on_close =
|
|
4445
|
+
FLAGS_verify_manifest_content_on_close;
|
|
4381
4446
|
options.arena_block_size = FLAGS_arena_block_size;
|
|
4382
4447
|
options.write_buffer_size = FLAGS_write_buffer_size;
|
|
4383
4448
|
options.max_write_buffer_number = FLAGS_max_write_buffer_number;
|
|
@@ -4403,6 +4468,10 @@ class Benchmark {
|
|
|
4403
4468
|
FLAGS_fifo_compaction_max_table_files_size_mb * 1024 * 1024,
|
|
4404
4469
|
FLAGS_fifo_compaction_allow_compaction);
|
|
4405
4470
|
options.compaction_options_fifo.age_for_warm = FLAGS_fifo_age_for_warm;
|
|
4471
|
+
options.compaction_options_fifo.max_data_files_size =
|
|
4472
|
+
FLAGS_fifo_compaction_max_data_files_size_mb * 1024 * 1024;
|
|
4473
|
+
options.compaction_options_fifo.use_kv_ratio_compaction =
|
|
4474
|
+
FLAGS_fifo_compaction_use_kv_ratio_compaction;
|
|
4406
4475
|
options.prefix_extractor = prefix_extractor_;
|
|
4407
4476
|
if (FLAGS_use_uint64_comparator) {
|
|
4408
4477
|
options.comparator = test::Uint64Comparator();
|
|
@@ -4417,6 +4486,8 @@ class Benchmark {
|
|
|
4417
4486
|
options.memtable_huge_page_size = FLAGS_memtable_use_huge_page ? 2048 : 0;
|
|
4418
4487
|
options.memtable_prefix_bloom_size_ratio = FLAGS_memtable_bloom_size_ratio;
|
|
4419
4488
|
options.memtable_whole_key_filtering = FLAGS_memtable_whole_key_filtering;
|
|
4489
|
+
options.memtable_batch_lookup_optimization =
|
|
4490
|
+
FLAGS_memtable_batch_lookup_optimization;
|
|
4420
4491
|
if (FLAGS_memtable_insert_with_hint_prefix_size > 0) {
|
|
4421
4492
|
options.memtable_insert_with_hint_prefix_extractor.reset(
|
|
4422
4493
|
NewCappedPrefixTransform(
|
|
@@ -4499,6 +4570,21 @@ class Benchmark {
|
|
|
4499
4570
|
} else {
|
|
4500
4571
|
block_based_options.index_type = BlockBasedTableOptions::kBinarySearch;
|
|
4501
4572
|
}
|
|
4573
|
+
|
|
4574
|
+
if (FLAGS_index_block_search_type == "binary_search") {
|
|
4575
|
+
block_based_options.index_block_search_type =
|
|
4576
|
+
BlockBasedTableOptions::kBinary;
|
|
4577
|
+
} else if (FLAGS_index_block_search_type == "interpolation_search") {
|
|
4578
|
+
block_based_options.index_block_search_type =
|
|
4579
|
+
BlockBasedTableOptions::kInterpolation;
|
|
4580
|
+
} else if (FLAGS_index_block_search_type == "auto_search") {
|
|
4581
|
+
block_based_options.index_block_search_type =
|
|
4582
|
+
BlockBasedTableOptions::kAuto;
|
|
4583
|
+
} else {
|
|
4584
|
+
fprintf(stderr, "Unknown index_block_search_type: %s\n",
|
|
4585
|
+
FLAGS_index_block_search_type.c_str());
|
|
4586
|
+
db_bench_exit(1);
|
|
4587
|
+
}
|
|
4502
4588
|
block_based_options.decouple_partitioned_filters =
|
|
4503
4589
|
FLAGS_decouple_partitioned_filters;
|
|
4504
4590
|
if (FLAGS_partition_index_and_filters || FLAGS_partition_index) {
|
|
@@ -4599,6 +4685,9 @@ class Benchmark {
|
|
|
4599
4685
|
block_based_options.enable_index_compression =
|
|
4600
4686
|
FLAGS_enable_index_compression;
|
|
4601
4687
|
block_based_options.block_align = FLAGS_block_align;
|
|
4688
|
+
block_based_options.separate_key_value_in_data_block =
|
|
4689
|
+
FLAGS_separate_key_value_in_data_block;
|
|
4690
|
+
block_based_options.uniform_cv_threshold = FLAGS_uniform_cv_threshold;
|
|
4602
4691
|
block_based_options.whole_key_filtering = FLAGS_whole_key_filtering;
|
|
4603
4692
|
block_based_options.max_auto_readahead_size =
|
|
4604
4693
|
FLAGS_max_auto_readahead_size;
|
|
@@ -4618,6 +4707,10 @@ class Benchmark {
|
|
|
4618
4707
|
prepopulate_block_cache =
|
|
4619
4708
|
BlockBasedTableOptions::PrepopulateBlockCache::kFlushOnly;
|
|
4620
4709
|
break;
|
|
4710
|
+
case 2:
|
|
4711
|
+
prepopulate_block_cache = BlockBasedTableOptions::
|
|
4712
|
+
PrepopulateBlockCache::kFlushAndCompaction;
|
|
4713
|
+
break;
|
|
4621
4714
|
default:
|
|
4622
4715
|
fprintf(stderr, "Unknown prepopulate block cache mode\n");
|
|
4623
4716
|
}
|
|
@@ -4712,6 +4805,11 @@ class Benchmark {
|
|
|
4712
4805
|
fprintf(stdout, "Integrated BlobDB: blob cache disabled\n");
|
|
4713
4806
|
}
|
|
4714
4807
|
|
|
4808
|
+
if (FLAGS_use_trie_index) {
|
|
4809
|
+
udi_factory_ = std::make_shared<trie_index::TrieIndexFactory>();
|
|
4810
|
+
block_based_options.user_defined_index_factory = udi_factory_;
|
|
4811
|
+
}
|
|
4812
|
+
|
|
4715
4813
|
options.table_factory.reset(
|
|
4716
4814
|
NewBlockBasedTableFactory(block_based_options));
|
|
4717
4815
|
}
|
|
@@ -4802,6 +4900,14 @@ class Benchmark {
|
|
|
4802
4900
|
options.table_cache_numshardbits = FLAGS_table_cache_numshardbits;
|
|
4803
4901
|
options.max_compaction_bytes = FLAGS_max_compaction_bytes;
|
|
4804
4902
|
options.disable_auto_compactions = FLAGS_disable_auto_compactions;
|
|
4903
|
+
options.open_files_async = FLAGS_open_files_async;
|
|
4904
|
+
if (FLAGS_open_files_async && !FLAGS_skip_stats_update_on_db_open) {
|
|
4905
|
+
FLAGS_skip_stats_update_on_db_open = true;
|
|
4906
|
+
fprintf(stderr,
|
|
4907
|
+
"open_files_async requires skip_stats_update_on_db_open, "
|
|
4908
|
+
"enabling it automatically\n");
|
|
4909
|
+
}
|
|
4910
|
+
options.skip_stats_update_on_db_open = FLAGS_skip_stats_update_on_db_open;
|
|
4805
4911
|
options.optimize_filters_for_hits = FLAGS_optimize_filters_for_hits;
|
|
4806
4912
|
options.paranoid_checks = FLAGS_paranoid_checks;
|
|
4807
4913
|
options.force_consistency_checks = FLAGS_force_consistency_checks;
|
|
@@ -5090,11 +5196,15 @@ class Benchmark {
|
|
|
5090
5196
|
}
|
|
5091
5197
|
if (FLAGS_readonly) {
|
|
5092
5198
|
s = hooks.OpenForReadOnly(options, db_name, column_families, &db->cfh,
|
|
5093
|
-
&db->
|
|
5199
|
+
&db->db_owner);
|
|
5200
|
+
if (s.ok()) {
|
|
5201
|
+
db->db = db->db_owner.get();
|
|
5202
|
+
}
|
|
5094
5203
|
} else if (FLAGS_optimistic_transaction_db) {
|
|
5095
5204
|
s = hooks.OpenOptimisticTransactionDB(options, db_name, column_families,
|
|
5096
5205
|
&db->cfh, &db->opt_txn_db);
|
|
5097
5206
|
if (s.ok()) {
|
|
5207
|
+
db->db_owner.reset(db->opt_txn_db);
|
|
5098
5208
|
db->db = db->opt_txn_db->GetBaseDB();
|
|
5099
5209
|
}
|
|
5100
5210
|
} else if (FLAGS_transaction_db) {
|
|
@@ -5108,20 +5218,29 @@ class Benchmark {
|
|
|
5108
5218
|
s = hooks.OpenTransactionDB(options, txn_db_options, db_name,
|
|
5109
5219
|
column_families, &db->cfh, &ptr);
|
|
5110
5220
|
if (s.ok()) {
|
|
5221
|
+
db->db_owner.reset(ptr);
|
|
5111
5222
|
db->db = ptr;
|
|
5112
5223
|
}
|
|
5113
5224
|
} else {
|
|
5114
|
-
s = hooks.Open(options, db_name, column_families, &db->cfh,
|
|
5225
|
+
s = hooks.Open(options, db_name, column_families, &db->cfh,
|
|
5226
|
+
&db->db_owner);
|
|
5227
|
+
if (s.ok()) {
|
|
5228
|
+
db->db = db->db_owner.get();
|
|
5229
|
+
}
|
|
5115
5230
|
}
|
|
5116
5231
|
db->cfh.resize(FLAGS_num_column_families);
|
|
5117
5232
|
db->num_created = num_hot;
|
|
5118
5233
|
db->num_hot = num_hot;
|
|
5119
5234
|
db->cfh_idx_to_prob = std::move(cfh_idx_to_prob);
|
|
5120
5235
|
} else if (FLAGS_readonly) {
|
|
5121
|
-
s = hooks.OpenForReadOnly(options, db_name, &db->
|
|
5236
|
+
s = hooks.OpenForReadOnly(options, db_name, &db->db_owner, false);
|
|
5237
|
+
if (s.ok()) {
|
|
5238
|
+
db->db = db->db_owner.get();
|
|
5239
|
+
}
|
|
5122
5240
|
} else if (FLAGS_optimistic_transaction_db) {
|
|
5123
5241
|
s = hooks.OpenOptimisticTransactionDB(options, db_name, &db->opt_txn_db);
|
|
5124
5242
|
if (s.ok()) {
|
|
5243
|
+
db->db_owner.reset(db->opt_txn_db);
|
|
5125
5244
|
db->db = db->opt_txn_db->GetBaseDB();
|
|
5126
5245
|
}
|
|
5127
5246
|
} else if (FLAGS_transaction_db) {
|
|
@@ -5137,23 +5256,20 @@ class Benchmark {
|
|
|
5137
5256
|
s = hooks.OpenTransactionDB(options, txn_db_options, db_name, &ptr);
|
|
5138
5257
|
}
|
|
5139
5258
|
if (s.ok()) {
|
|
5259
|
+
db->db_owner.reset(ptr);
|
|
5140
5260
|
db->db = ptr;
|
|
5141
5261
|
}
|
|
5142
5262
|
} else if (FLAGS_use_blob_db) {
|
|
5143
5263
|
// Stacked BlobDB
|
|
5144
5264
|
blob_db::BlobDBOptions blob_db_options;
|
|
5145
5265
|
blob_db_options.enable_garbage_collection = FLAGS_blob_db_enable_gc;
|
|
5146
|
-
blob_db_options.garbage_collection_cutoff = FLAGS_blob_db_gc_cutoff;
|
|
5147
|
-
blob_db_options.is_fifo = FLAGS_blob_db_is_fifo;
|
|
5148
5266
|
blob_db_options.max_db_size = FLAGS_blob_db_max_db_size;
|
|
5149
5267
|
blob_db_options.ttl_range_secs = FLAGS_blob_db_ttl_range_secs;
|
|
5150
|
-
blob_db_options.min_blob_size = FLAGS_blob_db_min_blob_size;
|
|
5151
|
-
blob_db_options.bytes_per_sync = FLAGS_blob_db_bytes_per_sync;
|
|
5152
5268
|
blob_db_options.blob_file_size = FLAGS_blob_db_file_size;
|
|
5153
|
-
blob_db_options.compression = FLAGS_blob_db_compression_type_e;
|
|
5154
5269
|
blob_db::BlobDB* ptr = nullptr;
|
|
5155
5270
|
s = hooks.Open(options, blob_db_options, db_name, &ptr);
|
|
5156
5271
|
if (s.ok()) {
|
|
5272
|
+
db->db_owner.reset(ptr);
|
|
5157
5273
|
db->db = ptr;
|
|
5158
5274
|
}
|
|
5159
5275
|
} else if (FLAGS_use_secondary_db) {
|
|
@@ -5164,7 +5280,10 @@ class Benchmark {
|
|
|
5164
5280
|
FLAGS_secondary_path = default_secondary_path;
|
|
5165
5281
|
}
|
|
5166
5282
|
s = hooks.OpenAsSecondary(options, db_name, FLAGS_secondary_path,
|
|
5167
|
-
&db->
|
|
5283
|
+
&db->db_owner);
|
|
5284
|
+
if (s.ok()) {
|
|
5285
|
+
db->db = db->db_owner.get();
|
|
5286
|
+
}
|
|
5168
5287
|
if (s.ok() && FLAGS_secondary_update_interval > 0) {
|
|
5169
5288
|
secondary_update_thread_.reset(new port::Thread(
|
|
5170
5289
|
[this](int interval, DBWithColumnFamilies* _db) {
|
|
@@ -5184,13 +5303,16 @@ class Benchmark {
|
|
|
5184
5303
|
FLAGS_secondary_update_interval, db));
|
|
5185
5304
|
}
|
|
5186
5305
|
} else if (FLAGS_open_as_follower) {
|
|
5187
|
-
|
|
5188
|
-
|
|
5306
|
+
s = hooks.OpenAsFollower(options, db_name, FLAGS_leader_path,
|
|
5307
|
+
&db->db_owner);
|
|
5189
5308
|
if (s.ok()) {
|
|
5190
|
-
db->db =
|
|
5309
|
+
db->db = db->db_owner.get();
|
|
5191
5310
|
}
|
|
5192
5311
|
} else {
|
|
5193
|
-
s = hooks.Open(options, db_name, &db->
|
|
5312
|
+
s = hooks.Open(options, db_name, &db->db_owner);
|
|
5313
|
+
if (s.ok()) {
|
|
5314
|
+
db->db = db->db_owner.get();
|
|
5315
|
+
}
|
|
5194
5316
|
}
|
|
5195
5317
|
if (FLAGS_report_open_timing) {
|
|
5196
5318
|
std::cout << "OpenDb: "
|
|
@@ -9137,10 +9259,6 @@ int db_bench_tool(int argc, char** argv, ToolHooks& hooks) {
|
|
|
9137
9259
|
FLAGS_compressed_secondary_cache_compression_type_e = StringToCompressionType(
|
|
9138
9260
|
FLAGS_compressed_secondary_cache_compression_type.c_str());
|
|
9139
9261
|
|
|
9140
|
-
// Stacked BlobDB
|
|
9141
|
-
FLAGS_blob_db_compression_type_e =
|
|
9142
|
-
StringToCompressionType(FLAGS_blob_db_compression_type.c_str());
|
|
9143
|
-
|
|
9144
9262
|
int env_opts = !FLAGS_env_uri.empty() + !FLAGS_fs_uri.empty();
|
|
9145
9263
|
if (env_opts > 1) {
|
|
9146
9264
|
fprintf(stderr, "Error: --env_uri and --fs_uri are mutually exclusive\n");
|