@nxtedition/rocksdb 15.4.0 → 15.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +24 -19
- package/cache.js +1 -1
- package/chained-batch.js +12 -3
- package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
- package/deps/rocksdb/rocksdb/BUCK +42 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
- package/deps/rocksdb/rocksdb/Makefile +59 -32
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
- package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
- package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
- package/deps/rocksdb/rocksdb/db/builder.h +7 -0
- package/deps/rocksdb/rocksdb/db/c.cc +373 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
- package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
- package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
- package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
- package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
- package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
- package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
- package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
- package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
- package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
- package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
- package/deps/rocksdb/rocksdb/env/env.cc +1 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
- package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
- package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
- package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
- package/deps/rocksdb/rocksdb/folly.mk +22 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
- package/deps/rocksdb/rocksdb/options/options.cc +5 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
- package/deps/rocksdb/rocksdb/port/lang.h +4 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
- package/deps/rocksdb/rocksdb/src.mk +12 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
- package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
- package/deps/rocksdb/rocksdb/table/format.cc +27 -15
- package/deps/rocksdb/rocksdb/table/format.h +41 -15
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
- package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
- package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
- package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
- package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
- package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
- package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
- package/deps/rocksdb/rocksdb/util/coding.h +14 -27
- package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
- package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
- package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
- package/deps/rocksdb/rocksdb/util/math.h +3 -1
- package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
- package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
- package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
- package/deps/rocksdb/rocksdb/util/status.cc +3 -1
- package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
- package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
- package/deps/rocksdb/rocksdb.gyp +7 -0
- package/index.js +11 -2
- package/iterator.js +15 -7
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
#include <unordered_set>
|
|
12
12
|
#include <vector>
|
|
13
13
|
|
|
14
|
+
#include "db/builder.h"
|
|
14
15
|
#include "db/db_impl/db_impl.h"
|
|
15
16
|
#include "db/version_edit.h"
|
|
16
17
|
#include "file/file_util.h"
|
|
@@ -299,6 +300,18 @@ Status ExternalSstFileIngestionJob::Prepare(
|
|
|
299
300
|
// ingestion.
|
|
300
301
|
// TODO: plumb Env::IOActivity
|
|
301
302
|
ReadOptions ro;
|
|
303
|
+
// Pass user-provided checksums through FileOptions when available.
|
|
304
|
+
// The caller may not have provided checksums at all (empty vectors),
|
|
305
|
+
// so we guard with a bounds check.
|
|
306
|
+
FileOptions fopts;
|
|
307
|
+
if (i < files_checksums.size()) {
|
|
308
|
+
fopts.file_checksum = files_checksums[i];
|
|
309
|
+
}
|
|
310
|
+
if (i < files_checksum_func_names.size()) {
|
|
311
|
+
fopts.file_checksum_func_name = files_checksum_func_names[i];
|
|
312
|
+
} else {
|
|
313
|
+
fopts.file_checksum_func_name = kNoFileChecksumFuncName;
|
|
314
|
+
}
|
|
302
315
|
IOStatus io_s = GenerateOneFileChecksum(
|
|
303
316
|
fs_.get(), files_to_ingest_[i].internal_file_path,
|
|
304
317
|
db_options_.file_checksum_gen_factory.get(),
|
|
@@ -307,7 +320,7 @@ Status ExternalSstFileIngestionJob::Prepare(
|
|
|
307
320
|
ingestion_options_.verify_checksums_readahead_size,
|
|
308
321
|
db_options_.allow_mmap_reads, io_tracer_,
|
|
309
322
|
db_options_.rate_limiter.get(), ro, db_options_.stats,
|
|
310
|
-
db_options_.clock);
|
|
323
|
+
db_options_.clock, fopts);
|
|
311
324
|
if (!io_s.ok()) {
|
|
312
325
|
status = io_s;
|
|
313
326
|
ROCKS_LOG_WARN(db_options_.info_log,
|
|
@@ -699,9 +712,13 @@ Status ExternalSstFileIngestionJob::AssignLevelsForOneBatch(
|
|
|
699
712
|
? kReservedEpochNumberForFileIngestedBehind
|
|
700
713
|
: cfd_->NewEpochNumber(), // orders files ingested to L0
|
|
701
714
|
file->file_checksum, file->file_checksum_func_name, file->unique_id, 0,
|
|
702
|
-
tail_size, file->user_defined_timestamps_persisted);
|
|
715
|
+
tail_size, file->user_defined_timestamps_persisted, "", "");
|
|
703
716
|
f_metadata.temperature = file->file_temperature;
|
|
704
717
|
f_metadata.marked_for_compaction = marked_for_compaction;
|
|
718
|
+
// Extract min/max timestamps from table properties for UDT support.
|
|
719
|
+
// This ensures ingested files have proper timestamp ranges in FileMetaData,
|
|
720
|
+
// similar to files created by flush and compaction.
|
|
721
|
+
ExtractTimestampFromTableProperties(file->table_properties, &f_metadata);
|
|
705
722
|
edit_.AddFile(file->picked_level, f_metadata);
|
|
706
723
|
|
|
707
724
|
*batch_uppermost_level =
|
|
@@ -1477,13 +1494,15 @@ IOStatus ExternalSstFileIngestionJob::GenerateChecksumForIngestedFile(
|
|
|
1477
1494
|
// TODO: rate limit file reads for checksum calculation during file ingestion.
|
|
1478
1495
|
// TODO: plumb Env::IOActivity
|
|
1479
1496
|
ReadOptions ro;
|
|
1497
|
+
FileOptions gen_fopts;
|
|
1498
|
+
gen_fopts.file_checksum_func_name = kNoFileChecksumFuncName;
|
|
1480
1499
|
IOStatus io_s = GenerateOneFileChecksum(
|
|
1481
1500
|
fs_.get(), file_to_ingest->internal_file_path,
|
|
1482
1501
|
db_options_.file_checksum_gen_factory.get(), requested_checksum_func_name,
|
|
1483
1502
|
&file_checksum, &file_checksum_func_name,
|
|
1484
1503
|
ingestion_options_.verify_checksums_readahead_size,
|
|
1485
1504
|
db_options_.allow_mmap_reads, io_tracer_, db_options_.rate_limiter.get(),
|
|
1486
|
-
ro, db_options_.stats, db_options_.clock);
|
|
1505
|
+
ro, db_options_.stats, db_options_.clock, gen_fopts);
|
|
1487
1506
|
if (!io_s.ok()) {
|
|
1488
1507
|
ROCKS_LOG_WARN(
|
|
1489
1508
|
db_options_.info_log, "Failed to generate checksum for %s: %s",
|
|
@@ -80,8 +80,7 @@ class ExternSSTFileLinkFailFallbackTest
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
void TearDown() override {
|
|
83
|
-
|
|
84
|
-
db_ = nullptr;
|
|
83
|
+
db_.reset();
|
|
85
84
|
ASSERT_OK(DestroyDB(dbname_, options_));
|
|
86
85
|
}
|
|
87
86
|
|
|
@@ -2570,14 +2569,19 @@ TEST_F(ExternalSSTFileTest, SkipBloomFilter) {
|
|
|
2570
2569
|
options.statistics->getTickerCount(Tickers::BLOCK_CACHE_FILTER_ADD), 1);
|
|
2571
2570
|
}
|
|
2572
2571
|
|
|
2573
|
-
// Create external SST file but skip bloom filters
|
|
2572
|
+
// Create external SST file but skip bloom filters by using options
|
|
2573
|
+
// with no filter policy
|
|
2574
2574
|
options.statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
|
|
2575
2575
|
DestroyAndReopen(options);
|
|
2576
2576
|
{
|
|
2577
2577
|
std::string file_path = sst_files_dir_ + "sst_with_no_bloom.sst";
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2578
|
+
// Use options with no filter policy to skip bloom filters
|
|
2579
|
+
Options no_filter_options = options;
|
|
2580
|
+
BlockBasedTableOptions no_filter_table_options = table_options;
|
|
2581
|
+
no_filter_table_options.filter_policy.reset();
|
|
2582
|
+
no_filter_options.table_factory.reset(
|
|
2583
|
+
NewBlockBasedTableFactory(no_filter_table_options));
|
|
2584
|
+
SstFileWriter sst_file_writer(EnvOptions(), no_filter_options);
|
|
2581
2585
|
ASSERT_OK(sst_file_writer.Open(file_path));
|
|
2582
2586
|
ASSERT_OK(sst_file_writer.Put("Key1", "Value1"));
|
|
2583
2587
|
ASSERT_OK(sst_file_writer.Finish());
|
|
@@ -4040,7 +4044,7 @@ TEST_P(IngestDBGeneratedFileTest2, NotOverlapWithDB) {
|
|
|
4040
4044
|
std::string db2_path = test::PerThreadDBPath("DB2");
|
|
4041
4045
|
Options db2_options;
|
|
4042
4046
|
db2_options.create_if_missing = true;
|
|
4043
|
-
DB
|
|
4047
|
+
std::unique_ptr<DB> db2;
|
|
4044
4048
|
ASSERT_OK(DB::Open(db2_options, db2_path, &db2));
|
|
4045
4049
|
// Write some base data.
|
|
4046
4050
|
expected_value.emplace_back(rnd.RandomString(100));
|
|
@@ -4069,10 +4073,10 @@ TEST_P(IngestDBGeneratedFileTest2, NotOverlapWithDB) {
|
|
|
4069
4073
|
ASSERT_OK(db_->DropColumnFamily(temp_cfh));
|
|
4070
4074
|
ASSERT_OK(db_->DestroyColumnFamilyHandle(temp_cfh));
|
|
4071
4075
|
ASSERT_OK(db2->Close());
|
|
4072
|
-
|
|
4076
|
+
db2.reset();
|
|
4073
4077
|
ASSERT_OK(DB::Open(db2_options, db2_path, &db2));
|
|
4074
4078
|
ASSERT_OK(db2->Close());
|
|
4075
|
-
|
|
4079
|
+
db2.reset();
|
|
4076
4080
|
ASSERT_OK(DestroyDB(db2_path, db2_options));
|
|
4077
4081
|
} else {
|
|
4078
4082
|
ASSERT_OK(db_->DropColumnFamily(temp_cfh));
|
|
@@ -4135,6 +4139,7 @@ TEST_P(IngestDBGeneratedFileTest2, NonZeroSeqno) {
|
|
|
4135
4139
|
// Create temp CF/DB
|
|
4136
4140
|
Options temp_cf_opts;
|
|
4137
4141
|
ColumnFamilyHandle* temp_cfh = nullptr;
|
|
4142
|
+
std::unique_ptr<DB> temp_db_holder;
|
|
4138
4143
|
DB* from_db = nullptr;
|
|
4139
4144
|
std::string temp_db_name;
|
|
4140
4145
|
// Using a separate DB also validates that latest sequence number
|
|
@@ -4155,10 +4160,11 @@ TEST_P(IngestDBGeneratedFileTest2, NonZeroSeqno) {
|
|
|
4155
4160
|
if (use_temp_db) {
|
|
4156
4161
|
temp_cf_opts.create_if_missing = true;
|
|
4157
4162
|
temp_db_name = dbname_ + "/temp_db_" + std::to_string(rnd->Next());
|
|
4158
|
-
ASSERT_OK(DB::Open(temp_cf_opts, temp_db_name, &
|
|
4163
|
+
ASSERT_OK(DB::Open(temp_cf_opts, temp_db_name, &temp_db_holder));
|
|
4164
|
+
from_db = temp_db_holder.get();
|
|
4159
4165
|
temp_cfh = from_db->DefaultColumnFamily();
|
|
4160
4166
|
} else {
|
|
4161
|
-
from_db = db_;
|
|
4167
|
+
from_db = db_.get();
|
|
4162
4168
|
ASSERT_OK(
|
|
4163
4169
|
from_db->CreateColumnFamily(temp_cf_opts, "temp_cf", &temp_cfh));
|
|
4164
4170
|
}
|
|
@@ -4293,7 +4299,7 @@ TEST_P(IngestDBGeneratedFileTest2, NonZeroSeqno) {
|
|
|
4293
4299
|
ASSERT_OK(db_->WaitForCompact({}));
|
|
4294
4300
|
if (use_temp_db) {
|
|
4295
4301
|
ASSERT_OK(from_db->Close());
|
|
4296
|
-
|
|
4302
|
+
temp_db_holder.reset();
|
|
4297
4303
|
ASSERT_OK(DestroyDB(temp_db_name, temp_cf_opts));
|
|
4298
4304
|
} else {
|
|
4299
4305
|
ASSERT_OK(db_->DropColumnFamily(temp_cfh));
|
|
@@ -4381,7 +4387,7 @@ TEST_P(IngestDBGeneratedFileTest2, ZeroAndNonZeroSeqno) {
|
|
|
4381
4387
|
|
|
4382
4388
|
std::string temp_db_name =
|
|
4383
4389
|
dbname_ + "/temp_db_" + std::to_string(rnd->Next());
|
|
4384
|
-
DB
|
|
4390
|
+
std::unique_ptr<DB> temp_db;
|
|
4385
4391
|
ASSERT_OK(DB::Open(temp_db_opts, temp_db_name, &temp_db));
|
|
4386
4392
|
|
|
4387
4393
|
const Snapshot* snapshot = db_->GetSnapshot();
|
|
@@ -4444,7 +4450,7 @@ TEST_P(IngestDBGeneratedFileTest2, ZeroAndNonZeroSeqno) {
|
|
|
4444
4450
|
cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
|
|
4445
4451
|
ASSERT_OK(temp_db->CompactRange(cro, nullptr, nullptr));
|
|
4446
4452
|
SCOPED_TRACE("Temp DB LSM: " +
|
|
4447
|
-
FilesPerLevel(temp_db->DefaultColumnFamily(), temp_db));
|
|
4453
|
+
FilesPerLevel(temp_db->DefaultColumnFamily(), temp_db.get()));
|
|
4448
4454
|
|
|
4449
4455
|
// Base data from snapshot
|
|
4450
4456
|
std::vector<std::string> sst_file_paths_zero_seqno;
|
|
@@ -4539,7 +4545,7 @@ TEST_P(IngestDBGeneratedFileTest2, ZeroAndNonZeroSeqno) {
|
|
|
4539
4545
|
ASSERT_OK(db_->DestroyColumnFamilyHandle(live_write_cfh));
|
|
4540
4546
|
|
|
4541
4547
|
ASSERT_OK(temp_db->Close());
|
|
4542
|
-
|
|
4548
|
+
temp_db.reset();
|
|
4543
4549
|
ASSERT_OK(DestroyDB(temp_db_name, temp_db_opts));
|
|
4544
4550
|
} while (ChangeOptions(kSkipPlainTable | kSkipFIFOCompaction));
|
|
4545
4551
|
}
|
|
@@ -76,7 +76,7 @@ class FaultInjectionTest
|
|
|
76
76
|
std::string dbname_;
|
|
77
77
|
std::shared_ptr<Cache> tiny_cache_;
|
|
78
78
|
Options options_;
|
|
79
|
-
DB
|
|
79
|
+
std::unique_ptr<DB> db_;
|
|
80
80
|
|
|
81
81
|
FaultInjectionTest()
|
|
82
82
|
: option_config_(std::get<1>(GetParam())),
|
|
@@ -260,10 +260,7 @@ class FaultInjectionTest
|
|
|
260
260
|
return Slice(*storage);
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
-
void CloseDB() {
|
|
264
|
-
delete db_;
|
|
265
|
-
db_ = nullptr;
|
|
266
|
-
}
|
|
263
|
+
void CloseDB() { db_.reset(); }
|
|
267
264
|
|
|
268
265
|
Status OpenDB() {
|
|
269
266
|
CloseDB();
|
|
@@ -348,7 +345,8 @@ class FaultInjectionTest
|
|
|
348
345
|
}
|
|
349
346
|
|
|
350
347
|
void WaitCompactionFinish() {
|
|
351
|
-
ASSERT_OK(
|
|
348
|
+
ASSERT_OK(static_cast_with_check<DBImpl>(db_->GetRootDB())
|
|
349
|
+
->TEST_WaitForCompact());
|
|
352
350
|
ASSERT_OK(db_->Put(WriteOptions(), "", ""));
|
|
353
351
|
}
|
|
354
352
|
|
|
@@ -616,10 +616,17 @@ Status FlushJob::MemPurge() {
|
|
|
616
616
|
!(new_mem->ShouldFlushNow())) {
|
|
617
617
|
// Construct fragmented memtable range tombstones without mutex
|
|
618
618
|
new_mem->ConstructFragmentedRangeTombstones();
|
|
619
|
+
TEST_SYNC_POINT("FlushJob::MemPurge:BeforeReacquireMutex");
|
|
620
|
+
TEST_SYNC_POINT("FlushJob::MemPurge:AfterWaitForTest");
|
|
619
621
|
db_mutex_->Lock();
|
|
620
622
|
// Take the newest id, so that memtables in MemtableList don't have
|
|
621
|
-
// out-of-order memtable ids.
|
|
622
|
-
|
|
623
|
+
// out-of-order memtable ids. While the db mutex was released during
|
|
624
|
+
// MemPurge, new memtables may have been switched to the immutable
|
|
625
|
+
// list with higher IDs, so we must use the maximum of the original
|
|
626
|
+
// flush batch ID and the current latest immutable memtable ID.
|
|
627
|
+
uint64_t new_mem_id = std::max(
|
|
628
|
+
mems_.back()->GetID(),
|
|
629
|
+
cfd_->imm()->GetLatestMemTableID(false /*for_atomic_flush*/));
|
|
623
630
|
|
|
624
631
|
new_mem->SetID(new_mem_id);
|
|
625
632
|
// Take the latest memtable's next log number.
|
|
@@ -1095,7 +1102,8 @@ Status FlushJob::WriteLevel0Table() {
|
|
|
1095
1102
|
meta_.file_creation_time, meta_.epoch_number,
|
|
1096
1103
|
meta_.file_checksum, meta_.file_checksum_func_name,
|
|
1097
1104
|
meta_.unique_id, meta_.compensated_range_deletion_size,
|
|
1098
|
-
meta_.tail_size, meta_.user_defined_timestamps_persisted
|
|
1105
|
+
meta_.tail_size, meta_.user_defined_timestamps_persisted,
|
|
1106
|
+
meta_.min_timestamp, meta_.max_timestamp);
|
|
1099
1107
|
edit_->SetBlobFileAdditions(std::move(blob_file_additions));
|
|
1100
1108
|
}
|
|
1101
1109
|
// Piggyback FlushJobInfo on the first first flushed memtable.
|
|
@@ -344,19 +344,18 @@ int main(int argc, char** argv) {
|
|
|
344
344
|
|
|
345
345
|
status = ROCKSDB_NAMESPACE::DestroyDB(path, options);
|
|
346
346
|
assert(status.ok());
|
|
347
|
-
ROCKSDB_NAMESPACE::DB
|
|
348
|
-
status = ROCKSDB_NAMESPACE::DB::Open(options, path, &
|
|
347
|
+
std::unique_ptr<ROCKSDB_NAMESPACE::DB> db;
|
|
348
|
+
status = ROCKSDB_NAMESPACE::DB::Open(options, path, &db);
|
|
349
349
|
assert(status.ok());
|
|
350
|
-
std::unique_ptr<ROCKSDB_NAMESPACE::DB> db(db_raw);
|
|
351
350
|
|
|
352
351
|
std::vector<ShardState> shard_states(FLAGS_shards + 1);
|
|
353
352
|
std::deque<Reader> readers;
|
|
354
353
|
while (static_cast<int>(readers.size()) < FLAGS_readers) {
|
|
355
|
-
readers.emplace_back(&shard_states,
|
|
354
|
+
readers.emplace_back(&shard_states, db.get());
|
|
356
355
|
}
|
|
357
356
|
std::deque<Writer> writers;
|
|
358
357
|
while (static_cast<int>(writers.size()) < FLAGS_writers) {
|
|
359
|
-
writers.emplace_back(&shard_states,
|
|
358
|
+
writers.emplace_back(&shard_states, db.get());
|
|
360
359
|
}
|
|
361
360
|
|
|
362
361
|
// Each shard gets a random reader and random writer assigned to it
|
|
@@ -367,7 +366,7 @@ int main(int argc, char** argv) {
|
|
|
367
366
|
shard_states[i].writer = &writers[writer_dist(rng)];
|
|
368
367
|
}
|
|
369
368
|
|
|
370
|
-
StatsThread stats_thread(
|
|
369
|
+
StatsThread stats_thread(db.get());
|
|
371
370
|
for (Writer& w : writers) {
|
|
372
371
|
w.start();
|
|
373
372
|
}
|
|
@@ -310,8 +310,10 @@ Status ImportColumnFamilyJob::GetIngestedFileInfo(
|
|
|
310
310
|
std::unique_ptr<FSRandomAccessFile> sst_file;
|
|
311
311
|
std::unique_ptr<RandomAccessFileReader> sst_file_reader;
|
|
312
312
|
|
|
313
|
-
|
|
314
|
-
|
|
313
|
+
FileOptions fo{env_options_};
|
|
314
|
+
fo.file_checksum = file_meta.file_checksum;
|
|
315
|
+
fo.file_checksum_func_name = file_meta.file_checksum_func_name;
|
|
316
|
+
status = fs_->NewRandomAccessFile(external_file, fo, &sst_file, nullptr);
|
|
315
317
|
if (!status.ok()) {
|
|
316
318
|
return status;
|
|
317
319
|
}
|
|
@@ -371,7 +371,7 @@ TEST_F(ImportColumnFamilyTest, ImportExportedSSTFromAnotherCF) {
|
|
|
371
371
|
ASSERT_OK(Flush(1));
|
|
372
372
|
|
|
373
373
|
Checkpoint* checkpoint;
|
|
374
|
-
ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
|
|
374
|
+
ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
|
|
375
375
|
ASSERT_OK(checkpoint->ExportColumnFamily(handles_[1], export_files_dir_,
|
|
376
376
|
&metadata_ptr_));
|
|
377
377
|
ASSERT_NE(metadata_ptr_, nullptr);
|
|
@@ -481,14 +481,14 @@ TEST_F(ImportColumnFamilyTest, ImportExportedSSTFromAnotherDB) {
|
|
|
481
481
|
ASSERT_OK(Flush(1));
|
|
482
482
|
|
|
483
483
|
Checkpoint* checkpoint;
|
|
484
|
-
ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
|
|
484
|
+
ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
|
|
485
485
|
ASSERT_OK(checkpoint->ExportColumnFamily(handles_[1], export_files_dir_,
|
|
486
486
|
&metadata_ptr_));
|
|
487
487
|
ASSERT_NE(metadata_ptr_, nullptr);
|
|
488
488
|
delete checkpoint;
|
|
489
489
|
|
|
490
490
|
// Create a new db and import the files.
|
|
491
|
-
DB
|
|
491
|
+
std::unique_ptr<DB> db_copy;
|
|
492
492
|
ASSERT_OK(DestroyDir(env_, dbname_ + "/db_copy"));
|
|
493
493
|
ASSERT_OK(DB::Open(options, dbname_ + "/db_copy", &db_copy));
|
|
494
494
|
ColumnFamilyHandle* cfh = nullptr;
|
|
@@ -504,7 +504,7 @@ TEST_F(ImportColumnFamilyTest, ImportExportedSSTFromAnotherDB) {
|
|
|
504
504
|
}
|
|
505
505
|
ASSERT_OK(db_copy->DropColumnFamily(cfh));
|
|
506
506
|
ASSERT_OK(db_copy->DestroyColumnFamilyHandle(cfh));
|
|
507
|
-
|
|
507
|
+
db_copy.reset();
|
|
508
508
|
ASSERT_OK(DestroyDir(env_, dbname_ + "/db_copy"));
|
|
509
509
|
}
|
|
510
510
|
|
|
@@ -529,7 +529,7 @@ TEST_F(ImportColumnFamilyTest,
|
|
|
529
529
|
ASSERT_OK(db_->DeleteRange(WriteOptions(), handles_[1], Key(0), Key(2)));
|
|
530
530
|
|
|
531
531
|
Checkpoint* checkpoint;
|
|
532
|
-
ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
|
|
532
|
+
ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
|
|
533
533
|
ASSERT_OK(checkpoint->ExportColumnFamily(handles_[1], export_files_dir_,
|
|
534
534
|
&metadata_ptr_));
|
|
535
535
|
ASSERT_NE(metadata_ptr_, nullptr);
|
|
@@ -605,14 +605,14 @@ TEST_F(ImportColumnFamilyTest, LevelFilesOverlappingAtEndpoints) {
|
|
|
605
605
|
ASSERT_GT(NumTableFilesAtLevel(1, 1), 1);
|
|
606
606
|
|
|
607
607
|
Checkpoint* checkpoint;
|
|
608
|
-
ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
|
|
608
|
+
ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
|
|
609
609
|
ASSERT_OK(checkpoint->ExportColumnFamily(handles_[1], export_files_dir_,
|
|
610
610
|
&metadata_ptr_));
|
|
611
611
|
ASSERT_NE(metadata_ptr_, nullptr);
|
|
612
612
|
delete checkpoint;
|
|
613
613
|
|
|
614
614
|
// Create a new db and import the files.
|
|
615
|
-
DB
|
|
615
|
+
std::unique_ptr<DB> db_copy;
|
|
616
616
|
ASSERT_OK(DestroyDir(env_, dbname_ + "/db_copy"));
|
|
617
617
|
ASSERT_OK(DB::Open(options, dbname_ + "/db_copy", &db_copy));
|
|
618
618
|
ColumnFamilyHandle* cfh = nullptr;
|
|
@@ -627,7 +627,7 @@ TEST_F(ImportColumnFamilyTest, LevelFilesOverlappingAtEndpoints) {
|
|
|
627
627
|
}
|
|
628
628
|
ASSERT_OK(db_copy->DropColumnFamily(cfh));
|
|
629
629
|
ASSERT_OK(db_copy->DestroyColumnFamilyHandle(cfh));
|
|
630
|
-
|
|
630
|
+
db_copy.reset();
|
|
631
631
|
ASSERT_OK(DestroyDir(env_, dbname_ + "/db_copy"));
|
|
632
632
|
for (const Snapshot* snapshot : snapshots) {
|
|
633
633
|
db_->ReleaseSnapshot(snapshot);
|
|
@@ -771,12 +771,12 @@ TEST_F(ImportColumnFamilyTest, ImportMultiColumnFamilyTest) {
|
|
|
771
771
|
|
|
772
772
|
Checkpoint* checkpoint1;
|
|
773
773
|
Checkpoint* checkpoint2;
|
|
774
|
-
ASSERT_OK(Checkpoint::Create(db_, &checkpoint1));
|
|
774
|
+
ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint1));
|
|
775
775
|
ASSERT_OK(checkpoint1->ExportColumnFamily(handles_[1], export_files_dir_,
|
|
776
776
|
&metadata_ptr_));
|
|
777
777
|
|
|
778
778
|
// Create a new db and import the files.
|
|
779
|
-
DB
|
|
779
|
+
std::unique_ptr<DB> db_copy;
|
|
780
780
|
ASSERT_OK(DestroyDir(env_, dbname_ + "/db_copy"));
|
|
781
781
|
ASSERT_OK(DB::Open(options, dbname_ + "/db_copy", &db_copy));
|
|
782
782
|
ColumnFamilyHandle* copy_cfh = nullptr;
|
|
@@ -796,7 +796,7 @@ TEST_F(ImportColumnFamilyTest, ImportMultiColumnFamilyTest) {
|
|
|
796
796
|
ASSERT_OK(db_copy->Flush(FlushOptions()));
|
|
797
797
|
|
|
798
798
|
// Flush again to create another L0 file. It should have higher sequencer.
|
|
799
|
-
ASSERT_OK(Checkpoint::Create(db_copy, &checkpoint2));
|
|
799
|
+
ASSERT_OK(Checkpoint::Create(db_copy.get(), &checkpoint2));
|
|
800
800
|
ASSERT_OK(checkpoint2->ExportColumnFamily(copy_cfh, export_files_dir2_,
|
|
801
801
|
&metadata_ptr2_));
|
|
802
802
|
|
|
@@ -826,7 +826,7 @@ TEST_F(ImportColumnFamilyTest, ImportMultiColumnFamilyTest) {
|
|
|
826
826
|
|
|
827
827
|
ASSERT_OK(db_copy->DropColumnFamily(copy_cfh));
|
|
828
828
|
ASSERT_OK(db_copy->DestroyColumnFamilyHandle(copy_cfh));
|
|
829
|
-
|
|
829
|
+
db_copy.reset();
|
|
830
830
|
ASSERT_OK(DestroyDir(env_, dbname_ + "/db_copy"));
|
|
831
831
|
}
|
|
832
832
|
|
|
@@ -840,12 +840,12 @@ TEST_F(ImportColumnFamilyTest, ImportMultiColumnFamilyWithOverlap) {
|
|
|
840
840
|
|
|
841
841
|
Checkpoint* checkpoint1;
|
|
842
842
|
Checkpoint* checkpoint2;
|
|
843
|
-
ASSERT_OK(Checkpoint::Create(db_, &checkpoint1));
|
|
843
|
+
ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint1));
|
|
844
844
|
ASSERT_OK(checkpoint1->ExportColumnFamily(handles_[1], export_files_dir_,
|
|
845
845
|
&metadata_ptr_));
|
|
846
846
|
|
|
847
847
|
// Create a new db and import the files.
|
|
848
|
-
DB
|
|
848
|
+
std::unique_ptr<DB> db_copy;
|
|
849
849
|
ASSERT_OK(DestroyDir(env_, dbname_ + "/db_copy"));
|
|
850
850
|
ASSERT_OK(DB::Open(options, dbname_ + "/db_copy", &db_copy));
|
|
851
851
|
ColumnFamilyHandle* copy_cfh = nullptr;
|
|
@@ -857,7 +857,7 @@ TEST_F(ImportColumnFamilyTest, ImportMultiColumnFamilyWithOverlap) {
|
|
|
857
857
|
ASSERT_OK(db_copy->Flush(FlushOptions()));
|
|
858
858
|
|
|
859
859
|
// Flush again to create another L0 file. It should have higher sequencer.
|
|
860
|
-
ASSERT_OK(Checkpoint::Create(db_copy, &checkpoint2));
|
|
860
|
+
ASSERT_OK(Checkpoint::Create(db_copy.get(), &checkpoint2));
|
|
861
861
|
ASSERT_OK(checkpoint2->ExportColumnFamily(copy_cfh, export_files_dir2_,
|
|
862
862
|
&metadata_ptr2_));
|
|
863
863
|
|
|
@@ -877,7 +877,7 @@ TEST_F(ImportColumnFamilyTest, ImportMultiColumnFamilyWithOverlap) {
|
|
|
877
877
|
|
|
878
878
|
ASSERT_OK(db_copy->DropColumnFamily(copy_cfh));
|
|
879
879
|
ASSERT_OK(db_copy->DestroyColumnFamilyHandle(copy_cfh));
|
|
880
|
-
|
|
880
|
+
db_copy.reset();
|
|
881
881
|
ASSERT_OK(DestroyDir(env_, dbname_ + "/db_copy"));
|
|
882
882
|
}
|
|
883
883
|
|
|
@@ -1017,7 +1017,7 @@ TEST_F(ImportColumnFamilyTest, AssignEpochNumberToMultipleCF) {
|
|
|
1017
1017
|
// corruption where two L0 files can have the same epoch number but
|
|
1018
1018
|
// with overlapping key range.
|
|
1019
1019
|
Checkpoint* checkpoint1;
|
|
1020
|
-
ASSERT_OK(Checkpoint::Create(db_, &checkpoint1));
|
|
1020
|
+
ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint1));
|
|
1021
1021
|
ASSERT_OK(checkpoint1->ExportColumnFamily(handles_[1], export_files_dir_,
|
|
1022
1022
|
&metadata_ptr_));
|
|
1023
1023
|
ASSERT_OK(checkpoint1->ExportColumnFamily(handles_[2], export_files_dir2_,
|
|
@@ -310,6 +310,7 @@ static const std::string aggregated_table_properties_at_level =
|
|
|
310
310
|
static const std::string num_running_compactions = "num-running-compactions";
|
|
311
311
|
static const std::string num_running_compaction_sorted_runs =
|
|
312
312
|
"num-running-compaction-sorted-runs";
|
|
313
|
+
static const std::string compaction_abort_count = "compaction-abort-count";
|
|
313
314
|
static const std::string num_running_flushes = "num-running-flushes";
|
|
314
315
|
static const std::string actual_delayed_write_rate =
|
|
315
316
|
"actual-delayed-write-rate";
|
|
@@ -362,6 +363,8 @@ const std::string DB::Properties::kNumRunningCompactions =
|
|
|
362
363
|
rocksdb_prefix + num_running_compactions;
|
|
363
364
|
const std::string DB::Properties::kNumRunningCompactionSortedRuns =
|
|
364
365
|
rocksdb_prefix + num_running_compaction_sorted_runs;
|
|
366
|
+
const std::string DB::Properties::kCompactionAbortCount =
|
|
367
|
+
rocksdb_prefix + compaction_abort_count;
|
|
365
368
|
const std::string DB::Properties::kNumRunningFlushes =
|
|
366
369
|
rocksdb_prefix + num_running_flushes;
|
|
367
370
|
const std::string DB::Properties::kBackgroundErrors =
|
|
@@ -594,6 +597,9 @@ const UnorderedMap<std::string, DBPropertyInfo>
|
|
|
594
597
|
{DB::Properties::kNumRunningCompactionSortedRuns,
|
|
595
598
|
{false, nullptr, &InternalStats::HandleNumRunningCompactionSortedRuns,
|
|
596
599
|
nullptr, nullptr}},
|
|
600
|
+
{DB::Properties::kCompactionAbortCount,
|
|
601
|
+
{false, nullptr, &InternalStats::HandleCompactionAbortCount, nullptr,
|
|
602
|
+
nullptr}},
|
|
597
603
|
{DB::Properties::kActualDelayedWriteRate,
|
|
598
604
|
{false, nullptr, &InternalStats::HandleActualDelayedWriteRate, nullptr,
|
|
599
605
|
nullptr}},
|
|
@@ -1292,6 +1298,13 @@ bool InternalStats::HandleNumRunningCompactionSortedRuns(uint64_t* value,
|
|
|
1292
1298
|
return true;
|
|
1293
1299
|
}
|
|
1294
1300
|
|
|
1301
|
+
bool InternalStats::HandleCompactionAbortCount(uint64_t* value, DBImpl* db,
|
|
1302
|
+
Version* /*version*/) {
|
|
1303
|
+
*value = static_cast<uint64_t>(
|
|
1304
|
+
db->compaction_aborted_.load(std::memory_order_acquire));
|
|
1305
|
+
return true;
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1295
1308
|
bool InternalStats::HandleBackgroundErrors(uint64_t* value, DBImpl* /*db*/,
|
|
1296
1309
|
Version* /*version*/) {
|
|
1297
1310
|
// Accumulated number of errors in background flushes or compactions.
|
|
@@ -852,6 +852,8 @@ class InternalStats {
|
|
|
852
852
|
Version* version);
|
|
853
853
|
bool HandleNumRunningCompactionSortedRuns(uint64_t* value, DBImpl* db,
|
|
854
854
|
Version* version);
|
|
855
|
+
bool HandleCompactionAbortCount(uint64_t* value, DBImpl* db,
|
|
856
|
+
Version* version);
|
|
855
857
|
bool HandleBackgroundErrors(uint64_t* value, DBImpl* db, Version* version);
|
|
856
858
|
bool HandleCurSizeActiveMemTable(uint64_t* value, DBImpl* db,
|
|
857
859
|
Version* version);
|