@nxtedition/rocksdb 15.4.1 → 16.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +70 -23
- package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
- package/deps/rocksdb/rocksdb/BUCK +42 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
- package/deps/rocksdb/rocksdb/Makefile +59 -32
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
- package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
- package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
- package/deps/rocksdb/rocksdb/db/builder.h +7 -0
- package/deps/rocksdb/rocksdb/db/c.cc +373 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
- package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
- package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
- package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
- package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
- package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
- package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
- package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
- package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
- package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
- package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
- package/deps/rocksdb/rocksdb/env/env.cc +1 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
- package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
- package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
- package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
- package/deps/rocksdb/rocksdb/folly.mk +22 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
- package/deps/rocksdb/rocksdb/options/options.cc +5 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
- package/deps/rocksdb/rocksdb/port/lang.h +4 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
- package/deps/rocksdb/rocksdb/src.mk +12 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
- package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
- package/deps/rocksdb/rocksdb/table/format.cc +27 -15
- package/deps/rocksdb/rocksdb/table/format.h +41 -15
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
- package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
- package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
- package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
- package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
- package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
- package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
- package/deps/rocksdb/rocksdb/util/coding.h +14 -27
- package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
- package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
- package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
- package/deps/rocksdb/rocksdb/util/math.h +3 -1
- package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
- package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
- package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
- package/deps/rocksdb/rocksdb/util/status.cc +3 -1
- package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
- package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
- package/deps/rocksdb/rocksdb.gyp +7 -0
- package/index.js +70 -10
- package/iterator.js +25 -3
- package/max_rev_operator.h +9 -5
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
#include "db/range_del_aggregator.h"
|
|
34
34
|
#include "db/version_edit.h"
|
|
35
35
|
#include "db/version_set.h"
|
|
36
|
+
#include "file/file_util.h"
|
|
36
37
|
#include "file/filename.h"
|
|
37
38
|
#include "file/read_write_util.h"
|
|
38
39
|
#include "file/sst_file_manager_impl.h"
|
|
@@ -128,6 +129,10 @@ const char* GetCompactionProximalOutputRangeTypeString(
|
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
|
|
132
|
+
// Static constant for compaction abort flag - always false, used for
|
|
133
|
+
// compaction service jobs that don't support abort signaling
|
|
134
|
+
const std::atomic<int> CompactionJob::kCompactionAbortedFalse{0};
|
|
135
|
+
|
|
131
136
|
CompactionJob::CompactionJob(
|
|
132
137
|
int job_id, Compaction* compaction, const ImmutableDBOptions& db_options,
|
|
133
138
|
const MutableDBOptions& mutable_db_options, const FileOptions& file_options,
|
|
@@ -141,10 +146,10 @@ CompactionJob::CompactionJob(
|
|
|
141
146
|
CompactionJobStats* compaction_job_stats, Env::Priority thread_pri,
|
|
142
147
|
const std::shared_ptr<IOTracer>& io_tracer,
|
|
143
148
|
const std::atomic<bool>& manual_compaction_canceled,
|
|
144
|
-
const std::
|
|
145
|
-
std::string
|
|
146
|
-
|
|
147
|
-
int* bg_bottom_compaction_scheduled)
|
|
149
|
+
const std::atomic<int>& compaction_aborted, const std::string& db_id,
|
|
150
|
+
const std::string& db_session_id, std::string full_history_ts_low,
|
|
151
|
+
std::string trim_ts, BlobFileCompletionCallback* blob_callback,
|
|
152
|
+
int* bg_compaction_scheduled, int* bg_bottom_compaction_scheduled)
|
|
148
153
|
: compact_(new CompactionState(compaction)),
|
|
149
154
|
internal_stats_(compaction->compaction_reason(), 1),
|
|
150
155
|
db_options_(db_options),
|
|
@@ -168,6 +173,7 @@ CompactionJob::CompactionJob(
|
|
|
168
173
|
versions_(versions),
|
|
169
174
|
shutting_down_(shutting_down),
|
|
170
175
|
manual_compaction_canceled_(manual_compaction_canceled),
|
|
176
|
+
compaction_aborted_(compaction_aborted),
|
|
171
177
|
db_directory_(db_directory),
|
|
172
178
|
blob_output_directory_(blob_output_directory),
|
|
173
179
|
db_mutex_(db_mutex),
|
|
@@ -708,6 +714,7 @@ void CompactionJob::InitializeCompactionRun() {
|
|
|
708
714
|
}
|
|
709
715
|
|
|
710
716
|
void CompactionJob::RunSubcompactions() {
|
|
717
|
+
TEST_SYNC_POINT("CompactionJob::RunSubcompactions:BeforeStart");
|
|
711
718
|
const size_t num_threads = compact_->sub_compact_states.size();
|
|
712
719
|
assert(num_threads > 0);
|
|
713
720
|
compact_->compaction->GetOrInitInputTableProperties();
|
|
@@ -753,6 +760,71 @@ void CompactionJob::RemoveEmptyOutputs() {
|
|
|
753
760
|
}
|
|
754
761
|
}
|
|
755
762
|
|
|
763
|
+
void CompactionJob::CleanupAbortedSubcompactions() {
|
|
764
|
+
ColumnFamilyData* cfd = compact_->compaction->column_family_data();
|
|
765
|
+
|
|
766
|
+
uint64_t total_sst_files_deleted = 0;
|
|
767
|
+
uint64_t total_blob_files_deleted = 0;
|
|
768
|
+
|
|
769
|
+
// Track the first file deletion error to report at the end
|
|
770
|
+
Status first_error;
|
|
771
|
+
int deletion_errors = 0;
|
|
772
|
+
|
|
773
|
+
// Mark all subcompactions as aborted and delete their output files
|
|
774
|
+
for (auto& sub_compact : compact_->sub_compact_states) {
|
|
775
|
+
// Mark this subcompaction as aborted
|
|
776
|
+
sub_compact.status =
|
|
777
|
+
Status::Incomplete(Status::SubCode::kCompactionAborted);
|
|
778
|
+
|
|
779
|
+
// Delete all files (SST and blob) tracked during compaction.
|
|
780
|
+
// GetOutputFilePaths() contains ALL file paths created, including
|
|
781
|
+
// in-progress files that may have been removed from outputs_ or
|
|
782
|
+
// blob_file_additions_.
|
|
783
|
+
for (const bool is_proximal_level : {false, true}) {
|
|
784
|
+
if (is_proximal_level &&
|
|
785
|
+
!compact_->compaction->SupportsPerKeyPlacement()) {
|
|
786
|
+
continue;
|
|
787
|
+
}
|
|
788
|
+
for (const std::string& file_path :
|
|
789
|
+
sub_compact.Outputs(is_proximal_level)->GetOutputFilePaths()) {
|
|
790
|
+
Status s = env_->DeleteFile(file_path);
|
|
791
|
+
if (s.ok()) {
|
|
792
|
+
// Count SST vs blob files by checking extension
|
|
793
|
+
if (file_path.find(".sst") != std::string::npos) {
|
|
794
|
+
total_sst_files_deleted++;
|
|
795
|
+
} else if (file_path.find(".blob") != std::string::npos) {
|
|
796
|
+
total_blob_files_deleted++;
|
|
797
|
+
}
|
|
798
|
+
} else if (!s.IsNotFound()) {
|
|
799
|
+
if (first_error.ok()) {
|
|
800
|
+
first_error = s;
|
|
801
|
+
}
|
|
802
|
+
deletion_errors++;
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
sub_compact.CleanupOutputs();
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
if (stats_) {
|
|
810
|
+
RecordTick(stats_, COMPACTION_ABORTED);
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
ROCKS_LOG_INFO(db_options_.info_log,
|
|
814
|
+
"[%s] [JOB %d] Compaction aborted: deleted %" PRIu64
|
|
815
|
+
" SST files and %" PRIu64 " blob files",
|
|
816
|
+
cfd->GetName().c_str(), job_id_, total_sst_files_deleted,
|
|
817
|
+
total_blob_files_deleted);
|
|
818
|
+
|
|
819
|
+
if (!first_error.ok()) {
|
|
820
|
+
ROCKS_LOG_ERROR(db_options_.info_log,
|
|
821
|
+
"[%s] [JOB %d] Cleanup completed with %d file deletion "
|
|
822
|
+
"errors. First error: %s",
|
|
823
|
+
cfd->GetName().c_str(), job_id_, deletion_errors,
|
|
824
|
+
first_error.ToString().c_str());
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
|
|
756
828
|
bool CompactionJob::HasNewBlobFiles() const {
|
|
757
829
|
for (const auto& state : compact_->sub_compact_states) {
|
|
758
830
|
if (state.Current().HasBlobFileAdditions()) {
|
|
@@ -832,17 +904,17 @@ Status CompactionJob::VerifyOutputFiles() {
|
|
|
832
904
|
// use_direct_io_for_flush_and_compaction is true, we will regard this
|
|
833
905
|
// verification as user reads since the goal is to cache it here for
|
|
834
906
|
// further user reads
|
|
835
|
-
ReadOptions
|
|
836
|
-
|
|
837
|
-
|
|
907
|
+
ReadOptions verification_read_options(Env::IOActivity::kCompaction);
|
|
908
|
+
verification_read_options.verify_checksums = true;
|
|
909
|
+
verification_read_options.readahead_size =
|
|
838
910
|
file_options_for_read_.compaction_readahead_size;
|
|
839
911
|
|
|
840
912
|
std::unique_ptr<TableReader> table_reader_guard;
|
|
841
913
|
TableReader* table_reader_ptr = table_reader_guard.get();
|
|
842
|
-
|
|
914
|
+
verification_read_options.rate_limiter_priority =
|
|
843
915
|
GetRateLimiterPriority();
|
|
844
916
|
InternalIterator* iter = cfd->table_cache()->NewIterator(
|
|
845
|
-
|
|
917
|
+
verification_read_options, file_options_, cfd->internal_comparator(),
|
|
846
918
|
output_file.meta,
|
|
847
919
|
/*range_del_agg=*/nullptr, compact_->compaction->mutable_cf_options(),
|
|
848
920
|
/*table_reader_ptr=*/&table_reader_ptr,
|
|
@@ -870,12 +942,17 @@ Status CompactionJob::VerifyOutputFiles() {
|
|
|
870
942
|
!!(verify_output_flags & VerifyOutputFlags::kVerifyBlockChecksum);
|
|
871
943
|
const bool should_verify_iteration =
|
|
872
944
|
!!(verify_output_flags & VerifyOutputFlags::kVerifyIteration);
|
|
945
|
+
const bool should_verify_file_checksum =
|
|
946
|
+
!!(verify_output_flags &
|
|
947
|
+
VerifyOutputFlags::kVerifyFileChecksum) &&
|
|
948
|
+
db_options_.file_checksum_gen_factory != nullptr &&
|
|
949
|
+
output_file.meta.file_checksum != kUnknownFileChecksum;
|
|
873
950
|
if (should_verify_block_checksum) {
|
|
874
951
|
assert(table_reader_ptr != nullptr);
|
|
875
952
|
// If verifying iteration as well, verify meta blocks here only to
|
|
876
953
|
// avoid redundant checks on data blocks
|
|
877
954
|
s = table_reader_ptr->VerifyChecksum(
|
|
878
|
-
|
|
955
|
+
verification_read_options, TableReaderCaller::kCompaction,
|
|
879
956
|
/*meta_blocks_only=*/should_verify_iteration);
|
|
880
957
|
}
|
|
881
958
|
if (s.ok() && should_verify_iteration) {
|
|
@@ -896,6 +973,24 @@ Status CompactionJob::VerifyOutputFiles() {
|
|
|
896
973
|
"was computed when written");
|
|
897
974
|
}
|
|
898
975
|
}
|
|
976
|
+
if (s.ok() && should_verify_file_checksum) {
|
|
977
|
+
std::string file_checksum;
|
|
978
|
+
std::string file_checksum_func_name;
|
|
979
|
+
std::string fname =
|
|
980
|
+
GetTableFileName(output_file.meta.fd.GetNumber());
|
|
981
|
+
s = GenerateOneFileChecksum(
|
|
982
|
+
fs_.get(), fname, db_options_.file_checksum_gen_factory.get(),
|
|
983
|
+
output_file.meta.file_checksum_func_name, &file_checksum,
|
|
984
|
+
&file_checksum_func_name,
|
|
985
|
+
verification_read_options.readahead_size,
|
|
986
|
+
db_options_.allow_mmap_reads, io_tracer_,
|
|
987
|
+
db_options_.rate_limiter.get(), verification_read_options,
|
|
988
|
+
stats_, db_options_.clock, file_options_for_read_);
|
|
989
|
+
if (s.ok() && file_checksum != output_file.meta.file_checksum) {
|
|
990
|
+
s = Status::Corruption(
|
|
991
|
+
"File checksum mismatch for compaction output file " + fname);
|
|
992
|
+
}
|
|
993
|
+
}
|
|
899
994
|
}
|
|
900
995
|
}
|
|
901
996
|
|
|
@@ -1004,6 +1099,15 @@ Status CompactionJob::Run() {
|
|
|
1004
1099
|
|
|
1005
1100
|
Status status = CollectSubcompactionErrors();
|
|
1006
1101
|
|
|
1102
|
+
// If compaction was aborted or manually paused, clean up any output files
|
|
1103
|
+
// from completed subcompactions to prevent orphaned files on disk.
|
|
1104
|
+
// Skip cleanup for resumable compaction (when progress writer is set)
|
|
1105
|
+
// because the output files are needed for resumption.
|
|
1106
|
+
if ((status.IsCompactionAborted() || status.IsManualCompactionPaused()) &&
|
|
1107
|
+
compaction_progress_writer_ == nullptr) {
|
|
1108
|
+
CleanupAbortedSubcompactions();
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1007
1111
|
if (status.ok()) {
|
|
1008
1112
|
status = SyncOutputDirectories();
|
|
1009
1113
|
}
|
|
@@ -1012,6 +1116,9 @@ Status CompactionJob::Run() {
|
|
|
1012
1116
|
status = VerifyOutputFiles();
|
|
1013
1117
|
}
|
|
1014
1118
|
|
|
1119
|
+
TEST_SYNC_POINT_CALLBACK("CompactionJob::Run():AfterVerifyOutputFiles",
|
|
1120
|
+
&status);
|
|
1121
|
+
|
|
1015
1122
|
if (status.ok()) {
|
|
1016
1123
|
SetOutputTableProperties();
|
|
1017
1124
|
}
|
|
@@ -1415,10 +1522,10 @@ InternalIterator* CompactionJob::CreateInputIterator(
|
|
|
1415
1522
|
return input;
|
|
1416
1523
|
}
|
|
1417
1524
|
|
|
1418
|
-
void CompactionJob::CreateBlobFileBuilder(
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1525
|
+
void CompactionJob::CreateBlobFileBuilder(
|
|
1526
|
+
SubcompactionState* sub_compact, ColumnFamilyData* cfd,
|
|
1527
|
+
std::unique_ptr<BlobFileBuilder>& blob_file_builder,
|
|
1528
|
+
const WriteOptions& write_options) {
|
|
1422
1529
|
const auto& mutable_cf_options =
|
|
1423
1530
|
sub_compact->compaction->mutable_cf_options();
|
|
1424
1531
|
|
|
@@ -1427,24 +1534,24 @@ void CompactionJob::CreateBlobFileBuilder(SubcompactionState* sub_compact,
|
|
|
1427
1534
|
if (mutable_cf_options.enable_blob_files &&
|
|
1428
1535
|
sub_compact->compaction->output_level() >=
|
|
1429
1536
|
mutable_cf_options.blob_file_starting_level) {
|
|
1430
|
-
|
|
1537
|
+
blob_file_builder = std::make_unique<BlobFileBuilder>(
|
|
1431
1538
|
versions_, fs_.get(), &sub_compact->compaction->immutable_options(),
|
|
1432
1539
|
&mutable_cf_options, &file_options_, &write_options, db_id_,
|
|
1433
1540
|
db_session_id_, job_id_, cfd->GetID(), cfd->GetName(), write_hint_,
|
|
1434
1541
|
io_tracer_, blob_callback_, BlobFileCreationReason::kCompaction,
|
|
1435
|
-
|
|
1542
|
+
sub_compact->Current().GetOutputFilePathsPtr(),
|
|
1436
1543
|
sub_compact->Current().GetBlobFileAdditionsPtr());
|
|
1437
1544
|
} else {
|
|
1438
|
-
|
|
1545
|
+
blob_file_builder = nullptr;
|
|
1439
1546
|
}
|
|
1440
1547
|
}
|
|
1441
1548
|
|
|
1442
1549
|
std::unique_ptr<CompactionIterator> CompactionJob::CreateCompactionIterator(
|
|
1443
1550
|
SubcompactionState* sub_compact, ColumnFamilyData* cfd,
|
|
1444
1551
|
InternalIterator* input, const CompactionFilter* compaction_filter,
|
|
1445
|
-
MergeHelper& merge,
|
|
1552
|
+
MergeHelper& merge, std::unique_ptr<BlobFileBuilder>& blob_file_builder,
|
|
1446
1553
|
const WriteOptions& write_options) {
|
|
1447
|
-
CreateBlobFileBuilder(sub_compact, cfd,
|
|
1554
|
+
CreateBlobFileBuilder(sub_compact, cfd, blob_file_builder, write_options);
|
|
1448
1555
|
|
|
1449
1556
|
const std::string* const full_history_ts_low =
|
|
1450
1557
|
full_history_ts_low_.empty() ? nullptr : &full_history_ts_low_;
|
|
@@ -1456,7 +1563,7 @@ std::unique_ptr<CompactionIterator> CompactionJob::CreateCompactionIterator(
|
|
|
1456
1563
|
job_context_->earliest_write_conflict_snapshot,
|
|
1457
1564
|
job_context_->GetJobSnapshotSequence(), job_context_->snapshot_checker,
|
|
1458
1565
|
env_, ShouldReportDetailedTime(env_, stats_), sub_compact->RangeDelAgg(),
|
|
1459
|
-
|
|
1566
|
+
blob_file_builder.get(), db_options_.allow_data_in_errors,
|
|
1460
1567
|
db_options_.enforce_single_del_contracts, manual_compaction_canceled_,
|
|
1461
1568
|
sub_compact->compaction
|
|
1462
1569
|
->DoesInputReferenceBlobFiles() /* must_count_input_entries */,
|
|
@@ -1495,10 +1602,17 @@ Status CompactionJob::ProcessKeyValue(
|
|
|
1495
1602
|
SubcompactionState* sub_compact, ColumnFamilyData* cfd,
|
|
1496
1603
|
CompactionIterator* c_iter, const CompactionFileOpenFunc& open_file_func,
|
|
1497
1604
|
const CompactionFileCloseFunc& close_file_func, uint64_t& prev_cpu_micros) {
|
|
1498
|
-
|
|
1499
|
-
|
|
1605
|
+
// Cron interval for periodic operations: stats update, abort check,
|
|
1606
|
+
// and sync points. Uses 1024 (power of 2) for efficient bitwise check.
|
|
1607
|
+
const uint64_t kCronEveryMask = (1 << 10) - 1;
|
|
1500
1608
|
[[maybe_unused]] const std::optional<const Slice> end = sub_compact->end;
|
|
1501
1609
|
|
|
1610
|
+
// Check for abort signal before starting key processing
|
|
1611
|
+
if (compaction_aborted_.load(std::memory_order_acquire) > 0) {
|
|
1612
|
+
return Status::Incomplete(Status::SubCode::kCompactionAborted);
|
|
1613
|
+
}
|
|
1614
|
+
|
|
1615
|
+
Status status;
|
|
1502
1616
|
IterKey prev_iter_output_key;
|
|
1503
1617
|
ParsedInternalKey prev_iter_output_internal_key;
|
|
1504
1618
|
|
|
@@ -1511,8 +1625,16 @@ Status CompactionJob::ProcessKeyValue(
|
|
|
1511
1625
|
assert(!end.has_value() ||
|
|
1512
1626
|
cfd->user_comparator()->Compare(c_iter->user_key(), *end) < 0);
|
|
1513
1627
|
|
|
1514
|
-
|
|
1515
|
-
|
|
1628
|
+
const uint64_t num_records = c_iter->iter_stats().num_input_records;
|
|
1629
|
+
|
|
1630
|
+
// Periodic cron operations: stats update, abort check.
|
|
1631
|
+
if ((num_records & kCronEveryMask) == kCronEveryMask) {
|
|
1632
|
+
// Check for abort signal periodically
|
|
1633
|
+
if (compaction_aborted_.load(std::memory_order_acquire) > 0) {
|
|
1634
|
+
status = Status::Incomplete(Status::SubCode::kCompactionAborted);
|
|
1635
|
+
break;
|
|
1636
|
+
}
|
|
1637
|
+
|
|
1516
1638
|
UpdateSubcompactionJobStatsIncrementally(
|
|
1517
1639
|
c_iter, &sub_compact->compaction_job_stats,
|
|
1518
1640
|
db_options_.clock->CPUMicros(), prev_cpu_micros);
|
|
@@ -1719,6 +1841,7 @@ Status CompactionJob::FinalizeBlobFiles(SubcompactionState* sub_compact,
|
|
|
1719
1841
|
}
|
|
1720
1842
|
|
|
1721
1843
|
void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) {
|
|
1844
|
+
TEST_SYNC_POINT("CompactionJob::ProcessKeyValueCompaction:Start");
|
|
1722
1845
|
assert(sub_compact);
|
|
1723
1846
|
assert(sub_compact->compaction);
|
|
1724
1847
|
|
|
@@ -1772,11 +1895,11 @@ void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) {
|
|
|
1772
1895
|
false /* internal key corruption is expected */,
|
|
1773
1896
|
job_context_->GetLatestSnapshotSequence(), job_context_->snapshot_checker,
|
|
1774
1897
|
compact_->compaction->level(), db_options_.stats);
|
|
1775
|
-
|
|
1898
|
+
std::unique_ptr<BlobFileBuilder> blob_file_builder;
|
|
1776
1899
|
|
|
1777
1900
|
auto c_iter =
|
|
1778
1901
|
CreateCompactionIterator(sub_compact, cfd, input_iter, compaction_filter,
|
|
1779
|
-
merge,
|
|
1902
|
+
merge, blob_file_builder, write_options);
|
|
1780
1903
|
assert(c_iter);
|
|
1781
1904
|
c_iter->SeekToFirst();
|
|
1782
1905
|
|
|
@@ -1794,9 +1917,8 @@ void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) {
|
|
|
1794
1917
|
status = FinalizeProcessKeyValueStatus(cfd, input_iter, c_iter.get(), status);
|
|
1795
1918
|
|
|
1796
1919
|
FinalizeSubcompaction(sub_compact, status, open_file_func, close_file_func,
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
io_stats);
|
|
1920
|
+
blob_file_builder.get(), c_iter.get(), input_iter,
|
|
1921
|
+
start_cpu_micros, prev_cpu_micros, io_stats);
|
|
1800
1922
|
|
|
1801
1923
|
NotifyOnSubcompactionCompleted(sub_compact);
|
|
1802
1924
|
}
|
|
@@ -2295,6 +2417,10 @@ Status CompactionJob::OpenCompactionOutputFile(SubcompactionState* sub_compact,
|
|
|
2295
2417
|
Status s;
|
|
2296
2418
|
IOStatus io_s = NewWritableFile(fs_.get(), fname, &writable_file, fo_copy);
|
|
2297
2419
|
s = io_s;
|
|
2420
|
+
if (io_s.ok()) {
|
|
2421
|
+
// Track the SST file path for cleanup on abort.
|
|
2422
|
+
outputs.AddOutputFilePath(fname);
|
|
2423
|
+
}
|
|
2298
2424
|
if (sub_compact->io_status.ok()) {
|
|
2299
2425
|
sub_compact->io_status = io_s;
|
|
2300
2426
|
// Since this error is really a copy of the io_s that is checked below as s,
|
|
@@ -2371,8 +2497,16 @@ Status CompactionJob::OpenCompactionOutputFile(SubcompactionState* sub_compact,
|
|
|
2371
2497
|
return s;
|
|
2372
2498
|
}
|
|
2373
2499
|
|
|
2500
|
+
// Enable hash computation if paranoid_file_checks is on or if
|
|
2501
|
+
// verify_output_flags includes kVerifyIteration, so that
|
|
2502
|
+
// VerifyOutputFiles() can compare the hash of the written data
|
|
2503
|
+
// against a re-read of the output file.
|
|
2504
|
+
bool enable_output_hash =
|
|
2505
|
+
paranoid_file_checks_ ||
|
|
2506
|
+
!!(sub_compact->compaction->mutable_cf_options().verify_output_flags &
|
|
2507
|
+
VerifyOutputFlags::kVerifyIteration);
|
|
2374
2508
|
outputs.AddOutput(std::move(meta), cfd->internal_comparator(),
|
|
2375
|
-
|
|
2509
|
+
enable_output_hash);
|
|
2376
2510
|
}
|
|
2377
2511
|
|
|
2378
2512
|
writable_file->SetIOPriority(GetRateLimiterPriority());
|
|
@@ -2413,7 +2547,7 @@ Status CompactionJob::OpenCompactionOutputFile(SubcompactionState* sub_compact,
|
|
|
2413
2547
|
|
|
2414
2548
|
void CompactionJob::CleanupCompaction() {
|
|
2415
2549
|
for (SubcompactionState& sub_compact : compact_->sub_compact_states) {
|
|
2416
|
-
sub_compact.Cleanup(table_cache_.get());
|
|
2550
|
+
sub_compact.Cleanup(table_cache_.get(), compact_->status);
|
|
2417
2551
|
}
|
|
2418
2552
|
delete compact_;
|
|
2419
2553
|
compact_ = nullptr;
|
|
@@ -2438,6 +2572,32 @@ bool CompactionJob::UpdateInternalStatsFromInputFiles(
|
|
|
2438
2572
|
bool has_error = false;
|
|
2439
2573
|
const ReadOptions read_options(Env::IOActivity::kCompaction);
|
|
2440
2574
|
const auto& input_table_properties = compaction->GetInputTableProperties();
|
|
2575
|
+
|
|
2576
|
+
// Check all input files for old block-based SST format_version. Why? Old
|
|
2577
|
+
// block-based SST files from roughly version 5.0 to 5.18 could produce
|
|
2578
|
+
// inaccurate num_entries counts due to the evolution of its handling along
|
|
2579
|
+
// with num_range_deletions. We have to disable some paranoid checks when
|
|
2580
|
+
// compacting files from such an old release. However, we don't have great
|
|
2581
|
+
// information to identify those files, so we heuristically over-approximate
|
|
2582
|
+
// that set of files using
|
|
2583
|
+
// (a) format_version < 5, which will be true for any files from RocksDB <
|
|
2584
|
+
// 6.6.0 and should not be true for any recent production files
|
|
2585
|
+
// (b) to avoid including non-block-based SST files (which still use older
|
|
2586
|
+
// format_version markers, and do not support DeleteRange), we also require
|
|
2587
|
+
// the presence of the user property "rocksdb.block.based.table.index.type",
|
|
2588
|
+
// which was added in RocksDB 2.8 and is always present in block-based tables.
|
|
2589
|
+
for (const auto& tp_pair : input_table_properties) {
|
|
2590
|
+
if (tp_pair.second && tp_pair.second->format_version < 5) {
|
|
2591
|
+
// Check for block-based table by looking for its index type property
|
|
2592
|
+
const auto& user_props = tp_pair.second->user_collected_properties;
|
|
2593
|
+
if (user_props.find(BlockBasedTablePropertyNames::kIndexType) !=
|
|
2594
|
+
user_props.end()) {
|
|
2595
|
+
job_stats_->has_accurate_num_input_records = false;
|
|
2596
|
+
break;
|
|
2597
|
+
}
|
|
2598
|
+
}
|
|
2599
|
+
}
|
|
2600
|
+
|
|
2441
2601
|
for (int input_level = 0;
|
|
2442
2602
|
input_level < static_cast<int>(compaction->num_input_levels());
|
|
2443
2603
|
++input_level) {
|
|
@@ -2682,7 +2842,10 @@ Status CompactionJob::ReadTablePropertiesDirectly(
|
|
|
2682
2842
|
std::shared_ptr<const TableProperties>* tp) {
|
|
2683
2843
|
std::unique_ptr<FSRandomAccessFile> file;
|
|
2684
2844
|
std::string file_name = GetTableFileName(file_meta->fd.GetNumber());
|
|
2685
|
-
|
|
2845
|
+
FileOptions fopts = file_options_;
|
|
2846
|
+
fopts.file_checksum = file_meta->file_checksum;
|
|
2847
|
+
fopts.file_checksum_func_name = file_meta->file_checksum_func_name;
|
|
2848
|
+
Status s = ioptions.fs->NewRandomAccessFile(file_name, fopts, &file,
|
|
2686
2849
|
nullptr /* dbg */);
|
|
2687
2850
|
if (!s.ok()) {
|
|
2688
2851
|
return s;
|
|
@@ -2776,12 +2939,17 @@ void CompactionJob::RestoreCompactionOutputs(
|
|
|
2776
2939
|
|
|
2777
2940
|
const auto& output_files = subcompaction_progress_per_level.GetOutputFiles();
|
|
2778
2941
|
|
|
2942
|
+
const bool enable_output_hash =
|
|
2943
|
+
paranoid_file_checks_ ||
|
|
2944
|
+
!!(compact_->compaction->mutable_cf_options().verify_output_flags &
|
|
2945
|
+
VerifyOutputFlags::kVerifyIteration);
|
|
2946
|
+
|
|
2779
2947
|
for (size_t i = 0; i < output_files.size(); i++) {
|
|
2780
2948
|
FileMetaData file_copy = output_files[i];
|
|
2781
2949
|
|
|
2782
2950
|
outputs_to_restore->AddOutput(std::move(file_copy),
|
|
2783
2951
|
cfd->internal_comparator(),
|
|
2784
|
-
|
|
2952
|
+
enable_output_hash, true /* finished */);
|
|
2785
2953
|
|
|
2786
2954
|
outputs_to_restore->UpdateTableProperties(
|
|
2787
2955
|
*output_files_table_properties[i]);
|
|
@@ -2804,12 +2972,6 @@ void CompactionJob::RestoreCompactionOutputs(
|
|
|
2804
2972
|
// - Status::NotFound(): No valid progress to resume from
|
|
2805
2973
|
// - Status::Corruption(): Resume key is invalid, beyond input range, or output
|
|
2806
2974
|
// restoration failed
|
|
2807
|
-
// - Other non-OK status: Iterator errors or file system issues during
|
|
2808
|
-
// restoration
|
|
2809
|
-
//
|
|
2810
|
-
// The caller must check for Status::IsIncomplete() to distinguish between
|
|
2811
|
-
// "no resume needed" (proceed with `InternalIterator::SeekToFirst()`) vs
|
|
2812
|
-
// "resume failed" scenarios.
|
|
2813
2975
|
Status CompactionJob::MaybeResumeSubcompactionProgressOnInputIterator(
|
|
2814
2976
|
SubcompactionState* sub_compact, InternalIterator* input_iter) {
|
|
2815
2977
|
const ReadOptions read_options(Env::IOActivity::kCompaction);
|
|
@@ -142,6 +142,9 @@ class SubcompactionState;
|
|
|
142
142
|
|
|
143
143
|
class CompactionJob {
|
|
144
144
|
public:
|
|
145
|
+
// Constant false aborted flag, used for compaction service jobs
|
|
146
|
+
static const std::atomic<int> kCompactionAbortedFalse;
|
|
147
|
+
|
|
145
148
|
CompactionJob(int job_id, Compaction* compaction,
|
|
146
149
|
const ImmutableDBOptions& db_options,
|
|
147
150
|
const MutableDBOptions& mutable_db_options,
|
|
@@ -157,6 +160,7 @@ class CompactionJob {
|
|
|
157
160
|
Env::Priority thread_pri,
|
|
158
161
|
const std::shared_ptr<IOTracer>& io_tracer,
|
|
159
162
|
const std::atomic<bool>& manual_compaction_canceled,
|
|
163
|
+
const std::atomic<int>& compaction_aborted,
|
|
160
164
|
const std::string& db_id = "",
|
|
161
165
|
const std::string& db_session_id = "",
|
|
162
166
|
std::string full_history_ts_low = "", std::string trim_ts = "",
|
|
@@ -250,6 +254,10 @@ class CompactionJob {
|
|
|
250
254
|
// @param num_input_range_del if non-null, will be set to the number of range
|
|
251
255
|
// deletion entries in this compaction input.
|
|
252
256
|
//
|
|
257
|
+
// If any input file has potentially unreliable num_entries count (old SST
|
|
258
|
+
// files - details in implementation),
|
|
259
|
+
// job_stats_->has_accurate_num_input_records is set to false.
|
|
260
|
+
//
|
|
253
261
|
// Returns true iff internal_stats_.output_level_stats.num_input_records and
|
|
254
262
|
// num_input_range_del are calculated successfully.
|
|
255
263
|
//
|
|
@@ -299,6 +307,7 @@ class CompactionJob {
|
|
|
299
307
|
void RunSubcompactions();
|
|
300
308
|
void UpdateTimingStats(uint64_t start_micros);
|
|
301
309
|
void RemoveEmptyOutputs();
|
|
310
|
+
void CleanupAbortedSubcompactions();
|
|
302
311
|
bool HasNewBlobFiles() const;
|
|
303
312
|
Status CollectSubcompactionErrors();
|
|
304
313
|
Status SyncOutputDirectories();
|
|
@@ -363,11 +372,6 @@ class CompactionJob {
|
|
|
363
372
|
std::unique_ptr<InternalIterator> trim_history_iter;
|
|
364
373
|
};
|
|
365
374
|
|
|
366
|
-
struct BlobFileResources {
|
|
367
|
-
std::vector<std::string> blob_file_paths;
|
|
368
|
-
std::unique_ptr<BlobFileBuilder> blob_file_builder;
|
|
369
|
-
};
|
|
370
|
-
|
|
371
375
|
bool ShouldUseLocalCompaction(SubcompactionState* sub_compact);
|
|
372
376
|
CompactionIOStatsSnapshot InitializeIOStats();
|
|
373
377
|
Status SetupAndValidateCompactionFilter(
|
|
@@ -382,14 +386,14 @@ class CompactionJob {
|
|
|
382
386
|
SubcompactionState* sub_compact, ColumnFamilyData* cfd,
|
|
383
387
|
SubcompactionInternalIterators& iterators,
|
|
384
388
|
SubcompactionKeyBoundaries& boundaries, ReadOptions& read_options);
|
|
385
|
-
void CreateBlobFileBuilder(
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
+
void CreateBlobFileBuilder(
|
|
390
|
+
SubcompactionState* sub_compact, ColumnFamilyData* cfd,
|
|
391
|
+
std::unique_ptr<BlobFileBuilder>& blob_file_builder,
|
|
392
|
+
const WriteOptions& write_options);
|
|
389
393
|
std::unique_ptr<CompactionIterator> CreateCompactionIterator(
|
|
390
394
|
SubcompactionState* sub_compact, ColumnFamilyData* cfd,
|
|
391
395
|
InternalIterator* input_iter, const CompactionFilter* compaction_filter,
|
|
392
|
-
MergeHelper& merge,
|
|
396
|
+
MergeHelper& merge, std::unique_ptr<BlobFileBuilder>& blob_file_builder,
|
|
393
397
|
const WriteOptions& write_options);
|
|
394
398
|
std::pair<CompactionFileOpenFunc, CompactionFileCloseFunc> CreateFileHandlers(
|
|
395
399
|
SubcompactionState* sub_compact, SubcompactionKeyBoundaries& boundaries);
|
|
@@ -461,6 +465,7 @@ class CompactionJob {
|
|
|
461
465
|
VersionSet* versions_;
|
|
462
466
|
const std::atomic<bool>* shutting_down_;
|
|
463
467
|
const std::atomic<bool>& manual_compaction_canceled_;
|
|
468
|
+
const std::atomic<int>& compaction_aborted_;
|
|
464
469
|
FSDirectory* db_directory_;
|
|
465
470
|
FSDirectory* blob_output_directory_;
|
|
466
471
|
InstrumentedMutex* db_mutex_;
|
|
@@ -82,7 +82,7 @@ class CompactionJobStatsTest : public testing::Test,
|
|
|
82
82
|
std::string dbname_;
|
|
83
83
|
std::string alternative_wal_dir_;
|
|
84
84
|
Env* env_;
|
|
85
|
-
DB
|
|
85
|
+
std::unique_ptr<DB> db_;
|
|
86
86
|
std::vector<ColumnFamilyHandle*> handles_;
|
|
87
87
|
uint32_t max_subcompactions_;
|
|
88
88
|
|
|
@@ -123,7 +123,7 @@ class CompactionJobStatsTest : public testing::Test,
|
|
|
123
123
|
static void SetUpTestCase() {}
|
|
124
124
|
static void TearDownTestCase() {}
|
|
125
125
|
|
|
126
|
-
DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_); }
|
|
126
|
+
DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_.get()); }
|
|
127
127
|
|
|
128
128
|
void CreateColumnFamilies(const std::vector<std::string>& cfs,
|
|
129
129
|
const Options& options) {
|
|
@@ -162,7 +162,8 @@ class CompactionJobStatsTest : public testing::Test,
|
|
|
162
162
|
column_families.emplace_back(cfs[i], options[i]);
|
|
163
163
|
}
|
|
164
164
|
DBOptions db_opts = DBOptions(options[0]);
|
|
165
|
-
|
|
165
|
+
auto s = DB::Open(db_opts, dbname_, column_families, &handles_, &db_);
|
|
166
|
+
return s;
|
|
166
167
|
}
|
|
167
168
|
|
|
168
169
|
Status TryReopenWithColumnFamilies(const std::vector<std::string>& cfs,
|
|
@@ -179,8 +180,7 @@ class CompactionJobStatsTest : public testing::Test,
|
|
|
179
180
|
delete h;
|
|
180
181
|
}
|
|
181
182
|
handles_.clear();
|
|
182
|
-
|
|
183
|
-
db_ = nullptr;
|
|
183
|
+
db_.reset();
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
void DestroyAndReopen(const Options& options) {
|
|
@@ -743,7 +743,7 @@ TEST_P(CompactionJobStatsTest, CompactionJobStatsTest) {
|
|
|
743
743
|
}
|
|
744
744
|
|
|
745
745
|
ASSERT_OK(Flush(1));
|
|
746
|
-
ASSERT_OK(
|
|
746
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
747
747
|
|
|
748
748
|
stats_checker->set_verify_next_comp_io_stats(true);
|
|
749
749
|
std::atomic<bool> first_prepare_write(true);
|
|
@@ -944,7 +944,7 @@ TEST_P(CompactionJobStatsTest, UniversalCompactionTest) {
|
|
|
944
944
|
start_key += key_base) {
|
|
945
945
|
MakeTableWithKeyValues(&rnd, start_key, start_key + key_base - 1, kKeySize,
|
|
946
946
|
kValueSize, key_interval, compression_ratio, 1);
|
|
947
|
-
ASSERT_OK(
|
|
947
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
948
948
|
}
|
|
949
949
|
ASSERT_EQ(stats_checker->NumberOfUnverifiedStats(), 0U);
|
|
950
950
|
}
|