@nxtedition/rocksdb 15.4.1 → 15.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +24 -15
- 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/iterator.js +2 -2
- 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
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
#include <cinttypes>
|
|
9
9
|
#include <iomanip>
|
|
10
|
+
#include <memory>
|
|
10
11
|
|
|
11
12
|
#include "db/db_test_util.h"
|
|
12
13
|
#include "db/version_edit.h"
|
|
@@ -99,7 +100,7 @@ TEST_F(LdbCmdTest, MemEnv) {
|
|
|
99
100
|
opts.env = env.get();
|
|
100
101
|
opts.create_if_missing = true;
|
|
101
102
|
|
|
102
|
-
DB
|
|
103
|
+
std::unique_ptr<DB> db;
|
|
103
104
|
std::string dbname = test::PerThreadDBPath(env.get(), "ldb_cmd_test");
|
|
104
105
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
105
106
|
|
|
@@ -113,7 +114,7 @@ TEST_F(LdbCmdTest, MemEnv) {
|
|
|
113
114
|
fopts.wait = true;
|
|
114
115
|
ASSERT_OK(db->Flush(fopts));
|
|
115
116
|
|
|
116
|
-
|
|
117
|
+
db.reset();
|
|
117
118
|
|
|
118
119
|
char arg1[] = "./ldb";
|
|
119
120
|
char arg2[1024];
|
|
@@ -285,7 +286,7 @@ TEST_F(LdbCmdTest, DumpFileChecksumNoChecksum) {
|
|
|
285
286
|
opts.env = env.get();
|
|
286
287
|
opts.create_if_missing = true;
|
|
287
288
|
|
|
288
|
-
DB
|
|
289
|
+
std::unique_ptr<DB> db;
|
|
289
290
|
std::string dbname = test::PerThreadDBPath(env.get(), "ldb_cmd_test");
|
|
290
291
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
291
292
|
|
|
@@ -322,7 +323,7 @@ TEST_F(LdbCmdTest, DumpFileChecksumNoChecksum) {
|
|
|
322
323
|
}
|
|
323
324
|
ASSERT_OK(db->Flush(fopts));
|
|
324
325
|
ASSERT_OK(db->Close());
|
|
325
|
-
|
|
326
|
+
db.reset();
|
|
326
327
|
|
|
327
328
|
char arg1[] = "./ldb";
|
|
328
329
|
char arg2[1024];
|
|
@@ -337,7 +338,7 @@ TEST_F(LdbCmdTest, DumpFileChecksumNoChecksum) {
|
|
|
337
338
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
338
339
|
|
|
339
340
|
// Verify each sst file checksum value and checksum name
|
|
340
|
-
FileChecksumTestHelper fct_helper(opts, db, dbname);
|
|
341
|
+
FileChecksumTestHelper fct_helper(opts, db.get(), dbname);
|
|
341
342
|
ASSERT_OK(fct_helper.VerifyEachFileChecksum());
|
|
342
343
|
|
|
343
344
|
// Manually trigger compaction
|
|
@@ -350,11 +351,11 @@ TEST_F(LdbCmdTest, DumpFileChecksumNoChecksum) {
|
|
|
350
351
|
CompactRangeOptions options;
|
|
351
352
|
ASSERT_OK(db->CompactRange(options, &begin, &end));
|
|
352
353
|
// Verify each sst file checksum after compaction
|
|
353
|
-
FileChecksumTestHelper fct_helper_ac(opts, db, dbname);
|
|
354
|
+
FileChecksumTestHelper fct_helper_ac(opts, db.get(), dbname);
|
|
354
355
|
ASSERT_OK(fct_helper_ac.VerifyEachFileChecksum());
|
|
355
356
|
|
|
356
357
|
ASSERT_OK(db->Close());
|
|
357
|
-
|
|
358
|
+
db.reset();
|
|
358
359
|
|
|
359
360
|
ASSERT_EQ(0,
|
|
360
361
|
LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
|
|
@@ -364,7 +365,7 @@ TEST_F(LdbCmdTest, DumpFileChecksumNoChecksum) {
|
|
|
364
365
|
// Verify the checksum information in memory is the same as that in Manifest;
|
|
365
366
|
std::vector<LiveFileMetaData> live_files;
|
|
366
367
|
db->GetLiveFilesMetaData(&live_files);
|
|
367
|
-
|
|
368
|
+
db.reset();
|
|
368
369
|
ASSERT_OK(fct_helper_ac.VerifyChecksumInManifest(live_files));
|
|
369
370
|
}
|
|
370
371
|
|
|
@@ -376,7 +377,7 @@ TEST_F(LdbCmdTest, BlobDBDumpFileChecksumNoChecksum) {
|
|
|
376
377
|
opts.create_if_missing = true;
|
|
377
378
|
opts.enable_blob_files = true;
|
|
378
379
|
|
|
379
|
-
DB
|
|
380
|
+
std::unique_ptr<DB> db;
|
|
380
381
|
std::string dbname = test::PerThreadDBPath(env.get(), "ldb_cmd_test");
|
|
381
382
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
382
383
|
|
|
@@ -413,7 +414,7 @@ TEST_F(LdbCmdTest, BlobDBDumpFileChecksumNoChecksum) {
|
|
|
413
414
|
}
|
|
414
415
|
ASSERT_OK(db->Flush(fopts));
|
|
415
416
|
ASSERT_OK(db->Close());
|
|
416
|
-
|
|
417
|
+
db.reset();
|
|
417
418
|
|
|
418
419
|
char arg1[] = "./ldb";
|
|
419
420
|
std::string arg2_str = "--db=" + dbname;
|
|
@@ -427,7 +428,7 @@ TEST_F(LdbCmdTest, BlobDBDumpFileChecksumNoChecksum) {
|
|
|
427
428
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
428
429
|
|
|
429
430
|
// Verify each sst and blob file checksum value and checksum name
|
|
430
|
-
FileChecksumTestHelper fct_helper(opts, db, dbname);
|
|
431
|
+
FileChecksumTestHelper fct_helper(opts, db.get(), dbname);
|
|
431
432
|
ASSERT_OK(fct_helper.VerifyEachFileChecksum());
|
|
432
433
|
|
|
433
434
|
// Manually trigger compaction
|
|
@@ -443,11 +444,11 @@ TEST_F(LdbCmdTest, BlobDBDumpFileChecksumNoChecksum) {
|
|
|
443
444
|
CompactRangeOptions options;
|
|
444
445
|
ASSERT_OK(db->CompactRange(options, &begin, &end));
|
|
445
446
|
// Verify each sst file checksum after compaction
|
|
446
|
-
FileChecksumTestHelper fct_helper_ac(opts, db, dbname);
|
|
447
|
+
FileChecksumTestHelper fct_helper_ac(opts, db.get(), dbname);
|
|
447
448
|
ASSERT_OK(fct_helper_ac.VerifyEachFileChecksum());
|
|
448
449
|
|
|
449
450
|
ASSERT_OK(db->Close());
|
|
450
|
-
|
|
451
|
+
db.reset();
|
|
451
452
|
|
|
452
453
|
ASSERT_EQ(0,
|
|
453
454
|
LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
|
|
@@ -461,7 +462,7 @@ TEST_F(LdbCmdTest, DumpFileChecksumCRC32) {
|
|
|
461
462
|
opts.create_if_missing = true;
|
|
462
463
|
opts.file_checksum_gen_factory = GetFileChecksumGenCrc32cFactory();
|
|
463
464
|
|
|
464
|
-
DB
|
|
465
|
+
std::unique_ptr<DB> db;
|
|
465
466
|
std::string dbname = test::PerThreadDBPath(env.get(), "ldb_cmd_test");
|
|
466
467
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
467
468
|
|
|
@@ -498,7 +499,7 @@ TEST_F(LdbCmdTest, DumpFileChecksumCRC32) {
|
|
|
498
499
|
}
|
|
499
500
|
ASSERT_OK(db->Flush(fopts));
|
|
500
501
|
ASSERT_OK(db->Close());
|
|
501
|
-
|
|
502
|
+
db.reset();
|
|
502
503
|
|
|
503
504
|
char arg1[] = "./ldb";
|
|
504
505
|
char arg2[1024];
|
|
@@ -513,7 +514,7 @@ TEST_F(LdbCmdTest, DumpFileChecksumCRC32) {
|
|
|
513
514
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
514
515
|
|
|
515
516
|
// Verify each sst file checksum value and checksum name
|
|
516
|
-
FileChecksumTestHelper fct_helper(opts, db, dbname);
|
|
517
|
+
FileChecksumTestHelper fct_helper(opts, db.get(), dbname);
|
|
517
518
|
ASSERT_OK(fct_helper.VerifyEachFileChecksum());
|
|
518
519
|
|
|
519
520
|
// Manually trigger compaction
|
|
@@ -526,11 +527,11 @@ TEST_F(LdbCmdTest, DumpFileChecksumCRC32) {
|
|
|
526
527
|
CompactRangeOptions options;
|
|
527
528
|
ASSERT_OK(db->CompactRange(options, &begin, &end));
|
|
528
529
|
// Verify each sst file checksum after compaction
|
|
529
|
-
FileChecksumTestHelper fct_helper_ac(opts, db, dbname);
|
|
530
|
+
FileChecksumTestHelper fct_helper_ac(opts, db.get(), dbname);
|
|
530
531
|
ASSERT_OK(fct_helper_ac.VerifyEachFileChecksum());
|
|
531
532
|
|
|
532
533
|
ASSERT_OK(db->Close());
|
|
533
|
-
|
|
534
|
+
db.reset();
|
|
534
535
|
|
|
535
536
|
ASSERT_EQ(0,
|
|
536
537
|
LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
|
|
@@ -543,7 +544,7 @@ TEST_F(LdbCmdTest, DumpFileChecksumCRC32) {
|
|
|
543
544
|
ASSERT_OK(fct_helper_ac.VerifyChecksumInManifest(live_files));
|
|
544
545
|
|
|
545
546
|
ASSERT_OK(db->Close());
|
|
546
|
-
|
|
547
|
+
db.reset();
|
|
547
548
|
}
|
|
548
549
|
|
|
549
550
|
TEST_F(LdbCmdTest, BlobDBDumpFileChecksumCRC32) {
|
|
@@ -555,7 +556,7 @@ TEST_F(LdbCmdTest, BlobDBDumpFileChecksumCRC32) {
|
|
|
555
556
|
opts.file_checksum_gen_factory = GetFileChecksumGenCrc32cFactory();
|
|
556
557
|
opts.enable_blob_files = true;
|
|
557
558
|
|
|
558
|
-
DB
|
|
559
|
+
std::unique_ptr<DB> db;
|
|
559
560
|
std::string dbname = test::PerThreadDBPath(env.get(), "ldb_cmd_test");
|
|
560
561
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
561
562
|
|
|
@@ -592,7 +593,7 @@ TEST_F(LdbCmdTest, BlobDBDumpFileChecksumCRC32) {
|
|
|
592
593
|
}
|
|
593
594
|
ASSERT_OK(db->Flush(fopts));
|
|
594
595
|
ASSERT_OK(db->Close());
|
|
595
|
-
|
|
596
|
+
db.reset();
|
|
596
597
|
|
|
597
598
|
char arg1[] = "./ldb";
|
|
598
599
|
std::string arg2_str = "--db=" + dbname;
|
|
@@ -606,7 +607,7 @@ TEST_F(LdbCmdTest, BlobDBDumpFileChecksumCRC32) {
|
|
|
606
607
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
607
608
|
|
|
608
609
|
// Verify each sst and blob file checksum value and checksum name
|
|
609
|
-
FileChecksumTestHelper fct_helper(opts, db, dbname);
|
|
610
|
+
FileChecksumTestHelper fct_helper(opts, db.get(), dbname);
|
|
610
611
|
ASSERT_OK(fct_helper.VerifyEachFileChecksum());
|
|
611
612
|
|
|
612
613
|
// Manually trigger compaction
|
|
@@ -622,11 +623,11 @@ TEST_F(LdbCmdTest, BlobDBDumpFileChecksumCRC32) {
|
|
|
622
623
|
CompactRangeOptions options;
|
|
623
624
|
ASSERT_OK(db->CompactRange(options, &begin, &end));
|
|
624
625
|
// Verify each sst file checksum after compaction
|
|
625
|
-
FileChecksumTestHelper fct_helper_ac(opts, db, dbname);
|
|
626
|
+
FileChecksumTestHelper fct_helper_ac(opts, db.get(), dbname);
|
|
626
627
|
ASSERT_OK(fct_helper_ac.VerifyEachFileChecksum());
|
|
627
628
|
|
|
628
629
|
ASSERT_OK(db->Close());
|
|
629
|
-
|
|
630
|
+
db.reset();
|
|
630
631
|
|
|
631
632
|
ASSERT_EQ(0,
|
|
632
633
|
LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
|
|
@@ -678,7 +679,7 @@ TEST_F(LdbCmdTest, ListFileTombstone) {
|
|
|
678
679
|
opts.env = env.get();
|
|
679
680
|
opts.create_if_missing = true;
|
|
680
681
|
|
|
681
|
-
DB
|
|
682
|
+
std::unique_ptr<DB> db;
|
|
682
683
|
std::string dbname = test::PerThreadDBPath(env.get(), "ldb_cmd_test");
|
|
683
684
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
684
685
|
|
|
@@ -694,7 +695,7 @@ TEST_F(LdbCmdTest, ListFileTombstone) {
|
|
|
694
695
|
ASSERT_OK(db->DeleteRange(wopts, db->DefaultColumnFamily(), "bar", "foo2"));
|
|
695
696
|
ASSERT_OK(db->Flush(fopts));
|
|
696
697
|
|
|
697
|
-
|
|
698
|
+
db.reset();
|
|
698
699
|
|
|
699
700
|
{
|
|
700
701
|
char arg1[] = "./ldb";
|
|
@@ -771,7 +772,7 @@ TEST_F(LdbCmdTest, DisableConsistencyChecks) {
|
|
|
771
772
|
std::string dbname = test::PerThreadDBPath(env.get(), "ldb_cmd_test");
|
|
772
773
|
|
|
773
774
|
{
|
|
774
|
-
DB
|
|
775
|
+
std::unique_ptr<DB> db;
|
|
775
776
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
776
777
|
|
|
777
778
|
WriteOptions wopts;
|
|
@@ -785,8 +786,6 @@ TEST_F(LdbCmdTest, DisableConsistencyChecks) {
|
|
|
785
786
|
ASSERT_OK(db->Put(wopts, "foo2", "3"));
|
|
786
787
|
ASSERT_OK(db->Put(wopts, "bar2", "4"));
|
|
787
788
|
ASSERT_OK(db->Flush(fopts));
|
|
788
|
-
|
|
789
|
-
delete db;
|
|
790
789
|
}
|
|
791
790
|
|
|
792
791
|
{
|
|
@@ -890,7 +889,7 @@ TEST_F(LdbCmdTest, LoadCFOptionsAndOverride) {
|
|
|
890
889
|
opts.env = env.get();
|
|
891
890
|
opts.create_if_missing = true;
|
|
892
891
|
|
|
893
|
-
DB
|
|
892
|
+
std::unique_ptr<DB> db;
|
|
894
893
|
std::string dbname = test::PerThreadDBPath(env.get(), "ldb_cmd_test");
|
|
895
894
|
ASSERT_OK(DestroyDB(dbname, opts));
|
|
896
895
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
@@ -901,7 +900,7 @@ TEST_F(LdbCmdTest, LoadCFOptionsAndOverride) {
|
|
|
901
900
|
ASSERT_OK(db->CreateColumnFamily(cf_opts, "cf1", &cf_handle));
|
|
902
901
|
|
|
903
902
|
delete cf_handle;
|
|
904
|
-
|
|
903
|
+
db.reset();
|
|
905
904
|
|
|
906
905
|
char arg1[] = "./ldb";
|
|
907
906
|
char arg2[1024];
|
|
@@ -933,7 +932,7 @@ TEST_F(LdbCmdTest, UnsafeRemoveSstFile) {
|
|
|
933
932
|
opts.level0_file_num_compaction_trigger = 10;
|
|
934
933
|
opts.create_if_missing = true;
|
|
935
934
|
|
|
936
|
-
DB
|
|
935
|
+
std::unique_ptr<DB> db;
|
|
937
936
|
std::string dbname = test::PerThreadDBPath(Env::Default(), "ldb_cmd_test");
|
|
938
937
|
ASSERT_OK(DestroyDB(dbname, opts));
|
|
939
938
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
@@ -957,8 +956,7 @@ TEST_F(LdbCmdTest, UnsafeRemoveSstFile) {
|
|
|
957
956
|
uint64_t to_remove = numbers[1];
|
|
958
957
|
|
|
959
958
|
// Close for unsafe_remove_sst_file
|
|
960
|
-
|
|
961
|
-
db = nullptr;
|
|
959
|
+
db.reset();
|
|
962
960
|
|
|
963
961
|
char arg1[] = "./ldb";
|
|
964
962
|
char arg2[1024];
|
|
@@ -1007,8 +1005,7 @@ TEST_F(LdbCmdTest, UnsafeRemoveSstFile) {
|
|
|
1007
1005
|
|
|
1008
1006
|
// Close for unsafe_remove_sst_file
|
|
1009
1007
|
delete cf_handle;
|
|
1010
|
-
|
|
1011
|
-
db = nullptr;
|
|
1008
|
+
db.reset();
|
|
1012
1009
|
|
|
1013
1010
|
snprintf(arg4, sizeof(arg4), "%" PRIu64, to_remove);
|
|
1014
1011
|
ASSERT_EQ(0,
|
|
@@ -1049,8 +1046,7 @@ TEST_F(LdbCmdTest, UnsafeRemoveSstFile) {
|
|
|
1049
1046
|
for (auto& h : handles) {
|
|
1050
1047
|
delete h;
|
|
1051
1048
|
}
|
|
1052
|
-
|
|
1053
|
-
db = nullptr;
|
|
1049
|
+
db.reset();
|
|
1054
1050
|
|
|
1055
1051
|
snprintf(arg4, sizeof(arg4), "%" PRIu64, to_remove);
|
|
1056
1052
|
ASSERT_EQ(0,
|
|
@@ -1066,7 +1062,7 @@ TEST_F(LdbCmdTest, UnsafeRemoveSstFile) {
|
|
|
1066
1062
|
for (auto& h : handles) {
|
|
1067
1063
|
delete h;
|
|
1068
1064
|
}
|
|
1069
|
-
|
|
1065
|
+
db.reset();
|
|
1070
1066
|
}
|
|
1071
1067
|
|
|
1072
1068
|
TEST_F(LdbCmdTest, FileTemperatureUpdateManifest) {
|
|
@@ -1078,7 +1074,7 @@ TEST_F(LdbCmdTest, FileTemperatureUpdateManifest) {
|
|
|
1078
1074
|
opts.create_if_missing = true;
|
|
1079
1075
|
opts.env = env.get();
|
|
1080
1076
|
|
|
1081
|
-
DB
|
|
1077
|
+
std::unique_ptr<DB> db;
|
|
1082
1078
|
std::string dbname = test::PerThreadDBPath(env.get(), "ldb_cmd_test");
|
|
1083
1079
|
ASSERT_OK(DestroyDB(dbname, opts));
|
|
1084
1080
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
@@ -1102,8 +1098,7 @@ TEST_F(LdbCmdTest, FileTemperatureUpdateManifest) {
|
|
|
1102
1098
|
}
|
|
1103
1099
|
|
|
1104
1100
|
// Close & reopen
|
|
1105
|
-
|
|
1106
|
-
db = nullptr;
|
|
1101
|
+
db.reset();
|
|
1107
1102
|
test_fs->PopRequestedSstFileTemperatures();
|
|
1108
1103
|
ASSERT_OK(DB::Open(opts, dbname, &db));
|
|
1109
1104
|
|
|
@@ -1122,8 +1117,7 @@ TEST_F(LdbCmdTest, FileTemperatureUpdateManifest) {
|
|
|
1122
1117
|
}
|
|
1123
1118
|
|
|
1124
1119
|
// Close for update_manifest
|
|
1125
|
-
|
|
1126
|
-
db = nullptr;
|
|
1120
|
+
db.reset();
|
|
1127
1121
|
|
|
1128
1122
|
char arg1[] = "./ldb";
|
|
1129
1123
|
char arg2[1024];
|
|
@@ -1151,7 +1145,7 @@ TEST_F(LdbCmdTest, FileTemperatureUpdateManifest) {
|
|
|
1151
1145
|
for (auto& r : requests) {
|
|
1152
1146
|
ASSERT_EQ(r.second, number_to_temp[r.first]);
|
|
1153
1147
|
}
|
|
1154
|
-
|
|
1148
|
+
db.reset();
|
|
1155
1149
|
}
|
|
1156
1150
|
|
|
1157
1151
|
TEST_F(LdbCmdTest, RenameDbAndLoadOptions) {
|
|
@@ -1231,7 +1225,7 @@ TEST_F(LdbCmdTest, CustomComparator) {
|
|
|
1231
1225
|
opts.comparator = &my_comparator;
|
|
1232
1226
|
|
|
1233
1227
|
std::string dbname = test::PerThreadDBPath(env, "ldb_cmd_test");
|
|
1234
|
-
DB
|
|
1228
|
+
std::unique_ptr<DB> db;
|
|
1235
1229
|
|
|
1236
1230
|
std::vector<ColumnFamilyDescriptor> cfds = {
|
|
1237
1231
|
{kDefaultColumnFamilyName, opts}, {"cf1", opts}, {"cf2", opts}};
|
|
@@ -1243,7 +1237,7 @@ TEST_F(LdbCmdTest, CustomComparator) {
|
|
|
1243
1237
|
for (auto& h : handles) {
|
|
1244
1238
|
ASSERT_OK(db->DestroyColumnFamilyHandle(h));
|
|
1245
1239
|
}
|
|
1246
|
-
|
|
1240
|
+
db.reset();
|
|
1247
1241
|
|
|
1248
1242
|
char arg1[] = "./ldb";
|
|
1249
1243
|
std::string arg2 = "--db=" + dbname;
|
|
@@ -52,6 +52,13 @@ void LDBCommandRunner::PrintHelp(const LDBOptions& ldb_options,
|
|
|
52
52
|
ret.append(" --" + LDBCommand::ARG_TTL +
|
|
53
53
|
" with 'put','get','scan','dump','query','batchput'"
|
|
54
54
|
" : DB supports ttl and value is internally timestamp-suffixed\n");
|
|
55
|
+
ret.append(" --" + LDBCommand::ARG_USE_TXN +
|
|
56
|
+
" : Open database as TransactionDB. Required for databases "
|
|
57
|
+
"created with WritePrepared or WriteUnprepared transactions.\n");
|
|
58
|
+
ret.append(" --" + LDBCommand::ARG_TXN_WRITE_POLICY +
|
|
59
|
+
"=<0|1|2> : Transaction write policy. "
|
|
60
|
+
"0=WRITE_COMMITTED (default), 1=WRITE_PREPARED, "
|
|
61
|
+
"2=WRITE_UNPREPARED\n");
|
|
55
62
|
ret.append(" --" + LDBCommand::ARG_TRY_LOAD_OPTIONS +
|
|
56
63
|
" : Try to load option file from DB. Default to true if " +
|
|
57
64
|
LDBCommand::ARG_DB +
|
|
@@ -68,6 +75,8 @@ void LDBCommandRunner::PrintHelp(const LDBOptions& ldb_options,
|
|
|
68
75
|
ret.append(" --" + LDBCommand::ARG_COMPRESSION_MAX_DICT_BYTES +
|
|
69
76
|
"=<int,e.g.:16384>\n");
|
|
70
77
|
ret.append(" --" + LDBCommand::ARG_BLOCK_SIZE + "=<block_size_in_bytes>\n");
|
|
78
|
+
ret.append(" --" + LDBCommand::ARG_UNIFORM_CV_THRESHOLD +
|
|
79
|
+
"=<double,e.g.:0.2>\n");
|
|
71
80
|
ret.append(" --" + LDBCommand::ARG_AUTO_COMPACTION + "=<true|false>\n");
|
|
72
81
|
ret.append(" --" + LDBCommand::ARG_DB_WRITE_BUFFER_SIZE +
|
|
73
82
|
"=<int,e.g.:16777216>\n");
|
|
@@ -21,7 +21,7 @@ class ReduceLevelTest : public testing::Test {
|
|
|
21
21
|
ReduceLevelTest() {
|
|
22
22
|
dbname_ = test::PerThreadDBPath("db_reduce_levels_test");
|
|
23
23
|
EXPECT_OK(DestroyDB(dbname_, Options()));
|
|
24
|
-
db_
|
|
24
|
+
db_.reset();
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
Status OpenDB(bool create_if_missing, int levels);
|
|
@@ -46,12 +46,12 @@ class ReduceLevelTest : public testing::Test {
|
|
|
46
46
|
if (db_ == nullptr) {
|
|
47
47
|
return Status::InvalidArgument("DB not opened.");
|
|
48
48
|
}
|
|
49
|
-
DBImpl* db_impl = static_cast_with_check<DBImpl>(db_);
|
|
49
|
+
DBImpl* db_impl = static_cast_with_check<DBImpl>(db_.get());
|
|
50
50
|
return db_impl->TEST_FlushMemTable();
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
void MoveL0FileToLevel(int level) {
|
|
54
|
-
DBImpl* db_impl = static_cast_with_check<DBImpl>(db_);
|
|
54
|
+
DBImpl* db_impl = static_cast_with_check<DBImpl>(db_.get());
|
|
55
55
|
for (int i = 0; i < level; ++i) {
|
|
56
56
|
ASSERT_OK(db_impl->TEST_CompactRange(i, nullptr, nullptr));
|
|
57
57
|
}
|
|
@@ -59,8 +59,7 @@ class ReduceLevelTest : public testing::Test {
|
|
|
59
59
|
|
|
60
60
|
void CloseDB() {
|
|
61
61
|
if (db_ != nullptr) {
|
|
62
|
-
|
|
63
|
-
db_ = nullptr;
|
|
62
|
+
db_.reset();
|
|
64
63
|
}
|
|
65
64
|
}
|
|
66
65
|
|
|
@@ -75,7 +74,7 @@ class ReduceLevelTest : public testing::Test {
|
|
|
75
74
|
|
|
76
75
|
private:
|
|
77
76
|
std::string dbname_;
|
|
78
|
-
DB
|
|
77
|
+
std::unique_ptr<DB> db_;
|
|
79
78
|
};
|
|
80
79
|
|
|
81
80
|
Status ReduceLevelTest::OpenDB(bool create_if_missing, int num_levels) {
|
|
@@ -523,7 +523,7 @@ int SSTDumpTool::Run(int argc, char const* const* argv, Options options) {
|
|
|
523
523
|
bbto.block_size = block_size;
|
|
524
524
|
bbto.enable_index_compression = enable_index_compression;
|
|
525
525
|
// Maximize compression features available
|
|
526
|
-
bbto.format_version =
|
|
526
|
+
bbto.format_version = kLatestBbtFormatVersion;
|
|
527
527
|
options.table_factory = std::make_shared<BlockBasedTableFactory>(bbto);
|
|
528
528
|
}
|
|
529
529
|
options.compression_opts.max_dict_bytes = compression_max_dict_bytes;
|
|
@@ -16,19 +16,20 @@
|
|
|
16
16
|
namespace ROCKSDB_NAMESPACE {
|
|
17
17
|
|
|
18
18
|
Status DefaultHooks::Open(const Options& db_options, const std::string& name,
|
|
19
|
-
DB
|
|
19
|
+
std::unique_ptr<DB>* dbptr) {
|
|
20
20
|
return DB::Open(db_options, name, dbptr);
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
Status DefaultHooks::Open(
|
|
24
24
|
const DBOptions& db_options, const std::string& name,
|
|
25
25
|
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
26
|
-
std::vector<ColumnFamilyHandle*>* handles, DB
|
|
26
|
+
std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr) {
|
|
27
27
|
return DB::Open(db_options, name, column_families, handles, dbptr);
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
Status DefaultHooks::OpenForReadOnly(const Options& options,
|
|
31
|
-
const std::string& name,
|
|
31
|
+
const std::string& name,
|
|
32
|
+
std::unique_ptr<DB>* dbptr,
|
|
32
33
|
bool error_if_wal_file_exists = false) {
|
|
33
34
|
return DB::OpenForReadOnly(options, name, dbptr, error_if_wal_file_exists);
|
|
34
35
|
};
|
|
@@ -36,7 +37,7 @@ Status DefaultHooks::OpenForReadOnly(const Options& options,
|
|
|
36
37
|
Status DefaultHooks::OpenForReadOnly(
|
|
37
38
|
const Options& options, const std::string& name,
|
|
38
39
|
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
39
|
-
std::vector<ColumnFamilyHandle*>* handles, DB
|
|
40
|
+
std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr) {
|
|
40
41
|
return DB::OpenForReadOnly(options, name, column_families, handles, dbptr);
|
|
41
42
|
};
|
|
42
43
|
Status DefaultHooks::OpenTransactionDB(
|
|
@@ -72,7 +73,7 @@ Status DefaultHooks::OpenOptimisticTransactionDB(
|
|
|
72
73
|
Status DefaultHooks::OpenAsSecondary(const Options& options,
|
|
73
74
|
const std::string& name,
|
|
74
75
|
const std::string& secondary_path,
|
|
75
|
-
DB
|
|
76
|
+
std::unique_ptr<DB>* dbptr) {
|
|
76
77
|
return DB::OpenAsSecondary(options, name, secondary_path, dbptr);
|
|
77
78
|
}
|
|
78
79
|
Status DefaultHooks::OpenAsFollower(const Options& options,
|
|
@@ -69,7 +69,7 @@ class TraceAnalyzerTest : public testing::Test {
|
|
|
69
69
|
ro.iterate_lower_bound = &lower_bound;
|
|
70
70
|
WriteOptions wo;
|
|
71
71
|
TraceOptions trace_opt;
|
|
72
|
-
DB
|
|
72
|
+
std::unique_ptr<DB> db_;
|
|
73
73
|
std::string value;
|
|
74
74
|
std::unique_ptr<TraceWriter> trace_writer;
|
|
75
75
|
Iterator* single_iter = nullptr;
|
|
@@ -125,7 +125,7 @@ class TraceAnalyzerTest : public testing::Test {
|
|
|
125
125
|
ASSERT_OK(env_->NewWritableFile(whole_path, &whole_f, env_options_));
|
|
126
126
|
std::string whole_str = "0x61\n0x62\n0x63\n0x64\n0x65\n0x66\n";
|
|
127
127
|
ASSERT_OK(whole_f->Append(whole_str));
|
|
128
|
-
|
|
128
|
+
db_.reset();
|
|
129
129
|
ASSERT_OK(DestroyDB(dbname_, options));
|
|
130
130
|
}
|
|
131
131
|
|
|
@@ -786,7 +786,7 @@ TEST_F(TraceAnalyzerTest, Iterator) {
|
|
|
786
786
|
}
|
|
787
787
|
|
|
788
788
|
TEST_F(TraceAnalyzerTest, ExistsPreviousTraceWriteError) {
|
|
789
|
-
DB
|
|
789
|
+
std::unique_ptr<DB> db_;
|
|
790
790
|
Options options;
|
|
791
791
|
options.create_if_missing = true;
|
|
792
792
|
|
|
@@ -823,7 +823,7 @@ TEST_F(TraceAnalyzerTest, ExistsPreviousTraceWriteError) {
|
|
|
823
823
|
ASSERT_TRUE(s.ToString().find("Tracing has seen error") != std::string::npos);
|
|
824
824
|
ASSERT_TRUE(s.ToString().find("Injected") != std::string::npos);
|
|
825
825
|
|
|
826
|
-
|
|
826
|
+
db_.reset();
|
|
827
827
|
ASSERT_OK(DestroyDB(dbname_, options));
|
|
828
828
|
}
|
|
829
829
|
|
|
@@ -145,13 +145,11 @@ class WriteStress {
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
// open DB
|
|
148
|
-
DB
|
|
149
|
-
Status s = DB::Open(options, FLAGS_db, &db);
|
|
148
|
+
Status s = DB::Open(options, FLAGS_db, &db_);
|
|
150
149
|
if (!s.ok()) {
|
|
151
150
|
fprintf(stderr, "Can't open database: %s\n", s.ToString().c_str());
|
|
152
151
|
std::abort();
|
|
153
152
|
}
|
|
154
|
-
db_.reset(db);
|
|
155
153
|
}
|
|
156
154
|
|
|
157
155
|
void WriteThread() {
|
|
@@ -13,28 +13,28 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
13
13
|
|
|
14
14
|
// Background:
|
|
15
15
|
// std::atomic is somewhat easy to misuse:
|
|
16
|
-
// * Implicit conversion to T
|
|
17
|
-
// memory
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
16
|
+
// * Implicit conversion to T makes it easy to use an unnecessarily strong
|
|
17
|
+
// memory ordering (std::memory_order_seq_cst) and to hide atomic operations
|
|
18
|
+
// that should be evident on reading the code.
|
|
19
|
+
// * Similarly, defaulting to std::memory_order_seq_cst for atomic operations
|
|
20
|
+
// makes it easy to use unnecessarily strong orderings. (It's always safe if
|
|
21
|
+
// some ordering is safe, but it's better to be intentional and thoughtful when
|
|
22
|
+
// carefully optimizing code with atomics.) Legitimate needs for seq_cst vs.
|
|
23
|
+
// acq_rel are rare, such as drawing inferences across two atomics in
|
|
24
|
+
// implementing hazard pointers.
|
|
21
25
|
// * It's easy to use nonsensical (UB) combinations like store with
|
|
22
|
-
// std::memory_order_acquire.
|
|
23
|
-
//
|
|
24
|
-
// because sequential consistency for the user, potentially writing from
|
|
25
|
-
// multiple threads, is provided by explicit versioning with sequence numbers.
|
|
26
|
-
// If threads A & B update separate atomics, it's typically OK if threads C & D
|
|
27
|
-
// see those updates in different orders.
|
|
26
|
+
// std::memory_order_acquire. Getting these right in development is an
|
|
27
|
+
// unnecessary cognitive overhead even if they are caught by UBSAN.
|
|
28
28
|
//
|
|
29
|
-
// For such reasons, we provide wrappers below to make
|
|
29
|
+
// For such reasons, we provide wrappers below to make clear and explicit
|
|
30
|
+
// usage of atomics easier.
|
|
30
31
|
|
|
31
|
-
// Wrapper around std::atomic
|
|
32
|
+
// Wrapper around std::atomic for better code clarity (see Background above).
|
|
32
33
|
//
|
|
33
|
-
// This relaxed-only wrapper is intended for atomics that
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
// the same result can be a RelaxedAtomic.
|
|
34
|
+
// This relaxed-only wrapper is intended for atomics that are not used to
|
|
35
|
+
// synchronize other data across threads (only the atomic data), so can always
|
|
36
|
+
// used relaxed memory ordering. For example, a cross-thread counter that never
|
|
37
|
+
// returns the same result can be a RelaxedAtomic.
|
|
38
38
|
template <typename T>
|
|
39
39
|
class RelaxedAtomic {
|
|
40
40
|
public:
|
|
@@ -72,14 +72,21 @@ class RelaxedAtomic {
|
|
|
72
72
|
std::atomic<T> v_;
|
|
73
73
|
};
|
|
74
74
|
|
|
75
|
-
//
|
|
75
|
+
// A reasonably general-purpose wrapper around std::atomic for better code
|
|
76
|
+
// clarity (see Background above).
|
|
76
77
|
//
|
|
77
|
-
//
|
|
78
|
-
//
|
|
78
|
+
// Operations use std::memory_order_acq_rel by default (or just acquire or just
|
|
79
|
+
// release for read-only and write-only operations), but relaxed operations are
|
|
80
|
+
// also available and can be mixed in when appropriate.
|
|
81
|
+
//
|
|
82
|
+
// Future: add std::memory_order_seqcst variants like StoreSeqCst if/when
|
|
83
|
+
// there's a need for them (rare). No distinct type is needed because the
|
|
84
|
+
// distinction between acq_rel and seq_cst is more about where it is used in
|
|
85
|
+
// combination with other atomics than the atomic itself.
|
|
79
86
|
template <typename T>
|
|
80
|
-
class
|
|
87
|
+
class Atomic : public RelaxedAtomic<T> {
|
|
81
88
|
public:
|
|
82
|
-
explicit
|
|
89
|
+
explicit Atomic(T initial = {}) : RelaxedAtomic<T>(initial) {}
|
|
83
90
|
void Store(T desired) {
|
|
84
91
|
RelaxedAtomic<T>::v_.store(desired, std::memory_order_release);
|
|
85
92
|
}
|
|
@@ -64,9 +64,9 @@ std::unique_ptr<Compressor> AutoSkipCompressorWrapper::Clone() const {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
std::unique_ptr<Compressor> AutoSkipCompressorWrapper::MaybeCloneSpecialized(
|
|
67
|
-
CacheEntryRole block_type,
|
|
67
|
+
CacheEntryRole block_type, DictConfigArgs&& dict_config) const {
|
|
68
68
|
auto clone =
|
|
69
|
-
wrapped_->CloneMaybeSpecialized(block_type, std::move(
|
|
69
|
+
wrapped_->CloneMaybeSpecialized(block_type, std::move(dict_config));
|
|
70
70
|
return std::make_unique<AutoSkipCompressorWrapper>(std::move(clone), opts_);
|
|
71
71
|
}
|
|
72
72
|
|
|
@@ -189,11 +189,10 @@ const char* CostAwareCompressor::Name() const { return "CostAwareCompressor"; }
|
|
|
189
189
|
std::unique_ptr<Compressor> CostAwareCompressor::Clone() const {
|
|
190
190
|
return std::make_unique<CostAwareCompressor>(opts_);
|
|
191
191
|
}
|
|
192
|
-
|
|
192
|
+
Compressor::DictConfig CostAwareCompressor::GetDictGuidance(
|
|
193
193
|
CacheEntryRole block_type) const {
|
|
194
194
|
auto idx = allcompressors_index_.back();
|
|
195
|
-
return allcompressors_[idx.first][idx.second]->
|
|
196
|
-
block_type);
|
|
195
|
+
return allcompressors_[idx.first][idx.second]->GetDictGuidance(block_type);
|
|
197
196
|
}
|
|
198
197
|
|
|
199
198
|
Slice CostAwareCompressor::GetSerializedDict() const {
|
|
@@ -205,12 +204,12 @@ CompressionType CostAwareCompressor::GetPreferredCompressionType() const {
|
|
|
205
204
|
return kZSTD;
|
|
206
205
|
}
|
|
207
206
|
std::unique_ptr<Compressor> CostAwareCompressor::MaybeCloneSpecialized(
|
|
208
|
-
CacheEntryRole block_type,
|
|
207
|
+
CacheEntryRole block_type, DictConfigArgs&& dict_config) const {
|
|
209
208
|
// TODO: full dictionary compression support. Currently this just falls
|
|
210
209
|
// back on a non-multi compressor when asked to use a dictionary.
|
|
211
210
|
auto idx = allcompressors_index_.back();
|
|
212
211
|
return allcompressors_[idx.first][idx.second]->MaybeCloneSpecialized(
|
|
213
|
-
block_type, std::move(
|
|
212
|
+
block_type, std::move(dict_config));
|
|
214
213
|
}
|
|
215
214
|
Status CostAwareCompressor::CompressBlock(Slice uncompressed_data,
|
|
216
215
|
char* compressed_output,
|
|
@@ -66,7 +66,7 @@ class AutoSkipCompressorWrapper : public CompressorWrapper {
|
|
|
66
66
|
|
|
67
67
|
std::unique_ptr<Compressor> Clone() const override;
|
|
68
68
|
std::unique_ptr<Compressor> MaybeCloneSpecialized(
|
|
69
|
-
CacheEntryRole block_type,
|
|
69
|
+
CacheEntryRole block_type, DictConfigArgs&& dict_config) const override;
|
|
70
70
|
Status CompressBlock(Slice uncompressed_data, char* compressed_output,
|
|
71
71
|
size_t* compressed_output_size,
|
|
72
72
|
CompressionType* out_compression_type,
|
|
@@ -153,12 +153,12 @@ class CostAwareCompressor : public Compressor {
|
|
|
153
153
|
explicit CostAwareCompressor(const CompressionOptions& opts);
|
|
154
154
|
const char* Name() const override;
|
|
155
155
|
std::unique_ptr<Compressor> Clone() const override;
|
|
156
|
-
|
|
156
|
+
DictConfig GetDictGuidance(CacheEntryRole block_type) const override;
|
|
157
157
|
Slice GetSerializedDict() const override;
|
|
158
158
|
CompressionType GetPreferredCompressionType() const override;
|
|
159
159
|
ManagedWorkingArea ObtainWorkingArea() override;
|
|
160
160
|
std::unique_ptr<Compressor> MaybeCloneSpecialized(
|
|
161
|
-
CacheEntryRole block_type,
|
|
161
|
+
CacheEntryRole block_type, DictConfigArgs&& dict_config) const override;
|
|
162
162
|
|
|
163
163
|
Status CompressBlock(Slice uncompressed_data, char* compressed_output,
|
|
164
164
|
size_t* compressed_output_size,
|