@nxtedition/rocksdb 6.0.1 → 7.0.0-alpha.1
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/BUILDING.md +12 -4
- package/binding.cc +421 -40
- package/deps/rocksdb/build_version.cc +4 -10
- package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
- package/deps/rocksdb/rocksdb/Makefile +73 -91
- package/deps/rocksdb/rocksdb/TARGETS +27 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
- package/deps/rocksdb/rocksdb/common.mk +30 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
- package/deps/rocksdb/rocksdb/db/c.cc +71 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
- package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
- package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
- package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
- package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
- package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
- package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
- package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
- package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
- package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
- package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
- package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
- package/deps/rocksdb/rocksdb/env/env.cc +0 -60
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
- package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
- package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
- package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
- package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
- package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
- package/deps/rocksdb/rocksdb/src.mk +6 -1
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/format.cc +22 -20
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
- package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
- package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
- package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
- package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
- package/deps/rocksdb/rocksdb/util/compression.h +56 -7
- package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
- package/deps/rocksdb/rocksdb/util/heap.h +5 -3
- package/deps/rocksdb/rocksdb/util/random.cc +1 -5
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
- package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
- package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +20 -13
- package/index.js +187 -3
- package/iterator.js +1 -0
- package/package-lock.json +23687 -0
- package/package.json +2 -30
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/snapshot.js +23 -0
- package/deps/liburing/liburing/README +0 -46
- package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
- package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
- package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
- package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
- package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
- package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
- package/deps/liburing/liburing/test/Makefile +0 -312
- package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
- package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
- package/deps/liburing/liburing/test/accept-link.c +0 -251
- package/deps/liburing/liburing/test/accept-reuse.c +0 -164
- package/deps/liburing/liburing/test/accept-test.c +0 -79
- package/deps/liburing/liburing/test/accept.c +0 -476
- package/deps/liburing/liburing/test/across-fork.c +0 -283
- package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
- package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
- package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
- package/deps/liburing/liburing/test/close-opath.c +0 -122
- package/deps/liburing/liburing/test/config +0 -10
- package/deps/liburing/liburing/test/connect.c +0 -398
- package/deps/liburing/liburing/test/cq-full.c +0 -96
- package/deps/liburing/liburing/test/cq-overflow.c +0 -294
- package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
- package/deps/liburing/liburing/test/cq-ready.c +0 -94
- package/deps/liburing/liburing/test/cq-size.c +0 -58
- package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
- package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
- package/deps/liburing/liburing/test/defer.c +0 -307
- package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
- package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
- package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
- package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
- package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
- package/deps/liburing/liburing/test/eventfd.c +0 -112
- package/deps/liburing/liburing/test/fadvise.c +0 -202
- package/deps/liburing/liburing/test/fallocate.c +0 -249
- package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
- package/deps/liburing/liburing/test/file-register.c +0 -843
- package/deps/liburing/liburing/test/file-update.c +0 -173
- package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
- package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
- package/deps/liburing/liburing/test/fixed-link.c +0 -90
- package/deps/liburing/liburing/test/fsync.c +0 -224
- package/deps/liburing/liburing/test/hardlink.c +0 -136
- package/deps/liburing/liburing/test/helpers.c +0 -135
- package/deps/liburing/liburing/test/helpers.h +0 -67
- package/deps/liburing/liburing/test/io-cancel.c +0 -537
- package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
- package/deps/liburing/liburing/test/io_uring_register.c +0 -664
- package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
- package/deps/liburing/liburing/test/iopoll.c +0 -366
- package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
- package/deps/liburing/liburing/test/lfs-openat.c +0 -273
- package/deps/liburing/liburing/test/link-timeout.c +0 -1107
- package/deps/liburing/liburing/test/link.c +0 -496
- package/deps/liburing/liburing/test/link_drain.c +0 -229
- package/deps/liburing/liburing/test/madvise.c +0 -195
- package/deps/liburing/liburing/test/mkdir.c +0 -108
- package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
- package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
- package/deps/liburing/liburing/test/nop.c +0 -115
- package/deps/liburing/liburing/test/open-close.c +0 -146
- package/deps/liburing/liburing/test/openat2.c +0 -240
- package/deps/liburing/liburing/test/personality.c +0 -204
- package/deps/liburing/liburing/test/pipe-eof.c +0 -81
- package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
- package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
- package/deps/liburing/liburing/test/poll-cancel.c +0 -135
- package/deps/liburing/liburing/test/poll-link.c +0 -227
- package/deps/liburing/liburing/test/poll-many.c +0 -208
- package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
- package/deps/liburing/liburing/test/poll-ring.c +0 -48
- package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
- package/deps/liburing/liburing/test/poll.c +0 -109
- package/deps/liburing/liburing/test/probe.c +0 -137
- package/deps/liburing/liburing/test/read-write.c +0 -876
- package/deps/liburing/liburing/test/register-restrictions.c +0 -633
- package/deps/liburing/liburing/test/rename.c +0 -134
- package/deps/liburing/liburing/test/ring-leak.c +0 -173
- package/deps/liburing/liburing/test/ring-leak2.c +0 -249
- package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
- package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
- package/deps/liburing/liburing/test/runtests.sh +0 -170
- package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
- package/deps/liburing/liburing/test/self.c +0 -91
- package/deps/liburing/liburing/test/send_recv.c +0 -291
- package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
- package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
- package/deps/liburing/liburing/test/shared-wq.c +0 -84
- package/deps/liburing/liburing/test/short-read.c +0 -75
- package/deps/liburing/liburing/test/shutdown.c +0 -163
- package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
- package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
- package/deps/liburing/liburing/test/socket-rw.c +0 -147
- package/deps/liburing/liburing/test/splice.c +0 -511
- package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
- package/deps/liburing/liburing/test/sq-full.c +0 -45
- package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
- package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
- package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
- package/deps/liburing/liburing/test/sq-space_left.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
- package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
- package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
- package/deps/liburing/liburing/test/statx.c +0 -172
- package/deps/liburing/liburing/test/stdout.c +0 -232
- package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
- package/deps/liburing/liburing/test/submit-reuse.c +0 -239
- package/deps/liburing/liburing/test/symlink.c +0 -116
- package/deps/liburing/liburing/test/teardowns.c +0 -58
- package/deps/liburing/liburing/test/thread-exit.c +0 -131
- package/deps/liburing/liburing/test/timeout-new.c +0 -246
- package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
- package/deps/liburing/liburing/test/timeout.c +0 -1354
- package/deps/liburing/liburing/test/unlink.c +0 -111
- package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
- package/deps/rocksdb/rocksdb/README.md +0 -32
- package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
- package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
- package/deps/rocksdb/rocksdb/port/README +0 -10
- package/deps/rocksdb/rocksdb/python.mk +0 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -38,6 +38,10 @@
|
|
|
38
38
|
#include "db/table_cache.h"
|
|
39
39
|
#include "db/version_builder.h"
|
|
40
40
|
#include "db/version_edit_handler.h"
|
|
41
|
+
#if USE_COROUTINES
|
|
42
|
+
#include "folly/experimental/coro/BlockingWait.h"
|
|
43
|
+
#include "folly/experimental/coro/Collect.h"
|
|
44
|
+
#endif
|
|
41
45
|
#include "file/filename.h"
|
|
42
46
|
#include "file/random_access_file_reader.h"
|
|
43
47
|
#include "file/read_write_util.h"
|
|
@@ -59,13 +63,28 @@
|
|
|
59
63
|
#include "table/plain/plain_table_factory.h"
|
|
60
64
|
#include "table/table_reader.h"
|
|
61
65
|
#include "table/two_level_iterator.h"
|
|
66
|
+
#include "table/unique_id_impl.h"
|
|
62
67
|
#include "test_util/sync_point.h"
|
|
63
68
|
#include "util/cast_util.h"
|
|
64
69
|
#include "util/coding.h"
|
|
70
|
+
#include "util/coro_utils.h"
|
|
65
71
|
#include "util/stop_watch.h"
|
|
66
72
|
#include "util/string_util.h"
|
|
67
73
|
#include "util/user_comparator_wrapper.h"
|
|
68
74
|
|
|
75
|
+
// Generate the regular and coroutine versions of some methods by
|
|
76
|
+
// including version_set_sync_and_async.h twice
|
|
77
|
+
// Macros in the header will expand differently based on whether
|
|
78
|
+
// WITH_COROUTINES or WITHOUT_COROUTINES is defined
|
|
79
|
+
// clang-format off
|
|
80
|
+
#define WITHOUT_COROUTINES
|
|
81
|
+
#include "db/version_set_sync_and_async.h"
|
|
82
|
+
#undef WITHOUT_COROUTINES
|
|
83
|
+
#define WITH_COROUTINES
|
|
84
|
+
#include "db/version_set_sync_and_async.h"
|
|
85
|
+
#undef WITH_COROUTINES
|
|
86
|
+
// clang-format on
|
|
87
|
+
|
|
69
88
|
namespace ROCKSDB_NAMESPACE {
|
|
70
89
|
|
|
71
90
|
namespace {
|
|
@@ -504,68 +523,63 @@ class FilePickerMultiGet {
|
|
|
504
523
|
return file_hit;
|
|
505
524
|
}
|
|
506
525
|
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
batch_iter_ = upper_key_;
|
|
526
|
-
}
|
|
526
|
+
void PrepareNextLevelForSearch() { search_ended_ = !PrepareNextLevel(); }
|
|
527
|
+
|
|
528
|
+
FdWithKeyRange* GetNextFileInLevel() {
|
|
529
|
+
if (batch_iter_ == current_level_range_.end() || search_ended_) {
|
|
530
|
+
return nullptr;
|
|
531
|
+
} else {
|
|
532
|
+
if (maybe_repeat_key_) {
|
|
533
|
+
maybe_repeat_key_ = false;
|
|
534
|
+
// Check if we found the final value for the last key in the
|
|
535
|
+
// previous lookup range. If we did, then there's no need to look
|
|
536
|
+
// any further for that key, so advance batch_iter_. Else, keep
|
|
537
|
+
// batch_iter_ positioned on that key so we look it up again in
|
|
538
|
+
// the next file
|
|
539
|
+
// For L0, always advance the key because we will look in the next
|
|
540
|
+
// file regardless for all keys not found yet
|
|
541
|
+
if (current_level_range_.CheckKeyDone(batch_iter_) ||
|
|
542
|
+
curr_level_ == 0) {
|
|
543
|
+
batch_iter_ = upper_key_;
|
|
527
544
|
}
|
|
528
|
-
// batch_iter_prev_ will become the start key for the next file
|
|
529
|
-
// lookup
|
|
530
|
-
batch_iter_prev_ = batch_iter_;
|
|
531
545
|
}
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
546
|
+
// batch_iter_prev_ will become the start key for the next file
|
|
547
|
+
// lookup
|
|
548
|
+
batch_iter_prev_ = batch_iter_;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
MultiGetRange next_file_range(current_level_range_, batch_iter_prev_,
|
|
552
|
+
current_level_range_.end());
|
|
553
|
+
size_t curr_file_index =
|
|
554
|
+
(batch_iter_ != current_level_range_.end())
|
|
555
|
+
? fp_ctx_array_[batch_iter_.index()].curr_index_in_curr_level
|
|
556
|
+
: curr_file_level_->num_files;
|
|
557
|
+
FdWithKeyRange* f;
|
|
558
|
+
bool is_last_key_in_file;
|
|
559
|
+
if (!GetNextFileInLevelWithKeys(&next_file_range, &curr_file_index, &f,
|
|
560
|
+
&is_last_key_in_file)) {
|
|
561
|
+
return nullptr;
|
|
562
|
+
} else {
|
|
563
|
+
if (is_last_key_in_file) {
|
|
564
|
+
// Since cmp_largest is 0, batch_iter_ still points to the last key
|
|
565
|
+
// that falls in this file, instead of the next one. Increment
|
|
566
|
+
// the file index for all keys between batch_iter_ and upper_key_
|
|
567
|
+
auto tmp_iter = batch_iter_;
|
|
568
|
+
while (tmp_iter != upper_key_) {
|
|
569
|
+
++(fp_ctx_array_[tmp_iter.index()].curr_index_in_curr_level);
|
|
570
|
+
++tmp_iter;
|
|
555
571
|
}
|
|
556
|
-
|
|
557
|
-
current_file_range_ =
|
|
558
|
-
MultiGetRange(next_file_range, batch_iter_prev_, upper_key_);
|
|
559
|
-
returned_file_level_ = curr_level_;
|
|
560
|
-
hit_file_level_ = curr_level_;
|
|
561
|
-
is_hit_file_last_in_level_ =
|
|
562
|
-
curr_file_index == curr_file_level_->num_files - 1;
|
|
563
|
-
return f;
|
|
572
|
+
maybe_repeat_key_ = true;
|
|
564
573
|
}
|
|
574
|
+
// Set the range for this file
|
|
575
|
+
current_file_range_ =
|
|
576
|
+
MultiGetRange(next_file_range, batch_iter_prev_, upper_key_);
|
|
577
|
+
returned_file_level_ = curr_level_;
|
|
578
|
+
hit_file_level_ = curr_level_;
|
|
579
|
+
is_hit_file_last_in_level_ =
|
|
580
|
+
curr_file_index == curr_file_level_->num_files - 1;
|
|
581
|
+
return f;
|
|
565
582
|
}
|
|
566
|
-
|
|
567
|
-
// Search ended
|
|
568
|
-
return nullptr;
|
|
569
583
|
}
|
|
570
584
|
|
|
571
585
|
// getter for current file level
|
|
@@ -576,8 +590,16 @@ class FilePickerMultiGet {
|
|
|
576
590
|
// GetNextFile()) is at the last index in its level.
|
|
577
591
|
bool IsHitFileLastInLevel() { return is_hit_file_last_in_level_; }
|
|
578
592
|
|
|
593
|
+
bool KeyMaySpanNextFile() { return maybe_repeat_key_; }
|
|
594
|
+
|
|
595
|
+
bool IsSearchEnded() { return search_ended_; }
|
|
596
|
+
|
|
579
597
|
const MultiGetRange& CurrentFileRange() { return current_file_range_; }
|
|
580
598
|
|
|
599
|
+
bool RemainingOverlapInLevel() {
|
|
600
|
+
return !current_level_range_.Suffix(current_file_range_).empty();
|
|
601
|
+
}
|
|
602
|
+
|
|
581
603
|
private:
|
|
582
604
|
unsigned int num_levels_;
|
|
583
605
|
unsigned int curr_level_;
|
|
@@ -1056,7 +1078,15 @@ void LevelIterator::Seek(const Slice& target) {
|
|
|
1056
1078
|
|
|
1057
1079
|
if (file_iter_.iter() != nullptr) {
|
|
1058
1080
|
file_iter_.Seek(target);
|
|
1081
|
+
// Status::TryAgain indicates asynchronous request for retrieval of data
|
|
1082
|
+
// blocks has been submitted. So it should return at this point and Seek
|
|
1083
|
+
// should be called again to retrieve the requested block and execute the
|
|
1084
|
+
// remaining code.
|
|
1085
|
+
if (file_iter_.status() == Status::TryAgain()) {
|
|
1086
|
+
return;
|
|
1087
|
+
}
|
|
1059
1088
|
}
|
|
1089
|
+
|
|
1060
1090
|
if (SkipEmptyFileForward() && prefix_extractor_ != nullptr &&
|
|
1061
1091
|
!read_options_.total_order_seek && !read_options_.auto_prefix_mode &&
|
|
1062
1092
|
file_iter_.iter() != nullptr && file_iter_.Valid()) {
|
|
@@ -1517,7 +1547,7 @@ uint64_t Version::GetSstFilesSize() {
|
|
|
1517
1547
|
}
|
|
1518
1548
|
|
|
1519
1549
|
void Version::GetCreationTimeOfOldestFile(uint64_t* creation_time) {
|
|
1520
|
-
uint64_t oldest_time =
|
|
1550
|
+
uint64_t oldest_time = std::numeric_limits<uint64_t>::max();
|
|
1521
1551
|
for (int level = 0; level < storage_info_.num_non_empty_levels_; level++) {
|
|
1522
1552
|
for (FileMetaData* meta : storage_info_.LevelFiles(level)) {
|
|
1523
1553
|
assert(meta->fd.table_reader != nullptr);
|
|
@@ -1534,6 +1564,40 @@ void Version::GetCreationTimeOfOldestFile(uint64_t* creation_time) {
|
|
|
1534
1564
|
*creation_time = oldest_time;
|
|
1535
1565
|
}
|
|
1536
1566
|
|
|
1567
|
+
Status Version::VerifySstUniqueIds() const {
|
|
1568
|
+
for (int level = 0; level < storage_info_.num_non_empty_levels_; level++) {
|
|
1569
|
+
for (FileMetaData* meta : storage_info_.LevelFiles(level)) {
|
|
1570
|
+
if (meta->unique_id != kNullUniqueId64x2) {
|
|
1571
|
+
std::shared_ptr<const TableProperties> props;
|
|
1572
|
+
Status s =
|
|
1573
|
+
GetTableProperties(&props, meta); // may open the file if it's not
|
|
1574
|
+
if (!s.ok()) {
|
|
1575
|
+
return s;
|
|
1576
|
+
}
|
|
1577
|
+
UniqueId64x2 id;
|
|
1578
|
+
s = GetSstInternalUniqueId(props->db_id, props->db_session_id,
|
|
1579
|
+
props->orig_file_number, &id);
|
|
1580
|
+
if (!s.ok() || id != meta->unique_id) {
|
|
1581
|
+
std::ostringstream oss;
|
|
1582
|
+
oss << "SST #" << meta->fd.GetNumber() << " unique ID mismatch. ";
|
|
1583
|
+
oss << "Manifest: "
|
|
1584
|
+
<< InternalUniqueIdToHumanString(&(meta->unique_id)) << ", ";
|
|
1585
|
+
if (s.ok()) {
|
|
1586
|
+
oss << "Table Properties: " << InternalUniqueIdToHumanString(&id);
|
|
1587
|
+
} else {
|
|
1588
|
+
oss << "Failed to get Table Properties: " << s.ToString();
|
|
1589
|
+
}
|
|
1590
|
+
return Status::Corruption("VersionSet", oss.str());
|
|
1591
|
+
}
|
|
1592
|
+
TEST_SYNC_POINT_CALLBACK("Version::VerifySstUniqueIds::Passed", &id);
|
|
1593
|
+
} else {
|
|
1594
|
+
TEST_SYNC_POINT_CALLBACK("Version::VerifySstUniqueIds::Skipped", meta);
|
|
1595
|
+
}
|
|
1596
|
+
}
|
|
1597
|
+
}
|
|
1598
|
+
return Status::OK();
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1537
1601
|
uint64_t VersionStorageInfo::GetEstimatedActiveKeys() const {
|
|
1538
1602
|
// Estimation will be inaccurate when:
|
|
1539
1603
|
// (1) there exist merge keys
|
|
@@ -2183,7 +2247,7 @@ void Version::MultiGet(const ReadOptions& read_options, MultiGetRange* range,
|
|
|
2183
2247
|
&file_picker_range,
|
|
2184
2248
|
&storage_info_.level_files_brief_, storage_info_.num_non_empty_levels_,
|
|
2185
2249
|
&storage_info_.file_indexer_, user_comparator(), internal_comparator());
|
|
2186
|
-
FdWithKeyRange* f = fp.
|
|
2250
|
+
FdWithKeyRange* f = fp.GetNextFileInLevel();
|
|
2187
2251
|
Status s;
|
|
2188
2252
|
uint64_t num_index_read = 0;
|
|
2189
2253
|
uint64_t num_filter_read = 0;
|
|
@@ -2193,164 +2257,92 @@ void Version::MultiGet(const ReadOptions& read_options, MultiGetRange* range,
|
|
|
2193
2257
|
MultiGetRange keys_with_blobs_range(*range, range->begin(), range->end());
|
|
2194
2258
|
// blob_file => [[blob_idx, it], ...]
|
|
2195
2259
|
std::unordered_map<uint64_t, BlobReadRequests> blob_rqs;
|
|
2196
|
-
int
|
|
2197
|
-
|
|
2198
|
-
while (
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
//
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
num_sst_read = 0;
|
|
2218
|
-
level = fp.GetHitFileLevel();
|
|
2219
|
-
}
|
|
2220
|
-
|
|
2221
|
-
StopWatchNano timer(clock_, timer_enabled /* auto_start */);
|
|
2222
|
-
s = table_cache_->MultiGet(
|
|
2223
|
-
read_options, *internal_comparator(), *f->file_metadata, &file_range,
|
|
2224
|
-
mutable_cf_options_.prefix_extractor,
|
|
2225
|
-
cfd_->internal_stats()->GetFileReadHist(fp.GetHitFileLevel()),
|
|
2226
|
-
IsFilterSkipped(static_cast<int>(fp.GetHitFileLevel()),
|
|
2227
|
-
fp.IsHitFileLastInLevel()),
|
|
2228
|
-
fp.GetHitFileLevel());
|
|
2229
|
-
// TODO: examine the behavior for corrupted key
|
|
2230
|
-
if (timer_enabled) {
|
|
2231
|
-
PERF_COUNTER_BY_LEVEL_ADD(get_from_table_nanos, timer.ElapsedNanos(),
|
|
2232
|
-
fp.GetHitFileLevel());
|
|
2233
|
-
}
|
|
2234
|
-
if (!s.ok()) {
|
|
2235
|
-
// TODO: Set status for individual keys appropriately
|
|
2236
|
-
for (auto iter = file_range.begin(); iter != file_range.end(); ++iter) {
|
|
2237
|
-
*iter->s = s;
|
|
2238
|
-
file_range.MarkKeyDone(iter);
|
|
2239
|
-
}
|
|
2240
|
-
return;
|
|
2241
|
-
}
|
|
2242
|
-
uint64_t batch_size = 0;
|
|
2243
|
-
for (auto iter = file_range.begin(); s.ok() && iter != file_range.end();
|
|
2244
|
-
++iter) {
|
|
2245
|
-
GetContext& get_context = *iter->get_context;
|
|
2246
|
-
Status* status = iter->s;
|
|
2247
|
-
// The Status in the KeyContext takes precedence over GetContext state
|
|
2248
|
-
// Status may be an error if there were any IO errors in the table
|
|
2249
|
-
// reader. We never expect Status to be NotFound(), as that is
|
|
2250
|
-
// determined by get_context
|
|
2251
|
-
assert(!status->IsNotFound());
|
|
2252
|
-
if (!status->ok()) {
|
|
2253
|
-
file_range.MarkKeyDone(iter);
|
|
2254
|
-
continue;
|
|
2260
|
+
int prev_level = -1;
|
|
2261
|
+
|
|
2262
|
+
while (!fp.IsSearchEnded()) {
|
|
2263
|
+
// This will be set to true later if we actually look up in a file in L0.
|
|
2264
|
+
// For per level stats purposes, an L0 file is treated as a level
|
|
2265
|
+
bool dump_stats_for_l0_file = false;
|
|
2266
|
+
|
|
2267
|
+
// Avoid using the coroutine version if we're looking in a L0 file, since
|
|
2268
|
+
// L0 files won't be parallelized anyway. The regular synchronous version
|
|
2269
|
+
// is faster.
|
|
2270
|
+
if (!read_options.async_io || !using_coroutines() ||
|
|
2271
|
+
fp.GetHitFileLevel() == 0 || !fp.RemainingOverlapInLevel()) {
|
|
2272
|
+
if (f) {
|
|
2273
|
+
// Call MultiGetFromSST for looking up a single file
|
|
2274
|
+
s = MultiGetFromSST(read_options, fp.CurrentFileRange(),
|
|
2275
|
+
fp.GetHitFileLevel(), fp.IsHitFileLastInLevel(), f,
|
|
2276
|
+
blob_rqs, num_filter_read, num_index_read,
|
|
2277
|
+
num_data_read, num_sst_read);
|
|
2278
|
+
if (fp.GetHitFileLevel() == 0) {
|
|
2279
|
+
dump_stats_for_l0_file = true;
|
|
2280
|
+
}
|
|
2255
2281
|
}
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
sample_file_read_inc(f->file_metadata);
|
|
2282
|
+
if (s.ok()) {
|
|
2283
|
+
f = fp.GetNextFileInLevel();
|
|
2259
2284
|
}
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
// report the counters before returning
|
|
2272
|
-
if (get_context.State() != GetContext::kNotFound &&
|
|
2273
|
-
get_context.State() != GetContext::kMerge &&
|
|
2274
|
-
db_statistics_ != nullptr) {
|
|
2275
|
-
get_context.ReportCounters();
|
|
2276
|
-
} else {
|
|
2277
|
-
if (iter->max_covering_tombstone_seq > 0) {
|
|
2278
|
-
// The remaining files we look at will only contain covered keys, so
|
|
2279
|
-
// we stop here for this key
|
|
2280
|
-
file_picker_range.SkipKey(iter);
|
|
2285
|
+
#if USE_COROUTINES
|
|
2286
|
+
} else {
|
|
2287
|
+
std::vector<folly::coro::Task<Status>> mget_tasks;
|
|
2288
|
+
while (f != nullptr) {
|
|
2289
|
+
mget_tasks.emplace_back(MultiGetFromSSTCoroutine(
|
|
2290
|
+
read_options, fp.CurrentFileRange(), fp.GetHitFileLevel(),
|
|
2291
|
+
fp.IsHitFileLastInLevel(), f, blob_rqs, num_filter_read,
|
|
2292
|
+
num_index_read, num_data_read, num_sst_read));
|
|
2293
|
+
if (fp.KeyMaySpanNextFile()) {
|
|
2294
|
+
break;
|
|
2281
2295
|
}
|
|
2296
|
+
f = fp.GetNextFileInLevel();
|
|
2282
2297
|
}
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
if (fp.GetHitFileLevel() == 0) {
|
|
2292
|
-
RecordTick(db_statistics_, GET_HIT_L0);
|
|
2293
|
-
} else if (fp.GetHitFileLevel() == 1) {
|
|
2294
|
-
RecordTick(db_statistics_, GET_HIT_L1);
|
|
2295
|
-
} else if (fp.GetHitFileLevel() >= 2) {
|
|
2296
|
-
RecordTick(db_statistics_, GET_HIT_L2_AND_UP);
|
|
2298
|
+
if (mget_tasks.size() > 0) {
|
|
2299
|
+
// Collect all results so far
|
|
2300
|
+
std::vector<Status> statuses = folly::coro::blockingWait(
|
|
2301
|
+
folly::coro::collectAllRange(std::move(mget_tasks))
|
|
2302
|
+
.scheduleOn(&range->context()->executor()));
|
|
2303
|
+
for (Status stat : statuses) {
|
|
2304
|
+
if (!stat.ok()) {
|
|
2305
|
+
s = stat;
|
|
2297
2306
|
}
|
|
2307
|
+
}
|
|
2298
2308
|
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
file_range.MarkKeyDone(iter);
|
|
2303
|
-
|
|
2304
|
-
if (iter->is_blob_index) {
|
|
2305
|
-
if (iter->value) {
|
|
2306
|
-
TEST_SYNC_POINT_CALLBACK("Version::MultiGet::TamperWithBlobIndex",
|
|
2307
|
-
&(*iter));
|
|
2308
|
-
|
|
2309
|
-
const Slice& blob_index_slice = *(iter->value);
|
|
2310
|
-
BlobIndex blob_index;
|
|
2311
|
-
Status tmp_s = blob_index.DecodeFrom(blob_index_slice);
|
|
2312
|
-
if (tmp_s.ok()) {
|
|
2313
|
-
const uint64_t blob_file_num = blob_index.file_number();
|
|
2314
|
-
blob_rqs[blob_file_num].emplace_back(
|
|
2315
|
-
std::make_pair(blob_index, std::cref(*iter)));
|
|
2316
|
-
} else {
|
|
2317
|
-
*(iter->s) = tmp_s;
|
|
2318
|
-
}
|
|
2319
|
-
}
|
|
2320
|
-
} else {
|
|
2321
|
-
file_range.AddValueSize(iter->value->size());
|
|
2322
|
-
if (file_range.GetValueSize() >
|
|
2323
|
-
read_options.value_size_soft_limit) {
|
|
2324
|
-
s = Status::Aborted();
|
|
2325
|
-
break;
|
|
2326
|
-
}
|
|
2327
|
-
}
|
|
2328
|
-
continue;
|
|
2329
|
-
case GetContext::kDeleted:
|
|
2330
|
-
// Use empty error message for speed
|
|
2331
|
-
*status = Status::NotFound();
|
|
2332
|
-
file_range.MarkKeyDone(iter);
|
|
2333
|
-
continue;
|
|
2334
|
-
case GetContext::kCorrupt:
|
|
2335
|
-
*status =
|
|
2336
|
-
Status::Corruption("corrupted key for ", iter->lkey->user_key());
|
|
2337
|
-
file_range.MarkKeyDone(iter);
|
|
2338
|
-
continue;
|
|
2339
|
-
case GetContext::kUnexpectedBlobIndex:
|
|
2340
|
-
ROCKS_LOG_ERROR(info_log_, "Encounter unexpected blob index.");
|
|
2341
|
-
*status = Status::NotSupported(
|
|
2342
|
-
"Encounter unexpected blob index. Please open DB with "
|
|
2343
|
-
"ROCKSDB_NAMESPACE::blob_db::BlobDB instead.");
|
|
2344
|
-
file_range.MarkKeyDone(iter);
|
|
2345
|
-
continue;
|
|
2309
|
+
if (s.ok() && fp.KeyMaySpanNextFile()) {
|
|
2310
|
+
f = fp.GetNextFileInLevel();
|
|
2311
|
+
}
|
|
2346
2312
|
}
|
|
2313
|
+
#endif // USE_COROUTINES
|
|
2347
2314
|
}
|
|
2348
|
-
|
|
2349
|
-
RecordInHistogram(db_statistics_, SST_BATCH_SIZE, batch_size);
|
|
2315
|
+
// If bad status or we found final result for all the keys
|
|
2350
2316
|
if (!s.ok() || file_picker_range.empty()) {
|
|
2351
2317
|
break;
|
|
2352
2318
|
}
|
|
2353
|
-
|
|
2319
|
+
if (!f) {
|
|
2320
|
+
// Reached the end of this level. Prepare the next level
|
|
2321
|
+
fp.PrepareNextLevelForSearch();
|
|
2322
|
+
if (!fp.IsSearchEnded()) {
|
|
2323
|
+
// Its possible there is no overlap on this level and f is nullptr
|
|
2324
|
+
f = fp.GetNextFileInLevel();
|
|
2325
|
+
}
|
|
2326
|
+
if (dump_stats_for_l0_file ||
|
|
2327
|
+
(prev_level != 0 && prev_level != (int)fp.GetHitFileLevel())) {
|
|
2328
|
+
// Dump the stats if the search has moved to the next level and
|
|
2329
|
+
// reset for next level.
|
|
2330
|
+
if (num_sst_read || (num_filter_read + num_index_read)) {
|
|
2331
|
+
RecordInHistogram(db_statistics_,
|
|
2332
|
+
NUM_INDEX_AND_FILTER_BLOCKS_READ_PER_LEVEL,
|
|
2333
|
+
num_index_read + num_filter_read);
|
|
2334
|
+
RecordInHistogram(db_statistics_, NUM_DATA_BLOCKS_READ_PER_LEVEL,
|
|
2335
|
+
num_data_read);
|
|
2336
|
+
RecordInHistogram(db_statistics_, NUM_SST_READ_PER_LEVEL,
|
|
2337
|
+
num_sst_read);
|
|
2338
|
+
}
|
|
2339
|
+
num_filter_read = 0;
|
|
2340
|
+
num_index_read = 0;
|
|
2341
|
+
num_data_read = 0;
|
|
2342
|
+
num_sst_read = 0;
|
|
2343
|
+
}
|
|
2344
|
+
prev_level = fp.GetHitFileLevel();
|
|
2345
|
+
}
|
|
2354
2346
|
}
|
|
2355
2347
|
|
|
2356
2348
|
// Dump stats for most recent level
|
|
@@ -3986,7 +3978,7 @@ std::string Version::DebugString(bool hex, bool print_stats) const {
|
|
|
3986
3978
|
}
|
|
3987
3979
|
if (print_stats) {
|
|
3988
3980
|
r.append("(");
|
|
3989
|
-
r.append(
|
|
3981
|
+
r.append(std::to_string(
|
|
3990
3982
|
files[i]->stats.num_reads_sampled.load(std::memory_order_relaxed)));
|
|
3991
3983
|
r.append(")");
|
|
3992
3984
|
}
|
|
@@ -5492,13 +5484,14 @@ Status VersionSet::WriteCurrentStateToManifest(
|
|
|
5492
5484
|
for (const auto& f : level_files) {
|
|
5493
5485
|
assert(f);
|
|
5494
5486
|
|
|
5495
|
-
edit.AddFile(
|
|
5496
|
-
|
|
5497
|
-
|
|
5498
|
-
|
|
5499
|
-
|
|
5500
|
-
|
|
5501
|
-
|
|
5487
|
+
edit.AddFile(level, f->fd.GetNumber(), f->fd.GetPathId(),
|
|
5488
|
+
f->fd.GetFileSize(), f->smallest, f->largest,
|
|
5489
|
+
f->fd.smallest_seqno, f->fd.largest_seqno,
|
|
5490
|
+
f->marked_for_compaction, f->temperature,
|
|
5491
|
+
f->oldest_blob_file_number, f->oldest_ancester_time,
|
|
5492
|
+
f->file_creation_time, f->file_checksum,
|
|
5493
|
+
f->file_checksum_func_name, f->min_timestamp,
|
|
5494
|
+
f->max_timestamp, f->unique_id);
|
|
5502
5495
|
}
|
|
5503
5496
|
}
|
|
5504
5497
|
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
#include "table/get_context.h"
|
|
55
55
|
#include "table/multiget_context.h"
|
|
56
56
|
#include "trace_replay/block_cache_tracer.h"
|
|
57
|
+
#include "util/coro_utils.h"
|
|
57
58
|
#include "util/hash_containers.h"
|
|
58
59
|
|
|
59
60
|
namespace ROCKSDB_NAMESPACE {
|
|
@@ -851,6 +852,8 @@ class Version {
|
|
|
851
852
|
|
|
852
853
|
const MutableCFOptions& GetMutableCFOptions() { return mutable_cf_options_; }
|
|
853
854
|
|
|
855
|
+
Status VerifySstUniqueIds() const;
|
|
856
|
+
|
|
854
857
|
private:
|
|
855
858
|
Env* env_;
|
|
856
859
|
SystemClock* clock_;
|
|
@@ -882,6 +885,14 @@ class Version {
|
|
|
882
885
|
// This accumulated stats will be used in compaction.
|
|
883
886
|
void UpdateAccumulatedStats();
|
|
884
887
|
|
|
888
|
+
DECLARE_SYNC_AND_ASYNC(
|
|
889
|
+
/* ret_type */ Status, /* func_name */ MultiGetFromSST,
|
|
890
|
+
const ReadOptions& read_options, MultiGetRange file_range,
|
|
891
|
+
int hit_file_level, bool is_hit_file_last_in_level, FdWithKeyRange* f,
|
|
892
|
+
std::unordered_map<uint64_t, BlobReadRequests>& blob_rqs,
|
|
893
|
+
uint64_t& num_filter_read, uint64_t& num_index_read,
|
|
894
|
+
uint64_t& num_data_read, uint64_t& num_sst_read);
|
|
895
|
+
|
|
885
896
|
ColumnFamilyData* cfd_; // ColumnFamilyData to which this Version belongs
|
|
886
897
|
Logger* info_log_;
|
|
887
898
|
Statistics* db_statistics_;
|
|
@@ -1213,7 +1224,7 @@ class VersionSet {
|
|
|
1213
1224
|
// new_log_number_for_empty_cf.
|
|
1214
1225
|
uint64_t PreComputeMinLogNumberWithUnflushedData(
|
|
1215
1226
|
uint64_t new_log_number_for_empty_cf) const {
|
|
1216
|
-
uint64_t min_log_num =
|
|
1227
|
+
uint64_t min_log_num = std::numeric_limits<uint64_t>::max();
|
|
1217
1228
|
for (auto cfd : *column_family_set_) {
|
|
1218
1229
|
// It's safe to ignore dropped column families here:
|
|
1219
1230
|
// cfd->IsDropped() becomes true after the drop is persisted in MANIFEST.
|
|
@@ -1229,7 +1240,7 @@ class VersionSet {
|
|
|
1229
1240
|
// file, except data from `cfd_to_skip`.
|
|
1230
1241
|
uint64_t PreComputeMinLogNumberWithUnflushedData(
|
|
1231
1242
|
const ColumnFamilyData* cfd_to_skip) const {
|
|
1232
|
-
uint64_t min_log_num =
|
|
1243
|
+
uint64_t min_log_num = std::numeric_limits<uint64_t>::max();
|
|
1233
1244
|
for (auto cfd : *column_family_set_) {
|
|
1234
1245
|
if (cfd == cfd_to_skip) {
|
|
1235
1246
|
continue;
|
|
@@ -1246,7 +1257,7 @@ class VersionSet {
|
|
|
1246
1257
|
// file, except data from `cfds_to_skip`.
|
|
1247
1258
|
uint64_t PreComputeMinLogNumberWithUnflushedData(
|
|
1248
1259
|
const std::unordered_set<const ColumnFamilyData*>& cfds_to_skip) const {
|
|
1249
|
-
uint64_t min_log_num =
|
|
1260
|
+
uint64_t min_log_num = std::numeric_limits<uint64_t>::max();
|
|
1250
1261
|
for (auto cfd : *column_family_set_) {
|
|
1251
1262
|
if (cfds_to_skip.count(cfd)) {
|
|
1252
1263
|
continue;
|