@nxtedition/rocksdb 6.0.0 → 6.0.3
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 +18 -0
- package/binding.cc +16 -17
- package/binding.gyp +2 -2
- 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 +47 -37
- package/package-lock.json +23687 -0
- package/package.json +2 -30
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -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/linux-arm64/node.napi.node +0 -0
|
@@ -534,15 +534,24 @@ TEST_P(PrefetchTest, PrefetchWhenReseek) {
|
|
|
534
534
|
* initially (2 more data blocks).
|
|
535
535
|
*/
|
|
536
536
|
iter->Seek(BuildKey(0));
|
|
537
|
+
ASSERT_TRUE(iter->Valid());
|
|
537
538
|
iter->Seek(BuildKey(1000));
|
|
539
|
+
ASSERT_TRUE(iter->Valid());
|
|
538
540
|
iter->Seek(BuildKey(1004)); // Prefetch Data
|
|
541
|
+
ASSERT_TRUE(iter->Valid());
|
|
539
542
|
iter->Seek(BuildKey(1008));
|
|
543
|
+
ASSERT_TRUE(iter->Valid());
|
|
540
544
|
iter->Seek(BuildKey(1011));
|
|
545
|
+
ASSERT_TRUE(iter->Valid());
|
|
541
546
|
iter->Seek(BuildKey(1015)); // Prefetch Data
|
|
547
|
+
ASSERT_TRUE(iter->Valid());
|
|
542
548
|
iter->Seek(BuildKey(1019));
|
|
549
|
+
ASSERT_TRUE(iter->Valid());
|
|
543
550
|
// Missed 2 blocks but they are already in buffer so no reset.
|
|
544
551
|
iter->Seek(BuildKey(103)); // Already in buffer.
|
|
552
|
+
ASSERT_TRUE(iter->Valid());
|
|
545
553
|
iter->Seek(BuildKey(1033)); // Prefetch Data
|
|
554
|
+
ASSERT_TRUE(iter->Valid());
|
|
546
555
|
if (support_prefetch && !use_direct_io) {
|
|
547
556
|
ASSERT_EQ(fs->GetPrefetchCount(), 3);
|
|
548
557
|
fs->ClearPrefetchCount();
|
|
@@ -558,10 +567,15 @@ TEST_P(PrefetchTest, PrefetchWhenReseek) {
|
|
|
558
567
|
*/
|
|
559
568
|
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ReadOptions()));
|
|
560
569
|
iter->Seek(BuildKey(0));
|
|
570
|
+
ASSERT_TRUE(iter->Valid());
|
|
561
571
|
iter->Seek(BuildKey(1008));
|
|
572
|
+
ASSERT_TRUE(iter->Valid());
|
|
562
573
|
iter->Seek(BuildKey(1019));
|
|
574
|
+
ASSERT_TRUE(iter->Valid());
|
|
563
575
|
iter->Seek(BuildKey(1033));
|
|
576
|
+
ASSERT_TRUE(iter->Valid());
|
|
564
577
|
iter->Seek(BuildKey(1048));
|
|
578
|
+
ASSERT_TRUE(iter->Valid());
|
|
565
579
|
if (support_prefetch && !use_direct_io) {
|
|
566
580
|
ASSERT_EQ(fs->GetPrefetchCount(), 0);
|
|
567
581
|
fs->ClearPrefetchCount();
|
|
@@ -576,9 +590,13 @@ TEST_P(PrefetchTest, PrefetchWhenReseek) {
|
|
|
576
590
|
*/
|
|
577
591
|
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ReadOptions()));
|
|
578
592
|
iter->Seek(BuildKey(0));
|
|
593
|
+
ASSERT_TRUE(iter->Valid());
|
|
579
594
|
iter->Seek(BuildKey(1));
|
|
595
|
+
ASSERT_TRUE(iter->Valid());
|
|
580
596
|
iter->Seek(BuildKey(10));
|
|
597
|
+
ASSERT_TRUE(iter->Valid());
|
|
581
598
|
iter->Seek(BuildKey(100));
|
|
599
|
+
ASSERT_TRUE(iter->Valid());
|
|
582
600
|
if (support_prefetch && !use_direct_io) {
|
|
583
601
|
ASSERT_EQ(fs->GetPrefetchCount(), 0);
|
|
584
602
|
fs->ClearPrefetchCount();
|
|
@@ -596,14 +614,21 @@ TEST_P(PrefetchTest, PrefetchWhenReseek) {
|
|
|
596
614
|
*/
|
|
597
615
|
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ReadOptions()));
|
|
598
616
|
iter->Seek(BuildKey(0));
|
|
617
|
+
ASSERT_TRUE(iter->Valid());
|
|
599
618
|
iter->Seek(BuildKey(1000));
|
|
619
|
+
ASSERT_TRUE(iter->Valid());
|
|
600
620
|
iter->Seek(BuildKey(1004)); // This iteration will prefetch buffer
|
|
621
|
+
ASSERT_TRUE(iter->Valid());
|
|
601
622
|
iter->Seek(BuildKey(1008));
|
|
623
|
+
ASSERT_TRUE(iter->Valid());
|
|
602
624
|
iter->Seek(
|
|
603
625
|
BuildKey(996)); // Reseek won't prefetch any data and
|
|
604
626
|
// readahead_size will be initiallized to 8*1024.
|
|
627
|
+
ASSERT_TRUE(iter->Valid());
|
|
605
628
|
iter->Seek(BuildKey(992));
|
|
629
|
+
ASSERT_TRUE(iter->Valid());
|
|
606
630
|
iter->Seek(BuildKey(989));
|
|
631
|
+
ASSERT_TRUE(iter->Valid());
|
|
607
632
|
if (support_prefetch && !use_direct_io) {
|
|
608
633
|
ASSERT_EQ(fs->GetPrefetchCount(), 1);
|
|
609
634
|
fs->ClearPrefetchCount();
|
|
@@ -615,11 +640,17 @@ TEST_P(PrefetchTest, PrefetchWhenReseek) {
|
|
|
615
640
|
// Read sequentially to confirm readahead_size is reset to initial value (2
|
|
616
641
|
// more data blocks)
|
|
617
642
|
iter->Seek(BuildKey(1011));
|
|
643
|
+
ASSERT_TRUE(iter->Valid());
|
|
618
644
|
iter->Seek(BuildKey(1015));
|
|
645
|
+
ASSERT_TRUE(iter->Valid());
|
|
619
646
|
iter->Seek(BuildKey(1019)); // Prefetch Data
|
|
647
|
+
ASSERT_TRUE(iter->Valid());
|
|
620
648
|
iter->Seek(BuildKey(1022));
|
|
649
|
+
ASSERT_TRUE(iter->Valid());
|
|
621
650
|
iter->Seek(BuildKey(1026));
|
|
651
|
+
ASSERT_TRUE(iter->Valid());
|
|
622
652
|
iter->Seek(BuildKey(103)); // Prefetch Data
|
|
653
|
+
ASSERT_TRUE(iter->Valid());
|
|
623
654
|
if (support_prefetch && !use_direct_io) {
|
|
624
655
|
ASSERT_EQ(fs->GetPrefetchCount(), 2);
|
|
625
656
|
fs->ClearPrefetchCount();
|
|
@@ -634,12 +665,19 @@ TEST_P(PrefetchTest, PrefetchWhenReseek) {
|
|
|
634
665
|
*/
|
|
635
666
|
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ReadOptions()));
|
|
636
667
|
iter->Seek(BuildKey(0));
|
|
668
|
+
ASSERT_TRUE(iter->Valid());
|
|
637
669
|
iter->Seek(BuildKey(1167));
|
|
670
|
+
ASSERT_TRUE(iter->Valid());
|
|
638
671
|
iter->Seek(BuildKey(1334)); // This iteration will prefetch buffer
|
|
672
|
+
ASSERT_TRUE(iter->Valid());
|
|
639
673
|
iter->Seek(BuildKey(1499));
|
|
674
|
+
ASSERT_TRUE(iter->Valid());
|
|
640
675
|
iter->Seek(BuildKey(1667));
|
|
676
|
+
ASSERT_TRUE(iter->Valid());
|
|
641
677
|
iter->Seek(BuildKey(1847));
|
|
678
|
+
ASSERT_TRUE(iter->Valid());
|
|
642
679
|
iter->Seek(BuildKey(1999));
|
|
680
|
+
ASSERT_TRUE(iter->Valid());
|
|
643
681
|
if (support_prefetch && !use_direct_io) {
|
|
644
682
|
ASSERT_EQ(fs->GetPrefetchCount(), 1);
|
|
645
683
|
fs->ClearPrefetchCount();
|
|
@@ -766,8 +804,11 @@ TEST_P(PrefetchTest, PrefetchWhenReseekwithCache) {
|
|
|
766
804
|
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ReadOptions()));
|
|
767
805
|
// Warm up the cache
|
|
768
806
|
iter->Seek(BuildKey(1011));
|
|
807
|
+
ASSERT_TRUE(iter->Valid());
|
|
769
808
|
iter->Seek(BuildKey(1015));
|
|
809
|
+
ASSERT_TRUE(iter->Valid());
|
|
770
810
|
iter->Seek(BuildKey(1019));
|
|
811
|
+
ASSERT_TRUE(iter->Valid());
|
|
771
812
|
if (support_prefetch && !use_direct_io) {
|
|
772
813
|
ASSERT_EQ(fs->GetPrefetchCount(), 1);
|
|
773
814
|
fs->ClearPrefetchCount();
|
|
@@ -780,20 +821,31 @@ TEST_P(PrefetchTest, PrefetchWhenReseekwithCache) {
|
|
|
780
821
|
// After caching, blocks will be read from cache (Sequential blocks)
|
|
781
822
|
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ReadOptions()));
|
|
782
823
|
iter->Seek(BuildKey(0));
|
|
824
|
+
ASSERT_TRUE(iter->Valid());
|
|
783
825
|
iter->Seek(BuildKey(1000));
|
|
826
|
+
ASSERT_TRUE(iter->Valid());
|
|
784
827
|
iter->Seek(BuildKey(1004)); // Prefetch data (not in cache).
|
|
828
|
+
ASSERT_TRUE(iter->Valid());
|
|
785
829
|
// Missed one sequential block but next is in already in buffer so readahead
|
|
786
830
|
// will not be reset.
|
|
787
831
|
iter->Seek(BuildKey(1011));
|
|
832
|
+
ASSERT_TRUE(iter->Valid());
|
|
788
833
|
// Prefetch data but blocks are in cache so no prefetch and reset.
|
|
789
834
|
iter->Seek(BuildKey(1015));
|
|
835
|
+
ASSERT_TRUE(iter->Valid());
|
|
790
836
|
iter->Seek(BuildKey(1019));
|
|
837
|
+
ASSERT_TRUE(iter->Valid());
|
|
791
838
|
iter->Seek(BuildKey(1022));
|
|
839
|
+
ASSERT_TRUE(iter->Valid());
|
|
792
840
|
// Prefetch data with readahead_size = 4 blocks.
|
|
793
841
|
iter->Seek(BuildKey(1026));
|
|
842
|
+
ASSERT_TRUE(iter->Valid());
|
|
794
843
|
iter->Seek(BuildKey(103));
|
|
844
|
+
ASSERT_TRUE(iter->Valid());
|
|
795
845
|
iter->Seek(BuildKey(1033));
|
|
846
|
+
ASSERT_TRUE(iter->Valid());
|
|
796
847
|
iter->Seek(BuildKey(1037));
|
|
848
|
+
ASSERT_TRUE(iter->Valid());
|
|
797
849
|
|
|
798
850
|
if (support_prefetch && !use_direct_io) {
|
|
799
851
|
ASSERT_EQ(fs->GetPrefetchCount(), 3);
|
|
@@ -881,7 +933,7 @@ TEST_P(PrefetchTest1, DBIterLevelReadAhead) {
|
|
|
881
933
|
[&](void*) { buff_prefetch_count++; });
|
|
882
934
|
|
|
883
935
|
SyncPoint::GetInstance()->SetCallBack(
|
|
884
|
-
"FilePrefetchBuffer::
|
|
936
|
+
"FilePrefetchBuffer::PrefetchAsyncInternal:Start",
|
|
885
937
|
[&](void*) { buff_async_prefetch_count++; });
|
|
886
938
|
|
|
887
939
|
// The callback checks, since reads are sequential, readahead_size doesn't
|
|
@@ -955,7 +1007,7 @@ class PrefetchTest2 : public DBTestBase,
|
|
|
955
1007
|
INSTANTIATE_TEST_CASE_P(PrefetchTest2, PrefetchTest2, ::testing::Bool());
|
|
956
1008
|
|
|
957
1009
|
#ifndef ROCKSDB_LITE
|
|
958
|
-
TEST_P(PrefetchTest2,
|
|
1010
|
+
TEST_P(PrefetchTest2, NonSequentialReadsWithAdaptiveReadahead) {
|
|
959
1011
|
const int kNumKeys = 1000;
|
|
960
1012
|
// Set options
|
|
961
1013
|
std::shared_ptr<MockFS> fs =
|
|
@@ -1002,9 +1054,8 @@ TEST_P(PrefetchTest2, NonSequentialReads) {
|
|
|
1002
1054
|
int set_readahead = 0;
|
|
1003
1055
|
size_t readahead_size = 0;
|
|
1004
1056
|
|
|
1005
|
-
SyncPoint::GetInstance()->SetCallBack(
|
|
1006
|
-
|
|
1007
|
-
[&](void*) { buff_prefetch_count++; });
|
|
1057
|
+
SyncPoint::GetInstance()->SetCallBack("FilePrefetchBuffer::Prefetch:Start",
|
|
1058
|
+
[&](void*) { buff_prefetch_count++; });
|
|
1008
1059
|
SyncPoint::GetInstance()->SetCallBack(
|
|
1009
1060
|
"BlockPrefetcher::SetReadaheadState",
|
|
1010
1061
|
[&](void* /*arg*/) { set_readahead++; });
|
|
@@ -1018,13 +1069,15 @@ TEST_P(PrefetchTest2, NonSequentialReads) {
|
|
|
1018
1069
|
// Iterate until prefetch is done.
|
|
1019
1070
|
ReadOptions ro;
|
|
1020
1071
|
ro.adaptive_readahead = true;
|
|
1021
|
-
// TODO akanksha: Remove after adding new units.
|
|
1022
|
-
ro.async_io = true;
|
|
1023
1072
|
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ro));
|
|
1073
|
+
|
|
1024
1074
|
iter->SeekToFirst();
|
|
1075
|
+
ASSERT_TRUE(iter->Valid());
|
|
1076
|
+
|
|
1025
1077
|
while (iter->Valid() && buff_prefetch_count == 0) {
|
|
1026
1078
|
iter->Next();
|
|
1027
1079
|
}
|
|
1080
|
+
|
|
1028
1081
|
ASSERT_EQ(readahead_size, 8 * 1024);
|
|
1029
1082
|
ASSERT_EQ(buff_prefetch_count, 1);
|
|
1030
1083
|
ASSERT_EQ(set_readahead, 0);
|
|
@@ -1033,9 +1086,12 @@ TEST_P(PrefetchTest2, NonSequentialReads) {
|
|
|
1033
1086
|
// Move to last file and check readahead size fallbacks to 8KB. So next
|
|
1034
1087
|
// readahead size after prefetch should be 8 * 1024;
|
|
1035
1088
|
iter->Seek(BuildKey(4004));
|
|
1089
|
+
ASSERT_TRUE(iter->Valid());
|
|
1090
|
+
|
|
1036
1091
|
while (iter->Valid() && buff_prefetch_count == 0) {
|
|
1037
1092
|
iter->Next();
|
|
1038
1093
|
}
|
|
1094
|
+
|
|
1039
1095
|
ASSERT_EQ(readahead_size, 8 * 1024);
|
|
1040
1096
|
ASSERT_EQ(set_readahead, 0);
|
|
1041
1097
|
ASSERT_EQ(buff_prefetch_count, 1);
|
|
@@ -1099,7 +1155,7 @@ TEST_P(PrefetchTest2, DecreaseReadAheadIfInCache) {
|
|
|
1099
1155
|
size_t decrease_readahead_size = 8 * 1024;
|
|
1100
1156
|
|
|
1101
1157
|
SyncPoint::GetInstance()->SetCallBack(
|
|
1102
|
-
"FilePrefetchBuffer::
|
|
1158
|
+
"FilePrefetchBuffer::PrefetchAsyncInternal:Start",
|
|
1103
1159
|
[&](void*) { buff_prefetch_count++; });
|
|
1104
1160
|
SyncPoint::GetInstance()->SetCallBack(
|
|
1105
1161
|
"FilePrefetchBuffer::TryReadFromCache", [&](void* arg) {
|
|
@@ -1120,8 +1176,11 @@ TEST_P(PrefetchTest2, DecreaseReadAheadIfInCache) {
|
|
|
1120
1176
|
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ro));
|
|
1121
1177
|
// Warm up the cache
|
|
1122
1178
|
iter->Seek(BuildKey(1011));
|
|
1179
|
+
ASSERT_TRUE(iter->Valid());
|
|
1123
1180
|
iter->Seek(BuildKey(1015));
|
|
1181
|
+
ASSERT_TRUE(iter->Valid());
|
|
1124
1182
|
iter->Seek(BuildKey(1019));
|
|
1183
|
+
ASSERT_TRUE(iter->Valid());
|
|
1125
1184
|
buff_prefetch_count = 0;
|
|
1126
1185
|
}
|
|
1127
1186
|
|
|
@@ -1129,26 +1188,39 @@ TEST_P(PrefetchTest2, DecreaseReadAheadIfInCache) {
|
|
|
1129
1188
|
ASSERT_OK(options.statistics->Reset());
|
|
1130
1189
|
// After caching, blocks will be read from cache (Sequential blocks)
|
|
1131
1190
|
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ro));
|
|
1132
|
-
iter->Seek(
|
|
1191
|
+
iter->Seek(
|
|
1192
|
+
BuildKey(0)); // In cache so it will decrease the readahead_size.
|
|
1133
1193
|
ASSERT_TRUE(iter->Valid());
|
|
1134
|
-
|
|
1194
|
+
expected_current_readahead_size = std::max(
|
|
1195
|
+
decrease_readahead_size,
|
|
1196
|
+
(expected_current_readahead_size >= decrease_readahead_size
|
|
1197
|
+
? (expected_current_readahead_size - decrease_readahead_size)
|
|
1198
|
+
: 0));
|
|
1199
|
+
|
|
1200
|
+
iter->Seek(BuildKey(1000)); // Prefetch the block.
|
|
1135
1201
|
ASSERT_TRUE(iter->Valid());
|
|
1136
|
-
|
|
1202
|
+
ASSERT_EQ(current_readahead_size, expected_current_readahead_size);
|
|
1203
|
+
expected_current_readahead_size *= 2;
|
|
1204
|
+
|
|
1205
|
+
iter->Seek(BuildKey(1004)); // Prefetch the block.
|
|
1137
1206
|
ASSERT_TRUE(iter->Valid());
|
|
1138
1207
|
ASSERT_EQ(current_readahead_size, expected_current_readahead_size);
|
|
1208
|
+
expected_current_readahead_size *= 2;
|
|
1139
1209
|
|
|
1140
|
-
//
|
|
1141
|
-
// readahead will not be reset.
|
|
1210
|
+
// 1011 is already in cache but won't reset??
|
|
1142
1211
|
iter->Seek(BuildKey(1011));
|
|
1143
1212
|
ASSERT_TRUE(iter->Valid());
|
|
1144
|
-
ASSERT_EQ(current_readahead_size, expected_current_readahead_size);
|
|
1145
1213
|
|
|
1146
1214
|
// Eligible to Prefetch data (not in buffer) but block is in cache so no
|
|
1147
1215
|
// prefetch will happen and will result in decrease in readahead_size.
|
|
1148
1216
|
// readahead_size will be 8 * 1024
|
|
1149
1217
|
iter->Seek(BuildKey(1015));
|
|
1150
1218
|
ASSERT_TRUE(iter->Valid());
|
|
1151
|
-
expected_current_readahead_size
|
|
1219
|
+
expected_current_readahead_size = std::max(
|
|
1220
|
+
decrease_readahead_size,
|
|
1221
|
+
(expected_current_readahead_size >= decrease_readahead_size
|
|
1222
|
+
? (expected_current_readahead_size - decrease_readahead_size)
|
|
1223
|
+
: 0));
|
|
1152
1224
|
|
|
1153
1225
|
// 1016 is the same block as 1015. So no change in readahead_size.
|
|
1154
1226
|
iter->Seek(BuildKey(1016));
|
|
@@ -1169,7 +1241,7 @@ TEST_P(PrefetchTest2, DecreaseReadAheadIfInCache) {
|
|
|
1169
1241
|
iter->Seek(BuildKey(1022));
|
|
1170
1242
|
ASSERT_TRUE(iter->Valid());
|
|
1171
1243
|
ASSERT_EQ(current_readahead_size, expected_current_readahead_size);
|
|
1172
|
-
ASSERT_EQ(buff_prefetch_count,
|
|
1244
|
+
ASSERT_EQ(buff_prefetch_count, 3);
|
|
1173
1245
|
|
|
1174
1246
|
// Check stats to make sure async prefetch is done.
|
|
1175
1247
|
{
|
|
@@ -1179,6 +1251,7 @@ TEST_P(PrefetchTest2, DecreaseReadAheadIfInCache) {
|
|
|
1179
1251
|
ASSERT_EQ(async_read_bytes.count, 0);
|
|
1180
1252
|
} else {
|
|
1181
1253
|
ASSERT_GT(async_read_bytes.count, 0);
|
|
1254
|
+
ASSERT_GT(get_perf_context()->number_async_seek, 0);
|
|
1182
1255
|
}
|
|
1183
1256
|
}
|
|
1184
1257
|
|
|
@@ -1264,7 +1337,7 @@ TEST_P(PrefetchTestWithPosix, ReadAsyncWithPosixFS) {
|
|
|
1264
1337
|
}
|
|
1265
1338
|
|
|
1266
1339
|
SyncPoint::GetInstance()->SetCallBack(
|
|
1267
|
-
"FilePrefetchBuffer::
|
|
1340
|
+
"FilePrefetchBuffer::PrefetchAsyncInternal:Start",
|
|
1268
1341
|
[&](void*) { buff_prefetch_count++; });
|
|
1269
1342
|
|
|
1270
1343
|
SyncPoint::GetInstance()->SetCallBack(
|
|
@@ -1275,12 +1348,15 @@ TEST_P(PrefetchTestWithPosix, ReadAsyncWithPosixFS) {
|
|
|
1275
1348
|
// Read the keys.
|
|
1276
1349
|
{
|
|
1277
1350
|
ASSERT_OK(options.statistics->Reset());
|
|
1351
|
+
get_perf_context()->Reset();
|
|
1352
|
+
|
|
1278
1353
|
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ro));
|
|
1279
1354
|
int num_keys = 0;
|
|
1280
1355
|
for (iter->SeekToFirst(); iter->Valid(); iter->Next()) {
|
|
1281
1356
|
ASSERT_OK(iter->status());
|
|
1282
1357
|
num_keys++;
|
|
1283
1358
|
}
|
|
1359
|
+
|
|
1284
1360
|
ASSERT_EQ(num_keys, total_keys);
|
|
1285
1361
|
ASSERT_GT(buff_prefetch_count, 0);
|
|
1286
1362
|
|
|
@@ -1301,6 +1377,55 @@ TEST_P(PrefetchTestWithPosix, ReadAsyncWithPosixFS) {
|
|
|
1301
1377
|
}
|
|
1302
1378
|
ASSERT_GT(prefetched_bytes_discarded.count, 0);
|
|
1303
1379
|
}
|
|
1380
|
+
ASSERT_EQ(get_perf_context()->number_async_seek, 0);
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
{
|
|
1384
|
+
// Read the keys using seek.
|
|
1385
|
+
{
|
|
1386
|
+
ASSERT_OK(options.statistics->Reset());
|
|
1387
|
+
get_perf_context()->Reset();
|
|
1388
|
+
|
|
1389
|
+
auto iter = std::unique_ptr<Iterator>(db_->NewIterator(ro));
|
|
1390
|
+
int num_keys = 0;
|
|
1391
|
+
iter->Seek(BuildKey(450));
|
|
1392
|
+
while (iter->Valid()) {
|
|
1393
|
+
ASSERT_OK(iter->status());
|
|
1394
|
+
num_keys++;
|
|
1395
|
+
iter->Next();
|
|
1396
|
+
}
|
|
1397
|
+
ASSERT_OK(iter->status());
|
|
1398
|
+
|
|
1399
|
+
iter->Seek(BuildKey(450));
|
|
1400
|
+
while (iter->Valid()) {
|
|
1401
|
+
ASSERT_OK(iter->status());
|
|
1402
|
+
num_keys++;
|
|
1403
|
+
iter->Prev();
|
|
1404
|
+
}
|
|
1405
|
+
|
|
1406
|
+
ASSERT_EQ(num_keys, total_keys + 1);
|
|
1407
|
+
ASSERT_GT(buff_prefetch_count, 0);
|
|
1408
|
+
|
|
1409
|
+
// Check stats to make sure async prefetch is done.
|
|
1410
|
+
{
|
|
1411
|
+
HistogramData async_read_bytes;
|
|
1412
|
+
options.statistics->histogramData(ASYNC_READ_BYTES, &async_read_bytes);
|
|
1413
|
+
HistogramData prefetched_bytes_discarded;
|
|
1414
|
+
options.statistics->histogramData(PREFETCHED_BYTES_DISCARDED,
|
|
1415
|
+
&prefetched_bytes_discarded);
|
|
1416
|
+
|
|
1417
|
+
// Not all platforms support iouring. In that case, ReadAsync in posix
|
|
1418
|
+
// won't submit async requests.
|
|
1419
|
+
if (read_async_called) {
|
|
1420
|
+
ASSERT_GT(async_read_bytes.count, 0);
|
|
1421
|
+
ASSERT_GT(get_perf_context()->number_async_seek, 0);
|
|
1422
|
+
} else {
|
|
1423
|
+
ASSERT_EQ(async_read_bytes.count, 0);
|
|
1424
|
+
ASSERT_EQ(get_perf_context()->number_async_seek, 0);
|
|
1425
|
+
}
|
|
1426
|
+
ASSERT_GT(prefetched_bytes_discarded.count, 0);
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1304
1429
|
}
|
|
1305
1430
|
|
|
1306
1431
|
SyncPoint::GetInstance()->DisableProcessing();
|
|
@@ -172,8 +172,11 @@ class RandomAccessFileReader {
|
|
|
172
172
|
size_t num_reqs, AlignedBuf* aligned_buf,
|
|
173
173
|
Env::IOPriority rate_limiter_priority) const;
|
|
174
174
|
|
|
175
|
-
IOStatus Prefetch(uint64_t offset, size_t n
|
|
176
|
-
|
|
175
|
+
IOStatus Prefetch(uint64_t offset, size_t n,
|
|
176
|
+
const Env::IOPriority rate_limiter_priority) const {
|
|
177
|
+
IOOptions opts;
|
|
178
|
+
opts.rate_limiter_priority = rate_limiter_priority;
|
|
179
|
+
return file_->Prefetch(offset, n, opts, nullptr);
|
|
177
180
|
}
|
|
178
181
|
|
|
179
182
|
FSRandomAccessFile* file() { return file_.get(); }
|
|
@@ -38,6 +38,13 @@ IOStatus SequentialFileReader::Read(size_t n, Slice* result, char* scratch) {
|
|
|
38
38
|
IOStatus io_s;
|
|
39
39
|
if (use_direct_io()) {
|
|
40
40
|
#ifndef ROCKSDB_LITE
|
|
41
|
+
//
|
|
42
|
+
// |-offset_advance-|---bytes returned--|
|
|
43
|
+
// |----------------------buf size-------------------------|
|
|
44
|
+
// | | | |
|
|
45
|
+
// aligned offset offset + n Roundup(offset + n,
|
|
46
|
+
// offset alignment)
|
|
47
|
+
//
|
|
41
48
|
size_t offset = offset_.fetch_add(n);
|
|
42
49
|
size_t alignment = file_->GetRequiredBufferAlignment();
|
|
43
50
|
size_t aligned_offset = TruncateToPageBoundary(alignment, offset);
|
|
@@ -54,10 +54,14 @@ IOStatus WritableFileWriter::Append(const Slice& data, uint32_t crc32c_checksum,
|
|
|
54
54
|
UpdateFileChecksum(data);
|
|
55
55
|
|
|
56
56
|
{
|
|
57
|
+
IOOptions io_options;
|
|
58
|
+
io_options.rate_limiter_priority =
|
|
59
|
+
WritableFileWriter::DecideRateLimiterPriority(
|
|
60
|
+
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
57
61
|
IOSTATS_TIMER_GUARD(prepare_write_nanos);
|
|
58
62
|
TEST_SYNC_POINT("WritableFileWriter::Append:BeforePrepareWrite");
|
|
59
63
|
writable_file_->PrepareWrite(static_cast<size_t>(GetFileSize()), left,
|
|
60
|
-
|
|
64
|
+
io_options, nullptr);
|
|
61
65
|
}
|
|
62
66
|
|
|
63
67
|
// See whether we need to enlarge the buffer to avoid the flush
|
|
@@ -211,6 +215,8 @@ IOStatus WritableFileWriter::Close() {
|
|
|
211
215
|
s = Flush(); // flush cache to OS
|
|
212
216
|
|
|
213
217
|
IOStatus interim;
|
|
218
|
+
IOOptions io_options;
|
|
219
|
+
io_options.rate_limiter_priority = writable_file_->GetIOPriority();
|
|
214
220
|
// In direct I/O mode we write whole pages so
|
|
215
221
|
// we need to let the file know where data ends.
|
|
216
222
|
if (use_direct_io()) {
|
|
@@ -221,7 +227,7 @@ IOStatus WritableFileWriter::Close() {
|
|
|
221
227
|
start_ts = FileOperationInfo::StartNow();
|
|
222
228
|
}
|
|
223
229
|
#endif
|
|
224
|
-
interim = writable_file_->Truncate(filesize_,
|
|
230
|
+
interim = writable_file_->Truncate(filesize_, io_options, nullptr);
|
|
225
231
|
#ifndef ROCKSDB_LITE
|
|
226
232
|
if (ShouldNotifyListeners()) {
|
|
227
233
|
auto finish_ts = FileOperationInfo::FinishNow();
|
|
@@ -241,7 +247,7 @@ IOStatus WritableFileWriter::Close() {
|
|
|
241
247
|
start_ts = FileOperationInfo::StartNow();
|
|
242
248
|
}
|
|
243
249
|
#endif
|
|
244
|
-
interim = writable_file_->Fsync(
|
|
250
|
+
interim = writable_file_->Fsync(io_options, nullptr);
|
|
245
251
|
#ifndef ROCKSDB_LITE
|
|
246
252
|
if (ShouldNotifyListeners()) {
|
|
247
253
|
auto finish_ts = FileOperationInfo::FinishNow();
|
|
@@ -267,7 +273,7 @@ IOStatus WritableFileWriter::Close() {
|
|
|
267
273
|
start_ts = FileOperationInfo::StartNow();
|
|
268
274
|
}
|
|
269
275
|
#endif
|
|
270
|
-
interim = writable_file_->Close(
|
|
276
|
+
interim = writable_file_->Close(io_options, nullptr);
|
|
271
277
|
#ifndef ROCKSDB_LITE
|
|
272
278
|
if (ShouldNotifyListeners()) {
|
|
273
279
|
auto finish_ts = FileOperationInfo::FinishNow();
|
|
@@ -331,7 +337,11 @@ IOStatus WritableFileWriter::Flush(Env::IOPriority op_rate_limiter_priority) {
|
|
|
331
337
|
start_ts = FileOperationInfo::StartNow();
|
|
332
338
|
}
|
|
333
339
|
#endif
|
|
334
|
-
|
|
340
|
+
IOOptions io_options;
|
|
341
|
+
io_options.rate_limiter_priority =
|
|
342
|
+
WritableFileWriter::DecideRateLimiterPriority(
|
|
343
|
+
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
344
|
+
s = writable_file_->Flush(io_options, nullptr);
|
|
335
345
|
#ifndef ROCKSDB_LITE
|
|
336
346
|
if (ShouldNotifyListeners()) {
|
|
337
347
|
auto finish_ts = std::chrono::steady_clock::now();
|
|
@@ -428,17 +438,22 @@ IOStatus WritableFileWriter::SyncInternal(bool use_fsync) {
|
|
|
428
438
|
IOSTATS_TIMER_GUARD(fsync_nanos);
|
|
429
439
|
TEST_SYNC_POINT("WritableFileWriter::SyncInternal:0");
|
|
430
440
|
auto prev_perf_level = GetPerfLevel();
|
|
441
|
+
|
|
431
442
|
IOSTATS_CPU_TIMER_GUARD(cpu_write_nanos, clock_);
|
|
443
|
+
|
|
432
444
|
#ifndef ROCKSDB_LITE
|
|
433
445
|
FileOperationInfo::StartTimePoint start_ts;
|
|
434
446
|
if (ShouldNotifyListeners()) {
|
|
435
447
|
start_ts = FileOperationInfo::StartNow();
|
|
436
448
|
}
|
|
437
449
|
#endif
|
|
450
|
+
|
|
451
|
+
IOOptions io_options;
|
|
452
|
+
io_options.rate_limiter_priority = writable_file_->GetIOPriority();
|
|
438
453
|
if (use_fsync) {
|
|
439
|
-
s = writable_file_->Fsync(
|
|
454
|
+
s = writable_file_->Fsync(io_options, nullptr);
|
|
440
455
|
} else {
|
|
441
|
-
s = writable_file_->Sync(
|
|
456
|
+
s = writable_file_->Sync(io_options, nullptr);
|
|
442
457
|
}
|
|
443
458
|
#ifndef ROCKSDB_LITE
|
|
444
459
|
if (ShouldNotifyListeners()) {
|
|
@@ -466,7 +481,9 @@ IOStatus WritableFileWriter::RangeSync(uint64_t offset, uint64_t nbytes) {
|
|
|
466
481
|
start_ts = FileOperationInfo::StartNow();
|
|
467
482
|
}
|
|
468
483
|
#endif
|
|
469
|
-
|
|
484
|
+
IOOptions io_options;
|
|
485
|
+
io_options.rate_limiter_priority = writable_file_->GetIOPriority();
|
|
486
|
+
IOStatus s = writable_file_->RangeSync(offset, nbytes, io_options, nullptr);
|
|
470
487
|
#ifndef ROCKSDB_LITE
|
|
471
488
|
if (ShouldNotifyListeners()) {
|
|
472
489
|
auto finish_ts = std::chrono::steady_clock::now();
|
|
@@ -490,19 +507,19 @@ IOStatus WritableFileWriter::WriteBuffered(
|
|
|
490
507
|
size_t left = size;
|
|
491
508
|
DataVerificationInfo v_info;
|
|
492
509
|
char checksum_buf[sizeof(uint32_t)];
|
|
510
|
+
Env::IOPriority rate_limiter_priority_used =
|
|
511
|
+
WritableFileWriter::DecideRateLimiterPriority(
|
|
512
|
+
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
513
|
+
IOOptions io_options;
|
|
514
|
+
io_options.rate_limiter_priority = rate_limiter_priority_used;
|
|
493
515
|
|
|
494
516
|
while (left > 0) {
|
|
495
|
-
size_t allowed;
|
|
496
|
-
Env::IOPriority rate_limiter_priority_used =
|
|
497
|
-
WritableFileWriter::DecideRateLimiterPriority(
|
|
498
|
-
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
517
|
+
size_t allowed = left;
|
|
499
518
|
if (rate_limiter_ != nullptr &&
|
|
500
519
|
rate_limiter_priority_used != Env::IO_TOTAL) {
|
|
501
520
|
allowed = rate_limiter_->RequestToken(left, 0 /* alignment */,
|
|
502
521
|
rate_limiter_priority_used, stats_,
|
|
503
522
|
RateLimiter::OpType::kWrite);
|
|
504
|
-
} else {
|
|
505
|
-
allowed = left;
|
|
506
523
|
}
|
|
507
524
|
|
|
508
525
|
{
|
|
@@ -511,7 +528,7 @@ IOStatus WritableFileWriter::WriteBuffered(
|
|
|
511
528
|
|
|
512
529
|
#ifndef ROCKSDB_LITE
|
|
513
530
|
FileOperationInfo::StartTimePoint start_ts;
|
|
514
|
-
uint64_t old_size = writable_file_->GetFileSize(
|
|
531
|
+
uint64_t old_size = writable_file_->GetFileSize(io_options, nullptr);
|
|
515
532
|
if (ShouldNotifyListeners()) {
|
|
516
533
|
start_ts = FileOperationInfo::StartNow();
|
|
517
534
|
old_size = next_write_offset_;
|
|
@@ -524,10 +541,10 @@ IOStatus WritableFileWriter::WriteBuffered(
|
|
|
524
541
|
if (perform_data_verification_) {
|
|
525
542
|
Crc32cHandoffChecksumCalculation(src, allowed, checksum_buf);
|
|
526
543
|
v_info.checksum = Slice(checksum_buf, sizeof(uint32_t));
|
|
527
|
-
s = writable_file_->Append(Slice(src, allowed),
|
|
544
|
+
s = writable_file_->Append(Slice(src, allowed), io_options, v_info,
|
|
528
545
|
nullptr);
|
|
529
546
|
} else {
|
|
530
|
-
s = writable_file_->Append(Slice(src, allowed),
|
|
547
|
+
s = writable_file_->Append(Slice(src, allowed), io_options, nullptr);
|
|
531
548
|
}
|
|
532
549
|
if (!s.ok()) {
|
|
533
550
|
// If writable_file_->Append() failed, then the data may or may not
|
|
@@ -579,15 +596,16 @@ IOStatus WritableFileWriter::WriteBufferedWithChecksum(
|
|
|
579
596
|
size_t left = size;
|
|
580
597
|
DataVerificationInfo v_info;
|
|
581
598
|
char checksum_buf[sizeof(uint32_t)];
|
|
582
|
-
|
|
599
|
+
Env::IOPriority rate_limiter_priority_used =
|
|
600
|
+
WritableFileWriter::DecideRateLimiterPriority(
|
|
601
|
+
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
602
|
+
IOOptions io_options;
|
|
603
|
+
io_options.rate_limiter_priority = rate_limiter_priority_used;
|
|
583
604
|
// Check how much is allowed. Here, we loop until the rate limiter allows to
|
|
584
605
|
// write the entire buffer.
|
|
585
606
|
// TODO: need to be improved since it sort of defeats the purpose of the rate
|
|
586
607
|
// limiter
|
|
587
608
|
size_t data_size = left;
|
|
588
|
-
Env::IOPriority rate_limiter_priority_used =
|
|
589
|
-
WritableFileWriter::DecideRateLimiterPriority(
|
|
590
|
-
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
591
609
|
if (rate_limiter_ != nullptr && rate_limiter_priority_used != Env::IO_TOTAL) {
|
|
592
610
|
while (data_size > 0) {
|
|
593
611
|
size_t tmp_size;
|
|
@@ -604,7 +622,7 @@ IOStatus WritableFileWriter::WriteBufferedWithChecksum(
|
|
|
604
622
|
|
|
605
623
|
#ifndef ROCKSDB_LITE
|
|
606
624
|
FileOperationInfo::StartTimePoint start_ts;
|
|
607
|
-
uint64_t old_size = writable_file_->GetFileSize(
|
|
625
|
+
uint64_t old_size = writable_file_->GetFileSize(io_options, nullptr);
|
|
608
626
|
if (ShouldNotifyListeners()) {
|
|
609
627
|
start_ts = FileOperationInfo::StartNow();
|
|
610
628
|
old_size = next_write_offset_;
|
|
@@ -617,8 +635,7 @@ IOStatus WritableFileWriter::WriteBufferedWithChecksum(
|
|
|
617
635
|
|
|
618
636
|
EncodeFixed32(checksum_buf, buffered_data_crc32c_checksum_);
|
|
619
637
|
v_info.checksum = Slice(checksum_buf, sizeof(uint32_t));
|
|
620
|
-
s = writable_file_->Append(Slice(src, left),
|
|
621
|
-
nullptr);
|
|
638
|
+
s = writable_file_->Append(Slice(src, left), io_options, v_info, nullptr);
|
|
622
639
|
SetPerfLevel(prev_perf_level);
|
|
623
640
|
}
|
|
624
641
|
#ifndef ROCKSDB_LITE
|
|
@@ -709,20 +726,20 @@ IOStatus WritableFileWriter::WriteDirect(
|
|
|
709
726
|
size_t left = buf_.CurrentSize();
|
|
710
727
|
DataVerificationInfo v_info;
|
|
711
728
|
char checksum_buf[sizeof(uint32_t)];
|
|
729
|
+
Env::IOPriority rate_limiter_priority_used =
|
|
730
|
+
WritableFileWriter::DecideRateLimiterPriority(
|
|
731
|
+
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
732
|
+
IOOptions io_options;
|
|
733
|
+
io_options.rate_limiter_priority = rate_limiter_priority_used;
|
|
712
734
|
|
|
713
735
|
while (left > 0) {
|
|
714
736
|
// Check how much is allowed
|
|
715
|
-
size_t size;
|
|
716
|
-
Env::IOPriority rate_limiter_priority_used =
|
|
717
|
-
WritableFileWriter::DecideRateLimiterPriority(
|
|
718
|
-
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
737
|
+
size_t size = left;
|
|
719
738
|
if (rate_limiter_ != nullptr &&
|
|
720
739
|
rate_limiter_priority_used != Env::IO_TOTAL) {
|
|
721
740
|
size = rate_limiter_->RequestToken(left, buf_.Alignment(),
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
} else {
|
|
725
|
-
size = left;
|
|
741
|
+
rate_limiter_priority_used, stats_,
|
|
742
|
+
RateLimiter::OpType::kWrite);
|
|
726
743
|
}
|
|
727
744
|
|
|
728
745
|
{
|
|
@@ -737,10 +754,10 @@ IOStatus WritableFileWriter::WriteDirect(
|
|
|
737
754
|
Crc32cHandoffChecksumCalculation(src, size, checksum_buf);
|
|
738
755
|
v_info.checksum = Slice(checksum_buf, sizeof(uint32_t));
|
|
739
756
|
s = writable_file_->PositionedAppend(Slice(src, size), write_offset,
|
|
740
|
-
|
|
757
|
+
io_options, v_info, nullptr);
|
|
741
758
|
} else {
|
|
742
759
|
s = writable_file_->PositionedAppend(Slice(src, size), write_offset,
|
|
743
|
-
|
|
760
|
+
io_options, nullptr);
|
|
744
761
|
}
|
|
745
762
|
|
|
746
763
|
if (ShouldNotifyListeners()) {
|
|
@@ -810,20 +827,22 @@ IOStatus WritableFileWriter::WriteDirectWithChecksum(
|
|
|
810
827
|
DataVerificationInfo v_info;
|
|
811
828
|
char checksum_buf[sizeof(uint32_t)];
|
|
812
829
|
|
|
830
|
+
Env::IOPriority rate_limiter_priority_used =
|
|
831
|
+
WritableFileWriter::DecideRateLimiterPriority(
|
|
832
|
+
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
833
|
+
IOOptions io_options;
|
|
834
|
+
io_options.rate_limiter_priority = rate_limiter_priority_used;
|
|
813
835
|
// Check how much is allowed. Here, we loop until the rate limiter allows to
|
|
814
836
|
// write the entire buffer.
|
|
815
837
|
// TODO: need to be improved since it sort of defeats the purpose of the rate
|
|
816
838
|
// limiter
|
|
817
839
|
size_t data_size = left;
|
|
818
|
-
Env::IOPriority rate_limiter_priority_used =
|
|
819
|
-
WritableFileWriter::DecideRateLimiterPriority(
|
|
820
|
-
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
821
840
|
if (rate_limiter_ != nullptr && rate_limiter_priority_used != Env::IO_TOTAL) {
|
|
822
841
|
while (data_size > 0) {
|
|
823
842
|
size_t size;
|
|
824
843
|
size = rate_limiter_->RequestToken(data_size, buf_.Alignment(),
|
|
825
|
-
|
|
826
|
-
|
|
844
|
+
rate_limiter_priority_used, stats_,
|
|
845
|
+
RateLimiter::OpType::kWrite);
|
|
827
846
|
data_size -= size;
|
|
828
847
|
}
|
|
829
848
|
}
|
|
@@ -839,7 +858,7 @@ IOStatus WritableFileWriter::WriteDirectWithChecksum(
|
|
|
839
858
|
EncodeFixed32(checksum_buf, buffered_data_crc32c_checksum_);
|
|
840
859
|
v_info.checksum = Slice(checksum_buf, sizeof(uint32_t));
|
|
841
860
|
s = writable_file_->PositionedAppend(Slice(src, left), write_offset,
|
|
842
|
-
|
|
861
|
+
io_options, v_info, nullptr);
|
|
843
862
|
|
|
844
863
|
if (ShouldNotifyListeners()) {
|
|
845
864
|
auto finish_ts = std::chrono::steady_clock::now();
|
|
@@ -894,4 +913,5 @@ Env::IOPriority WritableFileWriter::DecideRateLimiterPriority(
|
|
|
894
913
|
return op_rate_limiter_priority;
|
|
895
914
|
}
|
|
896
915
|
}
|
|
916
|
+
|
|
897
917
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -277,6 +277,7 @@ class WritableFileWriter {
|
|
|
277
277
|
const char* GetFileChecksumFuncName() const;
|
|
278
278
|
|
|
279
279
|
private:
|
|
280
|
+
// Decide the Rate Limiter priority.
|
|
280
281
|
static Env::IOPriority DecideRateLimiterPriority(
|
|
281
282
|
Env::IOPriority writable_file_io_priority,
|
|
282
283
|
Env::IOPriority op_rate_limiter_priority);
|