@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
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
#include "db/periodic_task_scheduler.h"
|
|
8
8
|
|
|
9
|
+
#include <set>
|
|
10
|
+
|
|
11
|
+
#include "db/column_family.h"
|
|
9
12
|
#include "db/db_test_util.h"
|
|
10
13
|
#include "env/composite_env_wrapper.h"
|
|
11
14
|
#include "test_util/mock_time_env.h"
|
|
@@ -124,15 +127,289 @@ TEST_F(PeriodicTaskSchedulerTest, Basic) {
|
|
|
124
127
|
ASSERT_EQ(3, pst_st_counter);
|
|
125
128
|
ASSERT_EQ(5, flush_info_log_counter);
|
|
126
129
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
130
|
+
// With the new ComputeTriggerCompactionPeriod() logic, since
|
|
131
|
+
// stats_dump_period_sec = stats_persist_period_sec = kPeriodSec, the trigger
|
|
132
|
+
// compaction period is also kPeriodSec. Unlike other periodic tasks,
|
|
133
|
+
// kTriggerCompaction uses run_immediately=false, so it doesn't fire on
|
|
134
|
+
// initial registration. It fires after each period elapses.
|
|
135
|
+
// By now we've had: initial 9s + 10s + 10s + 10s + 10s = 49s elapsed.
|
|
136
|
+
// kTriggerCompaction fires at t=10, 20, 30, 40 = 4 times.
|
|
137
|
+
ASSERT_EQ(4, trigger_compaction_counter);
|
|
138
|
+
|
|
139
|
+
// Sleep one more period and verify it increments
|
|
140
|
+
dbfull()->TEST_WaitForPeriodicTaskRun(
|
|
141
|
+
[&] { mock_clock_->MockSleepForSeconds(static_cast<int>(kPeriodSec)); });
|
|
142
|
+
ASSERT_EQ(5, trigger_compaction_counter);
|
|
143
|
+
|
|
144
|
+
Close();
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
TEST_F(PeriodicTaskSchedulerTest, TriggerCompactionPeriodComputation) {
|
|
148
|
+
// Test that ComputeTriggerCompactionPeriod() returns the expected values
|
|
149
|
+
// for different configurations.
|
|
150
|
+
Close();
|
|
151
|
+
|
|
152
|
+
// Helper to capture the trigger compaction period on Reopen
|
|
153
|
+
uint64_t trigger_compaction_period = 0;
|
|
154
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
155
|
+
"PeriodicTaskScheduler::Register:TaskRegistered", [&](void* arg) {
|
|
156
|
+
auto* task_info =
|
|
157
|
+
static_cast<std::pair<PeriodicTaskType, uint64_t>*>(arg);
|
|
158
|
+
if (task_info->first == PeriodicTaskType::kTriggerCompaction) {
|
|
159
|
+
trigger_compaction_period = task_info->second;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
163
|
+
|
|
164
|
+
// Helper to test the trigger compaction period with optional second CF
|
|
165
|
+
auto test_period = [&](Options& options, uint64_t expected_period,
|
|
166
|
+
const ColumnFamilyOptions* cf2_options = nullptr) {
|
|
167
|
+
options.create_if_missing = true;
|
|
168
|
+
options.env = mock_env_.get();
|
|
169
|
+
trigger_compaction_period = 0;
|
|
170
|
+
|
|
171
|
+
if (cf2_options == nullptr) {
|
|
172
|
+
Reopen(options);
|
|
173
|
+
} else {
|
|
174
|
+
// Open with two column families
|
|
175
|
+
// First destroy DB to start fresh
|
|
176
|
+
ASSERT_OK(DestroyDB(dbname_, options));
|
|
177
|
+
// Open and create cf2
|
|
178
|
+
ASSERT_OK(TryReopen(options));
|
|
179
|
+
CreateColumnFamilies({"cf2"}, options);
|
|
180
|
+
Close();
|
|
181
|
+
// Now reopen with both CFs
|
|
182
|
+
std::vector<ColumnFamilyDescriptor> cf_descs;
|
|
183
|
+
cf_descs.emplace_back(kDefaultColumnFamilyName, options);
|
|
184
|
+
cf_descs.emplace_back("cf2", *cf2_options);
|
|
185
|
+
std::vector<ColumnFamilyHandle*> handles;
|
|
186
|
+
ASSERT_OK(DB::Open(options, dbname_, cf_descs, &handles, &db_));
|
|
187
|
+
for (auto* h : handles) {
|
|
188
|
+
delete h;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
ASSERT_EQ(expected_period, trigger_compaction_period);
|
|
192
|
+
Close();
|
|
193
|
+
// Destroy DB to clean up for next test case
|
|
194
|
+
ASSERT_OK(DestroyDB(dbname_, options));
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// Case 1: 12-hour cap when stats_dump_period is longer
|
|
198
|
+
{
|
|
199
|
+
Options options;
|
|
200
|
+
options.stats_dump_period_sec = 24 * 60 * 60; // 24 hours
|
|
201
|
+
options.stats_persist_period_sec = 0;
|
|
202
|
+
test_period(options, 12 * 60 * 60); // Expect 12 hours (cap)
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Case 2: stats_dump_period_sec sets the period (when smaller than 12 hours)
|
|
206
|
+
{
|
|
207
|
+
Options options;
|
|
208
|
+
options.stats_dump_period_sec = 3600; // 1 hour
|
|
209
|
+
options.stats_persist_period_sec = 0;
|
|
210
|
+
test_period(options, 3600);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Case 3: stats_persist_period_sec sets the period
|
|
214
|
+
{
|
|
215
|
+
Options options;
|
|
216
|
+
options.stats_dump_period_sec = 0;
|
|
217
|
+
options.stats_persist_period_sec = 1800; // 30 minutes
|
|
218
|
+
test_period(options, 1800);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Case 4: periodic_compaction_seconds / kTriggerDivisor
|
|
222
|
+
{
|
|
223
|
+
Options options;
|
|
224
|
+
options.stats_dump_period_sec = 24 * 60 * 60;
|
|
225
|
+
options.stats_persist_period_sec = 0;
|
|
226
|
+
options.periodic_compaction_seconds = 500; // 500 / 5 = 100
|
|
227
|
+
test_period(options, 100);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Case 5: ttl / kTriggerDivisor
|
|
231
|
+
{
|
|
232
|
+
Options options;
|
|
233
|
+
options.stats_dump_period_sec = 24 * 60 * 60;
|
|
234
|
+
options.stats_persist_period_sec = 0;
|
|
235
|
+
options.ttl = 600; // 600 / 5 = 120
|
|
236
|
+
test_period(options, 120);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Case 6: bottommost_file_compaction_delay / kTriggerDivisor
|
|
240
|
+
{
|
|
241
|
+
Options options;
|
|
242
|
+
options.stats_dump_period_sec = 24 * 60 * 60;
|
|
243
|
+
options.stats_persist_period_sec = 0;
|
|
244
|
+
options.bottommost_file_compaction_delay = 250; // 250 / 5 = 50
|
|
245
|
+
test_period(options, 50);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Case 7: file_temperature_age_thresholds / kTriggerDivisor (FIFO)
|
|
249
|
+
{
|
|
250
|
+
Options options;
|
|
251
|
+
options.stats_dump_period_sec = 24 * 60 * 60;
|
|
252
|
+
options.stats_persist_period_sec = 0;
|
|
253
|
+
options.compaction_style = kCompactionStyleFIFO;
|
|
254
|
+
options.num_levels = 1; // Required for file_temperature_age_thresholds
|
|
255
|
+
options.compaction_options_fifo.file_temperature_age_thresholds = {
|
|
256
|
+
{Temperature::kWarm, 1000}}; // 1000 / 5 = 200
|
|
257
|
+
// FIFO requires max_table_files_size to be set
|
|
258
|
+
options.compaction_options_fifo.max_table_files_size = 1024 * 1024 * 1024;
|
|
259
|
+
test_period(options, 200);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Case 8: Minimum of multiple CF options is used
|
|
263
|
+
{
|
|
264
|
+
Options options;
|
|
265
|
+
options.stats_dump_period_sec = 24 * 60 * 60;
|
|
266
|
+
options.stats_persist_period_sec = 0;
|
|
267
|
+
options.periodic_compaction_seconds = 1000; // 1000 / 5 = 200
|
|
268
|
+
|
|
269
|
+
ColumnFamilyOptions cf2_opts;
|
|
270
|
+
cf2_opts.ttl = 500; // 500 / 5 = 100 (smaller, should be used)
|
|
271
|
+
|
|
272
|
+
test_period(options, 100, &cf2_opts);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Case 9: Second CF has larger value, first CF's value is used
|
|
276
|
+
{
|
|
277
|
+
Options options;
|
|
278
|
+
options.stats_dump_period_sec = 24 * 60 * 60;
|
|
279
|
+
options.stats_persist_period_sec = 0;
|
|
280
|
+
options.ttl = 300; // 300 / 5 = 60
|
|
281
|
+
|
|
282
|
+
ColumnFamilyOptions cf2_opts;
|
|
283
|
+
cf2_opts.periodic_compaction_seconds = 1000; // 1000 / 5 = 200 (larger)
|
|
284
|
+
|
|
285
|
+
test_period(options, 60, &cf2_opts);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// Case 10: Minimum is 1 second (never 0)
|
|
289
|
+
{
|
|
290
|
+
Options options;
|
|
291
|
+
options.stats_dump_period_sec = 0;
|
|
292
|
+
options.stats_persist_period_sec = 0;
|
|
293
|
+
options.ttl = 3; // 3 / 5 = 0, but clamped to 1
|
|
294
|
+
test_period(options, 1);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Test that TriggerPeriodicCompaction() properly considers CFs for compaction
|
|
299
|
+
// based on all time-based compaction options (not just
|
|
300
|
+
// periodic_compaction_seconds). This is a regression test for the bug where
|
|
301
|
+
// only periodic_compaction_seconds was checked, causing CFs with ttl,
|
|
302
|
+
// bottommost_file_compaction_delay, or file_temperature_age_thresholds to not
|
|
303
|
+
// be considered.
|
|
304
|
+
//
|
|
305
|
+
// NOTE: This test uses a separate test class without mock time because the
|
|
306
|
+
// PeriodicTaskSchedulerTest fixture's mock clock setup does not integrate
|
|
307
|
+
// properly with opening the DB via DB::Open() with multiple column families
|
|
308
|
+
// having different options.
|
|
309
|
+
class TriggerCompactionTest : public DBTestBase {
|
|
310
|
+
public:
|
|
311
|
+
TriggerCompactionTest()
|
|
312
|
+
: DBTestBase("trigger_compaction_test", /*env_do_fsync=*/true) {}
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
TEST_F(TriggerCompactionTest, QueuesAllTimeBasedOptions) {
|
|
316
|
+
Close();
|
|
317
|
+
|
|
318
|
+
// Track which CFs get their compaction score computed during
|
|
319
|
+
// TriggerPeriodicCompaction
|
|
320
|
+
std::set<std::string> cfs_with_score_computed;
|
|
321
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
322
|
+
"DBImpl::TriggerPeriodicCompaction:BeforeComputeCompactionScore",
|
|
323
|
+
[&](void* arg) {
|
|
324
|
+
auto* cfd = static_cast<ColumnFamilyData*>(arg);
|
|
325
|
+
cfs_with_score_computed.insert(cfd->GetName());
|
|
326
|
+
});
|
|
327
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
328
|
+
|
|
329
|
+
// Use small period so the test completes quickly with real time
|
|
330
|
+
constexpr unsigned int kPeriodSec = 1;
|
|
331
|
+
|
|
332
|
+
// Default CF: no time-based compaction options
|
|
333
|
+
Options options;
|
|
334
|
+
options.create_if_missing = true;
|
|
335
|
+
options.stats_dump_period_sec = kPeriodSec;
|
|
336
|
+
options.stats_persist_period_sec = 0;
|
|
337
|
+
options.periodic_compaction_seconds = 0;
|
|
338
|
+
options.ttl = 0;
|
|
339
|
+
options.bottommost_file_compaction_delay = 0;
|
|
340
|
+
|
|
341
|
+
// Create the DB with default CF first
|
|
342
|
+
DestroyAndReopen(options);
|
|
343
|
+
|
|
344
|
+
// Create the additional CFs (using same options, will set specific options
|
|
345
|
+
// on reopen)
|
|
346
|
+
CreateColumnFamilies(
|
|
347
|
+
{"cf_periodic", "cf_ttl", "cf_bottommost", "cf_fifo", "cf_none"},
|
|
348
|
+
options);
|
|
349
|
+
Close();
|
|
350
|
+
|
|
351
|
+
// Now reopen with specific options for each CF
|
|
352
|
+
std::vector<std::string> cf_names = {
|
|
353
|
+
kDefaultColumnFamilyName, "cf_periodic", "cf_ttl",
|
|
354
|
+
"cf_bottommost", "cf_fifo", "cf_none"};
|
|
355
|
+
std::vector<Options> cf_options;
|
|
356
|
+
|
|
357
|
+
// default: no time-based options
|
|
358
|
+
cf_options.push_back(options);
|
|
359
|
+
|
|
360
|
+
// cf_periodic: periodic_compaction_seconds
|
|
361
|
+
Options opt_periodic = options;
|
|
362
|
+
opt_periodic.periodic_compaction_seconds = 100;
|
|
363
|
+
cf_options.push_back(opt_periodic);
|
|
364
|
+
|
|
365
|
+
// cf_ttl: ttl
|
|
366
|
+
Options opt_ttl = options;
|
|
367
|
+
opt_ttl.ttl = 100;
|
|
368
|
+
cf_options.push_back(opt_ttl);
|
|
369
|
+
|
|
370
|
+
// cf_bottommost: bottommost_file_compaction_delay
|
|
371
|
+
Options opt_bottommost = options;
|
|
372
|
+
opt_bottommost.bottommost_file_compaction_delay = 100;
|
|
373
|
+
cf_options.push_back(opt_bottommost);
|
|
374
|
+
|
|
375
|
+
// cf_fifo: file_temperature_age_thresholds (requires FIFO compaction)
|
|
376
|
+
Options opt_fifo = options;
|
|
377
|
+
opt_fifo.compaction_style = kCompactionStyleFIFO;
|
|
378
|
+
opt_fifo.num_levels = 1;
|
|
379
|
+
opt_fifo.compaction_options_fifo.max_table_files_size = 1024 * 1024 * 1024;
|
|
380
|
+
opt_fifo.compaction_options_fifo.file_temperature_age_thresholds = {
|
|
381
|
+
{Temperature::kWarm, 100}};
|
|
382
|
+
cf_options.push_back(opt_fifo);
|
|
383
|
+
|
|
384
|
+
// cf_none: explicitly no time-based options
|
|
385
|
+
Options opt_none = options;
|
|
386
|
+
opt_none.periodic_compaction_seconds = 0;
|
|
387
|
+
opt_none.ttl = 0;
|
|
388
|
+
opt_none.bottommost_file_compaction_delay = 0;
|
|
389
|
+
cf_options.push_back(opt_none);
|
|
390
|
+
|
|
391
|
+
ReopenWithColumnFamilies(cf_names, cf_options);
|
|
392
|
+
|
|
393
|
+
// Wait for TriggerPeriodicCompaction to run using TEST_WaitForPeriodicTaskRun
|
|
394
|
+
// with a real sleep callback to advance real time
|
|
395
|
+
dbfull()->TEST_WaitForPeriodicTaskRun(
|
|
396
|
+
[&] { Env::Default()->SleepForMicroseconds(kPeriodSec * 1000000); });
|
|
397
|
+
|
|
398
|
+
// Verify CFs with time-based options had their compaction score computed
|
|
399
|
+
EXPECT_GT(cfs_with_score_computed.count("cf_periodic"), 0u)
|
|
400
|
+
<< "Expected cf_periodic to have compaction score computed";
|
|
401
|
+
EXPECT_GT(cfs_with_score_computed.count("cf_ttl"), 0u)
|
|
402
|
+
<< "Expected cf_ttl to have compaction score computed";
|
|
403
|
+
EXPECT_GT(cfs_with_score_computed.count("cf_bottommost"), 0u)
|
|
404
|
+
<< "Expected cf_bottommost to have compaction score computed";
|
|
405
|
+
EXPECT_GT(cfs_with_score_computed.count("cf_fifo"), 0u)
|
|
406
|
+
<< "Expected cf_fifo to have compaction score computed";
|
|
407
|
+
|
|
408
|
+
// CFs without time-based options should NOT have score computed
|
|
409
|
+
EXPECT_EQ(cfs_with_score_computed.count("default"), 0u)
|
|
410
|
+
<< "Expected default CF to NOT have compaction score computed";
|
|
411
|
+
EXPECT_EQ(cfs_with_score_computed.count("cf_none"), 0u)
|
|
412
|
+
<< "Expected cf_none to NOT have compaction score computed";
|
|
136
413
|
|
|
137
414
|
Close();
|
|
138
415
|
}
|
|
@@ -157,13 +434,13 @@ TEST_F(PeriodicTaskSchedulerTest, MultiInstances) {
|
|
|
157
434
|
[&](void*) { pst_st_counter++; });
|
|
158
435
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
159
436
|
|
|
160
|
-
auto dbs = std::vector<DB
|
|
437
|
+
auto dbs = std::vector<std::unique_ptr<DB>>(kInstanceNum);
|
|
161
438
|
for (int i = 0; i < kInstanceNum; i++) {
|
|
162
439
|
ASSERT_OK(
|
|
163
440
|
DB::Open(options, test::PerThreadDBPath(std::to_string(i)), &(dbs[i])));
|
|
164
441
|
}
|
|
165
442
|
|
|
166
|
-
auto dbi = static_cast_with_check<DBImpl>(dbs[kInstanceNum - 1]);
|
|
443
|
+
auto dbi = static_cast_with_check<DBImpl>(dbs[kInstanceNum - 1].get());
|
|
167
444
|
|
|
168
445
|
const PeriodicTaskScheduler& scheduler = dbi->TEST_GetPeriodicTaskScheduler();
|
|
169
446
|
// kRecordSeqnoTime is not registered since the feature is not enabled
|
|
@@ -190,7 +467,7 @@ TEST_F(PeriodicTaskSchedulerTest, MultiInstances) {
|
|
|
190
467
|
|
|
191
468
|
int half = kInstanceNum / 2;
|
|
192
469
|
for (int i = 0; i < half; i++) {
|
|
193
|
-
|
|
470
|
+
dbs[i].reset();
|
|
194
471
|
}
|
|
195
472
|
|
|
196
473
|
expected_run += (kInstanceNum - half) * 2;
|
|
@@ -204,7 +481,7 @@ TEST_F(PeriodicTaskSchedulerTest, MultiInstances) {
|
|
|
204
481
|
|
|
205
482
|
for (int i = half; i < kInstanceNum; i++) {
|
|
206
483
|
ASSERT_OK(dbs[i]->Close());
|
|
207
|
-
|
|
484
|
+
dbs[i].reset();
|
|
208
485
|
}
|
|
209
486
|
}
|
|
210
487
|
|
|
@@ -229,11 +506,11 @@ TEST_F(PeriodicTaskSchedulerTest, MultiEnv) {
|
|
|
229
506
|
options1.env = mock_env2.get();
|
|
230
507
|
|
|
231
508
|
std::string dbname = test::PerThreadDBPath("multi_env_test");
|
|
232
|
-
DB
|
|
509
|
+
std::unique_ptr<DB> db;
|
|
233
510
|
ASSERT_OK(DB::Open(options2, dbname, &db));
|
|
234
511
|
|
|
235
512
|
ASSERT_OK(db->Close());
|
|
236
|
-
|
|
513
|
+
db.reset();
|
|
237
514
|
Close();
|
|
238
515
|
}
|
|
239
516
|
|
|
@@ -98,7 +98,7 @@ class PlainTableDBTest : public testing::Test,
|
|
|
98
98
|
private:
|
|
99
99
|
std::string dbname_;
|
|
100
100
|
Env* env_;
|
|
101
|
-
DB
|
|
101
|
+
std::unique_ptr<DB> db_;
|
|
102
102
|
|
|
103
103
|
bool mmap_mode_;
|
|
104
104
|
Options last_options_;
|
|
@@ -107,7 +107,7 @@ class PlainTableDBTest : public testing::Test,
|
|
|
107
107
|
PlainTableDBTest() : env_(Env::Default()) {}
|
|
108
108
|
|
|
109
109
|
~PlainTableDBTest() override {
|
|
110
|
-
|
|
110
|
+
db_.reset();
|
|
111
111
|
EXPECT_OK(DestroyDB(dbname_, Options()));
|
|
112
112
|
}
|
|
113
113
|
|
|
@@ -115,7 +115,7 @@ class PlainTableDBTest : public testing::Test,
|
|
|
115
115
|
mmap_mode_ = GetParam();
|
|
116
116
|
dbname_ = test::PerThreadDBPath("plain_table_db_test");
|
|
117
117
|
EXPECT_OK(DestroyDB(dbname_, Options()));
|
|
118
|
-
db_
|
|
118
|
+
db_.reset();
|
|
119
119
|
Reopen();
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -144,14 +144,11 @@ class PlainTableDBTest : public testing::Test,
|
|
|
144
144
|
return options;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_); }
|
|
147
|
+
DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_.get()); }
|
|
148
148
|
|
|
149
149
|
void Reopen(Options* options = nullptr) { ASSERT_OK(TryReopen(options)); }
|
|
150
150
|
|
|
151
|
-
void Close() {
|
|
152
|
-
delete db_;
|
|
153
|
-
db_ = nullptr;
|
|
154
|
-
}
|
|
151
|
+
void Close() { db_.reset(); }
|
|
155
152
|
|
|
156
153
|
bool mmap_mode() const { return mmap_mode_; }
|
|
157
154
|
|
|
@@ -162,24 +159,21 @@ class PlainTableDBTest : public testing::Test,
|
|
|
162
159
|
}
|
|
163
160
|
|
|
164
161
|
void Destroy(Options* options) {
|
|
165
|
-
|
|
166
|
-
db_ = nullptr;
|
|
162
|
+
db_.reset();
|
|
167
163
|
ASSERT_OK(DestroyDB(dbname_, *options));
|
|
168
164
|
}
|
|
169
165
|
|
|
170
|
-
Status PureReopen(Options* options, DB
|
|
166
|
+
Status PureReopen(Options* options, std::unique_ptr<DB>* db) {
|
|
171
167
|
return DB::Open(*options, dbname_, db);
|
|
172
168
|
}
|
|
173
169
|
|
|
174
170
|
Status ReopenForReadOnly(Options* options) {
|
|
175
|
-
|
|
176
|
-
db_ = nullptr;
|
|
171
|
+
db_.reset();
|
|
177
172
|
return DB::OpenForReadOnly(*options, dbname_, &db_);
|
|
178
173
|
}
|
|
179
174
|
|
|
180
175
|
Status TryReopen(Options* options = nullptr) {
|
|
181
|
-
|
|
182
|
-
db_ = nullptr;
|
|
176
|
+
db_.reset();
|
|
183
177
|
Options opts;
|
|
184
178
|
if (options != nullptr) {
|
|
185
179
|
opts = *options;
|
|
@@ -495,8 +489,7 @@ TEST_P(PlainTableDBTest, Flush) {
|
|
|
495
489
|
ASSERT_GT(int_num, 0U);
|
|
496
490
|
|
|
497
491
|
TablePropertiesCollection ptc;
|
|
498
|
-
ASSERT_OK(
|
|
499
|
-
static_cast<DB*>(dbfull())->GetPropertiesOfAllTables(&ptc));
|
|
492
|
+
ASSERT_OK(dbfull()->GetPropertiesOfAllTables(&ptc));
|
|
500
493
|
ASSERT_EQ(1U, ptc.size());
|
|
501
494
|
auto row = ptc.begin();
|
|
502
495
|
auto tp = row->second;
|
|
@@ -220,8 +220,6 @@ class SamePrefixTransform : public SliceTransform {
|
|
|
220
220
|
return false;
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
bool InRange(const Slice& dst) const override { return dst == prefix_; }
|
|
224
|
-
|
|
225
223
|
bool FullLengthEnabled(size_t* /*len*/) const override { return false; }
|
|
226
224
|
};
|
|
227
225
|
|
|
@@ -229,8 +227,8 @@ class SamePrefixTransform : public SliceTransform {
|
|
|
229
227
|
|
|
230
228
|
class PrefixTest : public testing::Test {
|
|
231
229
|
public:
|
|
232
|
-
std::
|
|
233
|
-
DB
|
|
230
|
+
std::unique_ptr<DB> OpenDb() {
|
|
231
|
+
std::unique_ptr<DB> db;
|
|
234
232
|
|
|
235
233
|
options.create_if_missing = true;
|
|
236
234
|
options.write_buffer_size = FLAGS_write_buffer_size;
|
|
@@ -251,7 +249,7 @@ class PrefixTest : public testing::Test {
|
|
|
251
249
|
|
|
252
250
|
Status s = DB::Open(options, kDbName, &db);
|
|
253
251
|
EXPECT_OK(s);
|
|
254
|
-
return
|
|
252
|
+
return db;
|
|
255
253
|
}
|
|
256
254
|
|
|
257
255
|
void FirstOption() { option_config_ = kBegin; }
|
|
@@ -304,7 +302,7 @@ class PrefixTest : public testing::Test {
|
|
|
304
302
|
};
|
|
305
303
|
|
|
306
304
|
TEST(SamePrefixTest, InDomainTest) {
|
|
307
|
-
DB
|
|
305
|
+
std::unique_ptr<DB> db;
|
|
308
306
|
Options options;
|
|
309
307
|
options.create_if_missing = true;
|
|
310
308
|
options.prefix_extractor.reset(new SamePrefixTransform("HHKB"));
|
|
@@ -331,7 +329,7 @@ TEST(SamePrefixTest, InDomainTest) {
|
|
|
331
329
|
ASSERT_EQ(db_iter->value(), "idk");
|
|
332
330
|
|
|
333
331
|
delete db_iter;
|
|
334
|
-
|
|
332
|
+
db.reset();
|
|
335
333
|
ASSERT_OK(DestroyDB(kDbName, Options()));
|
|
336
334
|
}
|
|
337
335
|
|
|
@@ -348,7 +346,7 @@ TEST(SamePrefixTest, InDomainTest) {
|
|
|
348
346
|
ASSERT_TRUE(db_iter->Valid());
|
|
349
347
|
ASSERT_OK(db_iter->status());
|
|
350
348
|
delete db_iter;
|
|
351
|
-
|
|
349
|
+
db.reset();
|
|
352
350
|
ASSERT_OK(DestroyDB(kDbName, Options()));
|
|
353
351
|
}
|
|
354
352
|
}
|
|
@@ -704,17 +704,17 @@ class Repairer {
|
|
|
704
704
|
VersionEdit dummy_edit;
|
|
705
705
|
for (const auto* table : cf_id_and_tables.second) {
|
|
706
706
|
// TODO(opt): separate out into multiple levels
|
|
707
|
+
const auto& meta = table->meta;
|
|
707
708
|
dummy_edit.AddFile(
|
|
708
|
-
0,
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
table->meta.user_defined_timestamps_persisted);
|
|
709
|
+
0, meta.fd.GetNumber(), meta.fd.GetPathId(), meta.fd.GetFileSize(),
|
|
710
|
+
meta.smallest, meta.largest, meta.fd.smallest_seqno,
|
|
711
|
+
meta.fd.largest_seqno, meta.marked_for_compaction, meta.temperature,
|
|
712
|
+
meta.oldest_blob_file_number, meta.oldest_ancester_time,
|
|
713
|
+
meta.file_creation_time, meta.epoch_number, meta.file_checksum,
|
|
714
|
+
meta.file_checksum_func_name, meta.unique_id,
|
|
715
|
+
meta.compensated_range_deletion_size, meta.tail_size,
|
|
716
|
+
meta.user_defined_timestamps_persisted, meta.min_timestamp,
|
|
717
|
+
meta.max_timestamp);
|
|
718
718
|
}
|
|
719
719
|
s = dummy_version_builder.Apply(&dummy_edit);
|
|
720
720
|
if (s.ok()) {
|
|
@@ -661,14 +661,14 @@ TEST_P(SeqnoTimeTablePropTest, MultiInstancesBasic) {
|
|
|
661
661
|
options.stats_dump_period_sec = 0;
|
|
662
662
|
options.stats_persist_period_sec = 0;
|
|
663
663
|
|
|
664
|
-
auto dbs = std::vector<DB
|
|
664
|
+
auto dbs = std::vector<std::unique_ptr<DB>>(kInstanceNum);
|
|
665
665
|
for (int i = 0; i < kInstanceNum; i++) {
|
|
666
666
|
ASSERT_OK(
|
|
667
667
|
DB::Open(options, test::PerThreadDBPath(std::to_string(i)), &(dbs[i])));
|
|
668
668
|
}
|
|
669
669
|
|
|
670
670
|
// Make sure the second instance has the worker enabled
|
|
671
|
-
auto dbi = static_cast_with_check<DBImpl>(dbs[1]);
|
|
671
|
+
auto dbi = static_cast_with_check<DBImpl>(dbs[1].get());
|
|
672
672
|
WriteOptions wo;
|
|
673
673
|
for (int i = 0; i < 200; i++) {
|
|
674
674
|
ASSERT_OK(dbi->Put(wo, Key(i), "value"));
|
|
@@ -680,7 +680,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiInstancesBasic) {
|
|
|
680
680
|
|
|
681
681
|
for (int i = 0; i < kInstanceNum; i++) {
|
|
682
682
|
ASSERT_OK(dbs[i]->Close());
|
|
683
|
-
|
|
683
|
+
dbs[i].reset();
|
|
684
684
|
}
|
|
685
685
|
}
|
|
686
686
|
|
|
@@ -792,8 +792,8 @@ TEST_P(SeqnoTimeTablePropTest, SeqnoToTimeMappingUniversal) {
|
|
|
792
792
|
}
|
|
793
793
|
ASSERT_GT(num_seqno_zeroing, 0);
|
|
794
794
|
std::vector<KeyVersion> key_versions;
|
|
795
|
-
ASSERT_OK(GetAllKeyVersions(
|
|
796
|
-
|
|
795
|
+
ASSERT_OK(GetAllKeyVersions(
|
|
796
|
+
db_.get(), {}, {}, std::numeric_limits<size_t>::max(), &key_versions));
|
|
797
797
|
// make sure there're more than 300 keys and first 100 keys are having seqno
|
|
798
798
|
// zeroed out, the last 100 key seqno not zeroed out
|
|
799
799
|
ASSERT_GT(key_versions.size(), 300);
|