@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
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
#include "util/coding.h"
|
|
49
49
|
#include "util/crc32c.h"
|
|
50
50
|
#include "util/math.h"
|
|
51
|
+
#include "util/rate_limiter.h"
|
|
51
52
|
#include "util/string_util.h"
|
|
52
53
|
#include "utilities/backup/backup_engine_impl.h"
|
|
53
54
|
#include "utilities/checkpoint/checkpoint_impl.h"
|
|
@@ -181,6 +182,61 @@ class BackupEngineImpl {
|
|
|
181
182
|
BackupEngineOptions::kMaskNamingFlags;
|
|
182
183
|
}
|
|
183
184
|
|
|
185
|
+
void TEST_SetDefaultRateLimitersClock(
|
|
186
|
+
const std::shared_ptr<SystemClock>& backup_rate_limiter_clock,
|
|
187
|
+
const std::shared_ptr<SystemClock>& restore_rate_limiter_clock) {
|
|
188
|
+
if (backup_rate_limiter_clock) {
|
|
189
|
+
assert(options_.backup_rate_limiter->IsInstanceOf(
|
|
190
|
+
GenericRateLimiter::kClassName()));
|
|
191
|
+
auto* backup_rate_limiter_options =
|
|
192
|
+
options_.backup_rate_limiter
|
|
193
|
+
->GetOptions<GenericRateLimiter::GenericRateLimiterOptions>();
|
|
194
|
+
|
|
195
|
+
assert(backup_rate_limiter_options);
|
|
196
|
+
RateLimiter::Mode backup_rate_limiter_mode;
|
|
197
|
+
if (!options_.backup_rate_limiter->IsRateLimited(
|
|
198
|
+
RateLimiter::OpType::kRead)) {
|
|
199
|
+
backup_rate_limiter_mode = RateLimiter::Mode::kWritesOnly;
|
|
200
|
+
} else if (!options_.backup_rate_limiter->IsRateLimited(
|
|
201
|
+
RateLimiter::OpType::kWrite)) {
|
|
202
|
+
backup_rate_limiter_mode = RateLimiter::Mode::kReadsOnly;
|
|
203
|
+
} else {
|
|
204
|
+
backup_rate_limiter_mode = RateLimiter::Mode::kAllIo;
|
|
205
|
+
}
|
|
206
|
+
options_.backup_rate_limiter.reset(new GenericRateLimiter(
|
|
207
|
+
backup_rate_limiter_options->max_bytes_per_sec,
|
|
208
|
+
backup_rate_limiter_options->refill_period_us,
|
|
209
|
+
backup_rate_limiter_options->fairness, backup_rate_limiter_mode,
|
|
210
|
+
backup_rate_limiter_clock, backup_rate_limiter_options->auto_tuned));
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (restore_rate_limiter_clock) {
|
|
214
|
+
assert(options_.restore_rate_limiter->IsInstanceOf(
|
|
215
|
+
GenericRateLimiter::kClassName()));
|
|
216
|
+
auto* restore_rate_limiter_options =
|
|
217
|
+
options_.restore_rate_limiter
|
|
218
|
+
->GetOptions<GenericRateLimiter::GenericRateLimiterOptions>();
|
|
219
|
+
assert(restore_rate_limiter_options);
|
|
220
|
+
|
|
221
|
+
RateLimiter::Mode restore_rate_limiter_mode;
|
|
222
|
+
if (!options_.restore_rate_limiter->IsRateLimited(
|
|
223
|
+
RateLimiter::OpType::kRead)) {
|
|
224
|
+
restore_rate_limiter_mode = RateLimiter::Mode::kWritesOnly;
|
|
225
|
+
} else if (!options_.restore_rate_limiter->IsRateLimited(
|
|
226
|
+
RateLimiter::OpType::kWrite)) {
|
|
227
|
+
restore_rate_limiter_mode = RateLimiter::Mode::kReadsOnly;
|
|
228
|
+
} else {
|
|
229
|
+
restore_rate_limiter_mode = RateLimiter::Mode::kAllIo;
|
|
230
|
+
}
|
|
231
|
+
options_.restore_rate_limiter.reset(new GenericRateLimiter(
|
|
232
|
+
restore_rate_limiter_options->max_bytes_per_sec,
|
|
233
|
+
restore_rate_limiter_options->refill_period_us,
|
|
234
|
+
restore_rate_limiter_options->fairness, restore_rate_limiter_mode,
|
|
235
|
+
restore_rate_limiter_clock,
|
|
236
|
+
restore_rate_limiter_options->auto_tuned));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
184
240
|
private:
|
|
185
241
|
void DeleteChildren(const std::string& dir,
|
|
186
242
|
uint32_t file_type_filter = 0) const;
|
|
@@ -496,8 +552,8 @@ class BackupEngineImpl {
|
|
|
496
552
|
bool tmp = false,
|
|
497
553
|
const std::string& file = "") const {
|
|
498
554
|
assert(file.size() == 0 || file[0] != '/');
|
|
499
|
-
return kPrivateDirSlash +
|
|
500
|
-
|
|
555
|
+
return kPrivateDirSlash + std::to_string(backup_id) + (tmp ? ".tmp" : "") +
|
|
556
|
+
"/" + file;
|
|
501
557
|
}
|
|
502
558
|
inline std::string GetSharedFileRel(const std::string& file = "",
|
|
503
559
|
bool tmp = false) const {
|
|
@@ -524,13 +580,13 @@ class BackupEngineImpl {
|
|
|
524
580
|
if (UseLegacyNaming(db_session_id)) {
|
|
525
581
|
assert(!checksum_hex.empty());
|
|
526
582
|
file_copy.insert(file_copy.find_last_of('.'),
|
|
527
|
-
"_" +
|
|
528
|
-
|
|
583
|
+
"_" + std::to_string(ChecksumHexToInt32(checksum_hex)) +
|
|
584
|
+
"_" + std::to_string(file_size));
|
|
529
585
|
} else {
|
|
530
586
|
file_copy.insert(file_copy.find_last_of('.'), "_s" + db_session_id);
|
|
531
587
|
if (GetNamingFlags() & BackupEngineOptions::kFlagIncludeFileSize) {
|
|
532
588
|
file_copy.insert(file_copy.find_last_of('.'),
|
|
533
|
-
"_" +
|
|
589
|
+
"_" + std::to_string(file_size));
|
|
534
590
|
}
|
|
535
591
|
}
|
|
536
592
|
return file_copy;
|
|
@@ -544,7 +600,7 @@ class BackupEngineImpl {
|
|
|
544
600
|
}
|
|
545
601
|
inline std::string GetBackupMetaFile(BackupID backup_id, bool tmp) const {
|
|
546
602
|
return GetAbsolutePath(kMetaDirName) + "/" + (tmp ? "." : "") +
|
|
547
|
-
|
|
603
|
+
std::to_string(backup_id) + (tmp ? ".tmp" : "");
|
|
548
604
|
}
|
|
549
605
|
|
|
550
606
|
// If size_limit == 0, there is no size limit, copy everything.
|
|
@@ -942,6 +998,15 @@ class BackupEngineImplThreadSafe : public BackupEngine,
|
|
|
942
998
|
impl_.schema_test_options_.reset(new TEST_BackupMetaSchemaOptions(options));
|
|
943
999
|
}
|
|
944
1000
|
|
|
1001
|
+
// Not public API but used in testing
|
|
1002
|
+
void TEST_SetDefaultRateLimitersClock(
|
|
1003
|
+
const std::shared_ptr<SystemClock>& backup_rate_limiter_clock = nullptr,
|
|
1004
|
+
const std::shared_ptr<SystemClock>& restore_rate_limiter_clock =
|
|
1005
|
+
nullptr) {
|
|
1006
|
+
impl_.TEST_SetDefaultRateLimitersClock(backup_rate_limiter_clock,
|
|
1007
|
+
restore_rate_limiter_clock);
|
|
1008
|
+
}
|
|
1009
|
+
|
|
945
1010
|
private:
|
|
946
1011
|
mutable port::RWMutex mutex_;
|
|
947
1012
|
BackupEngineImpl impl_;
|
|
@@ -1012,8 +1077,9 @@ IOStatus BackupEngineImpl::Initialize() {
|
|
|
1012
1077
|
// we might need to clean up from previous crash or I/O errors
|
|
1013
1078
|
might_need_garbage_collect_ = true;
|
|
1014
1079
|
|
|
1015
|
-
if (options_.max_valid_backups_to_open !=
|
|
1016
|
-
|
|
1080
|
+
if (options_.max_valid_backups_to_open !=
|
|
1081
|
+
std::numeric_limits<int32_t>::max()) {
|
|
1082
|
+
options_.max_valid_backups_to_open = std::numeric_limits<int32_t>::max();
|
|
1017
1083
|
ROCKS_LOG_WARN(
|
|
1018
1084
|
options_.info_log,
|
|
1019
1085
|
"`max_valid_backups_to_open` is not set to the default value. Ignoring "
|
|
@@ -1066,7 +1132,7 @@ IOStatus BackupEngineImpl::Initialize() {
|
|
|
1066
1132
|
ROCKS_LOG_INFO(options_.info_log, "Detected backup %s", file.c_str());
|
|
1067
1133
|
BackupID backup_id = 0;
|
|
1068
1134
|
sscanf(file.c_str(), "%u", &backup_id);
|
|
1069
|
-
if (backup_id == 0 || file !=
|
|
1135
|
+
if (backup_id == 0 || file != std::to_string(backup_id)) {
|
|
1070
1136
|
// Invalid file name, will be deleted with auto-GC when user
|
|
1071
1137
|
// initiates an append or write operation. (Behave as read-only until
|
|
1072
1138
|
// then.)
|
|
@@ -1434,7 +1500,8 @@ IOStatus BackupEngineImpl::CreateNewBackupWithMetadata(
|
|
|
1434
1500
|
contents.size(), db_options.statistics.get(), 0 /* size_limit */,
|
|
1435
1501
|
false /* shared_checksum */, options.progress_callback, contents);
|
|
1436
1502
|
} /* create_file_cb */,
|
|
1437
|
-
&sequence_number,
|
|
1503
|
+
&sequence_number,
|
|
1504
|
+
options.flush_before_backup ? 0 : std::numeric_limits<uint64_t>::max(),
|
|
1438
1505
|
compare_checksum));
|
|
1439
1506
|
if (io_s.ok()) {
|
|
1440
1507
|
new_backup->SetSequenceNumber(sequence_number);
|
|
@@ -1664,8 +1731,8 @@ void BackupEngineImpl::SetBackupInfoFromBackupMeta(
|
|
|
1664
1731
|
bool include_file_details) const {
|
|
1665
1732
|
*backup_info = BackupInfo(id, meta.GetTimestamp(), meta.GetSize(),
|
|
1666
1733
|
meta.GetNumberFiles(), meta.GetAppMetadata());
|
|
1667
|
-
std::string dir =
|
|
1668
|
-
|
|
1734
|
+
std::string dir =
|
|
1735
|
+
options_.backup_dir + "/" + kPrivateDirSlash + std::to_string(id);
|
|
1669
1736
|
if (include_file_details) {
|
|
1670
1737
|
auto& file_details = backup_info->file_details;
|
|
1671
1738
|
file_details.reserve(meta.GetFiles().size());
|
|
@@ -1960,9 +2027,9 @@ IOStatus BackupEngineImpl::VerifyBackup(BackupID backup_id,
|
|
|
1960
2027
|
// verify file size
|
|
1961
2028
|
if (file_info->size != curr_abs_path_to_size[abs_path]) {
|
|
1962
2029
|
std::string size_info("Expected file size is " +
|
|
1963
|
-
|
|
2030
|
+
std::to_string(file_info->size) +
|
|
1964
2031
|
" while found file size is " +
|
|
1965
|
-
|
|
2032
|
+
std::to_string(curr_abs_path_to_size[abs_path]));
|
|
1966
2033
|
return IOStatus::Corruption("File corrupted: File size mismatch for " +
|
|
1967
2034
|
abs_path + ": " + size_info);
|
|
1968
2035
|
}
|
|
@@ -2171,7 +2238,7 @@ IOStatus BackupEngineImpl::AddBackupFileWorkItem(
|
|
|
2171
2238
|
return io_s;
|
|
2172
2239
|
}
|
|
2173
2240
|
}
|
|
2174
|
-
if (size_bytes ==
|
|
2241
|
+
if (size_bytes == std::numeric_limits<uint64_t>::max()) {
|
|
2175
2242
|
return IOStatus::NotFound("File missing: " + src_path);
|
|
2176
2243
|
}
|
|
2177
2244
|
// dst_relative depends on the following conditions:
|
|
@@ -2643,8 +2710,8 @@ IOStatus BackupEngineImpl::BackupMeta::AddFile(
|
|
|
2643
2710
|
if (itr->second->size != file_info->size) {
|
|
2644
2711
|
std::string msg = "Size mismatch for existing backup file: ";
|
|
2645
2712
|
msg.append(file_info->filename);
|
|
2646
|
-
msg.append(" Size in backup is " +
|
|
2647
|
-
" while size in DB is " +
|
|
2713
|
+
msg.append(" Size in backup is " + std::to_string(itr->second->size) +
|
|
2714
|
+
" while size in DB is " + std::to_string(file_info->size));
|
|
2648
2715
|
msg.append(
|
|
2649
2716
|
" If this DB file checks as not corrupt, try deleting old"
|
|
2650
2717
|
" backups or backing up to a different backup directory.");
|
|
@@ -2937,7 +3004,7 @@ IOStatus BackupEngineImpl::BackupMeta::LoadFromFile(
|
|
|
2937
3004
|
if (field_name == kFileCrc32cFieldName) {
|
|
2938
3005
|
uint32_t checksum_value =
|
|
2939
3006
|
static_cast<uint32_t>(strtoul(field_data.c_str(), nullptr, 10));
|
|
2940
|
-
if (field_data !=
|
|
3007
|
+
if (field_data != std::to_string(checksum_value)) {
|
|
2941
3008
|
return IOStatus::Corruption("Invalid checksum value for " + filename +
|
|
2942
3009
|
" in " + meta_filename_);
|
|
2943
3010
|
}
|
|
@@ -2947,8 +3014,9 @@ IOStatus BackupEngineImpl::BackupMeta::LoadFromFile(
|
|
|
2947
3014
|
std::strtoull(field_data.c_str(), nullptr, /*base*/ 10);
|
|
2948
3015
|
if (ex_size != actual_size) {
|
|
2949
3016
|
return IOStatus::Corruption(
|
|
2950
|
-
"For file " + filename + " expected size " +
|
|
2951
|
-
" but found size" +
|
|
3017
|
+
"For file " + filename + " expected size " +
|
|
3018
|
+
std::to_string(ex_size) + " but found size" +
|
|
3019
|
+
std::to_string(actual_size));
|
|
2952
3020
|
}
|
|
2953
3021
|
} else if (field_name == kTemperatureFieldName) {
|
|
2954
3022
|
auto iter = temperature_string_map.find(field_data);
|
|
@@ -3046,7 +3114,7 @@ IOStatus BackupEngineImpl::BackupMeta::StoreToFile(
|
|
|
3046
3114
|
if (schema_version > static_cast<int>(minor_version_strings.size() - 1)) {
|
|
3047
3115
|
return IOStatus::NotSupported(
|
|
3048
3116
|
"Only BackupEngineOptions::schema_version <= " +
|
|
3049
|
-
|
|
3117
|
+
std::to_string(minor_version_strings.size() - 1) + " is supported");
|
|
3050
3118
|
}
|
|
3051
3119
|
std::string ver = minor_version_strings[schema_version];
|
|
3052
3120
|
|
|
@@ -3101,7 +3169,7 @@ IOStatus BackupEngineImpl::BackupMeta::StoreToFile(
|
|
|
3101
3169
|
<< temperature_to_string[file->temp];
|
|
3102
3170
|
}
|
|
3103
3171
|
if (schema_test_options && schema_test_options->file_sizes) {
|
|
3104
|
-
buf << " " << kFileSizeFieldName << " " <<
|
|
3172
|
+
buf << " " << kFileSizeFieldName << " " << std::to_string(file->size);
|
|
3105
3173
|
}
|
|
3106
3174
|
if (schema_test_options) {
|
|
3107
3175
|
for (auto& e : schema_test_options->file_fields) {
|
|
@@ -3159,6 +3227,15 @@ void TEST_SetBackupMetaSchemaOptions(
|
|
|
3159
3227
|
impl->TEST_SetBackupMetaSchemaOptions(options);
|
|
3160
3228
|
}
|
|
3161
3229
|
|
|
3230
|
+
void TEST_SetDefaultRateLimitersClock(
|
|
3231
|
+
BackupEngine* engine,
|
|
3232
|
+
const std::shared_ptr<SystemClock>& backup_rate_limiter_clock,
|
|
3233
|
+
const std::shared_ptr<SystemClock>& restore_rate_limiter_clock) {
|
|
3234
|
+
BackupEngineImplThreadSafe* impl =
|
|
3235
|
+
static_cast_with_check<BackupEngineImplThreadSafe>(engine);
|
|
3236
|
+
impl->TEST_SetDefaultRateLimitersClock(backup_rate_limiter_clock,
|
|
3237
|
+
restore_rate_limiter_clock);
|
|
3238
|
+
}
|
|
3162
3239
|
} // namespace ROCKSDB_NAMESPACE
|
|
3163
3240
|
|
|
3164
3241
|
#endif // ROCKSDB_LITE
|
|
@@ -25,5 +25,12 @@ struct TEST_BackupMetaSchemaOptions {
|
|
|
25
25
|
void TEST_SetBackupMetaSchemaOptions(
|
|
26
26
|
BackupEngine *engine, const TEST_BackupMetaSchemaOptions &options);
|
|
27
27
|
|
|
28
|
+
// Modifies the BackupEngine(Impl) to use specified clocks for backup and
|
|
29
|
+
// restore rate limiters created by default if not specified by users for
|
|
30
|
+
// test speedup.
|
|
31
|
+
void TEST_SetDefaultRateLimitersClock(
|
|
32
|
+
BackupEngine* engine,
|
|
33
|
+
const std::shared_ptr<SystemClock>& backup_rate_limiter_clock = nullptr,
|
|
34
|
+
const std::shared_ptr<SystemClock>& restore_rate_limiter_clock = nullptr);
|
|
28
35
|
} // namespace ROCKSDB_NAMESPACE
|
|
29
36
|
#endif // ROCKSDB_LITE
|
|
@@ -564,8 +564,8 @@ size_t FillDB(DB* db, int from, int to,
|
|
|
564
564
|
FillDBFlushAction flush_action = kFlushMost) {
|
|
565
565
|
size_t bytes_written = 0;
|
|
566
566
|
for (int i = from; i < to; ++i) {
|
|
567
|
-
std::string key = "testkey" +
|
|
568
|
-
std::string value = "testvalue" +
|
|
567
|
+
std::string key = "testkey" + std::to_string(i);
|
|
568
|
+
std::string value = "testvalue" + std::to_string(i);
|
|
569
569
|
bytes_written += key.size() + value.size();
|
|
570
570
|
|
|
571
571
|
EXPECT_OK(db->Put(WriteOptions(), Slice(key), Slice(value)));
|
|
@@ -582,17 +582,17 @@ size_t FillDB(DB* db, int from, int to,
|
|
|
582
582
|
|
|
583
583
|
void AssertExists(DB* db, int from, int to) {
|
|
584
584
|
for (int i = from; i < to; ++i) {
|
|
585
|
-
std::string key = "testkey" +
|
|
585
|
+
std::string key = "testkey" + std::to_string(i);
|
|
586
586
|
std::string value;
|
|
587
587
|
Status s = db->Get(ReadOptions(), Slice(key), &value);
|
|
588
|
-
ASSERT_EQ(value, "testvalue" +
|
|
588
|
+
ASSERT_EQ(value, "testvalue" + std::to_string(i));
|
|
589
589
|
}
|
|
590
590
|
}
|
|
591
591
|
|
|
592
592
|
void AssertEmpty(DB* db, int from, int to) {
|
|
593
593
|
for (int i = from; i < to; ++i) {
|
|
594
|
-
std::string key = "testkey" +
|
|
595
|
-
std::string value = "testvalue" +
|
|
594
|
+
std::string key = "testkey" + std::to_string(i);
|
|
595
|
+
std::string value = "testvalue" + std::to_string(i);
|
|
596
596
|
|
|
597
597
|
Status s = db->Get(ReadOptions(), Slice(key), &value);
|
|
598
598
|
ASSERT_TRUE(s.IsNotFound());
|
|
@@ -955,7 +955,7 @@ class BackupEngineTest : public testing::Test {
|
|
|
955
955
|
ASSERT_LT(last_underscore, last_dot);
|
|
956
956
|
std::string s = child.name.substr(last_underscore + 1,
|
|
957
957
|
last_dot - (last_underscore + 1));
|
|
958
|
-
ASSERT_EQ(s,
|
|
958
|
+
ASSERT_EQ(s, std::to_string(child.size_bytes));
|
|
959
959
|
++found_count;
|
|
960
960
|
}
|
|
961
961
|
ASSERT_GE(found_count, minimum_count);
|
|
@@ -2598,80 +2598,119 @@ INSTANTIATE_TEST_CASE_P(
|
|
|
2598
2598
|
|
|
2599
2599
|
TEST_P(BackupEngineRateLimitingTestWithParam, RateLimiting) {
|
|
2600
2600
|
size_t const kMicrosPerSec = 1000 * 1000LL;
|
|
2601
|
-
|
|
2602
|
-
std::shared_ptr<RateLimiter> backupThrottler(NewGenericRateLimiter(1));
|
|
2603
|
-
std::shared_ptr<RateLimiter> restoreThrottler(NewGenericRateLimiter(1));
|
|
2604
|
-
|
|
2605
|
-
bool makeThrottler = std::get<0>(GetParam());
|
|
2606
|
-
if (makeThrottler) {
|
|
2607
|
-
engine_options_->backup_rate_limiter = backupThrottler;
|
|
2608
|
-
engine_options_->restore_rate_limiter = restoreThrottler;
|
|
2609
|
-
}
|
|
2610
|
-
|
|
2601
|
+
const bool custom_rate_limiter = std::get<0>(GetParam());
|
|
2611
2602
|
// iter 0 -- single threaded
|
|
2612
2603
|
// iter 1 -- multi threaded
|
|
2613
|
-
int iter = std::get<1>(GetParam());
|
|
2604
|
+
const int iter = std::get<1>(GetParam());
|
|
2614
2605
|
const std::pair<uint64_t, uint64_t> limit = std::get<2>(GetParam());
|
|
2615
|
-
|
|
2606
|
+
std::unique_ptr<Env> special_env(
|
|
2607
|
+
new SpecialEnv(db_chroot_env_.get(), /*time_elapse_only_sleep*/ true));
|
|
2616
2608
|
// destroy old data
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2609
|
+
Options options;
|
|
2610
|
+
options.env = special_env.get();
|
|
2611
|
+
DestroyDB(dbname_, options);
|
|
2612
|
+
|
|
2613
|
+
if (custom_rate_limiter) {
|
|
2614
|
+
std::shared_ptr<RateLimiter> backup_rate_limiter =
|
|
2615
|
+
std::make_shared<GenericRateLimiter>(
|
|
2616
|
+
limit.first, 100 * 1000 /* refill_period_us */, 10 /* fairness */,
|
|
2617
|
+
RateLimiter::Mode::kWritesOnly /* mode */,
|
|
2618
|
+
special_env->GetSystemClock(), false /* auto_tuned */);
|
|
2619
|
+
std::shared_ptr<RateLimiter> restore_rate_limiter =
|
|
2620
|
+
std::make_shared<GenericRateLimiter>(
|
|
2621
|
+
limit.second, 100 * 1000 /* refill_period_us */, 10 /* fairness */,
|
|
2622
|
+
RateLimiter::Mode::kWritesOnly /* mode */,
|
|
2623
|
+
special_env->GetSystemClock(), false /* auto_tuned */);
|
|
2624
|
+
engine_options_->backup_rate_limiter = backup_rate_limiter;
|
|
2625
|
+
engine_options_->restore_rate_limiter = restore_rate_limiter;
|
|
2621
2626
|
} else {
|
|
2622
2627
|
engine_options_->backup_rate_limit = limit.first;
|
|
2623
2628
|
engine_options_->restore_rate_limit = limit.second;
|
|
2624
2629
|
}
|
|
2630
|
+
|
|
2625
2631
|
engine_options_->max_background_operations = (iter == 0) ? 1 : 10;
|
|
2626
2632
|
options_.compression = kNoCompression;
|
|
2633
|
+
|
|
2634
|
+
// Rate limiter uses `CondVar::TimedWait()`, which does not have access to the
|
|
2635
|
+
// `Env` to advance its time according to the fake wait duration. The
|
|
2636
|
+
// workaround is to install a callback that advance the `Env`'s mock time.
|
|
2637
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
2638
|
+
"GenericRateLimiter::Request:PostTimedWait", [&](void* arg) {
|
|
2639
|
+
int64_t time_waited_us = *static_cast<int64_t*>(arg);
|
|
2640
|
+
special_env->SleepForMicroseconds(static_cast<int>(time_waited_us));
|
|
2641
|
+
});
|
|
2642
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
|
|
2643
|
+
|
|
2627
2644
|
OpenDBAndBackupEngine(true);
|
|
2628
|
-
|
|
2645
|
+
TEST_SetDefaultRateLimitersClock(backup_engine_.get(),
|
|
2646
|
+
special_env->GetSystemClock());
|
|
2629
2647
|
|
|
2630
|
-
|
|
2648
|
+
size_t bytes_written = FillDB(db_.get(), 0, 10000);
|
|
2649
|
+
|
|
2650
|
+
auto start_backup = special_env->NowMicros();
|
|
2631
2651
|
ASSERT_OK(backup_engine_->CreateNewBackup(db_.get(), false));
|
|
2632
|
-
auto backup_time =
|
|
2652
|
+
auto backup_time = special_env->NowMicros() - start_backup;
|
|
2653
|
+
CloseDBAndBackupEngine();
|
|
2633
2654
|
auto rate_limited_backup_time = (bytes_written * kMicrosPerSec) / limit.first;
|
|
2634
2655
|
ASSERT_GT(backup_time, 0.8 * rate_limited_backup_time);
|
|
2635
2656
|
|
|
2636
|
-
CloseDBAndBackupEngine();
|
|
2637
|
-
|
|
2638
2657
|
OpenBackupEngine();
|
|
2639
|
-
|
|
2658
|
+
TEST_SetDefaultRateLimitersClock(backup_engine_.get(),
|
|
2659
|
+
special_env->GetSystemClock());
|
|
2660
|
+
|
|
2661
|
+
auto start_restore = special_env->NowMicros();
|
|
2640
2662
|
ASSERT_OK(backup_engine_->RestoreDBFromLatestBackup(dbname_, dbname_));
|
|
2641
|
-
auto restore_time =
|
|
2663
|
+
auto restore_time = special_env->NowMicros() - start_restore;
|
|
2642
2664
|
CloseBackupEngine();
|
|
2643
2665
|
auto rate_limited_restore_time =
|
|
2644
2666
|
(bytes_written * kMicrosPerSec) / limit.second;
|
|
2645
2667
|
ASSERT_GT(restore_time, 0.8 * rate_limited_restore_time);
|
|
2646
2668
|
|
|
2647
|
-
AssertBackupConsistency(0, 0,
|
|
2669
|
+
AssertBackupConsistency(0, 0, 10000, 10100);
|
|
2670
|
+
|
|
2671
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
2672
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearCallBack(
|
|
2673
|
+
"GenericRateLimiter::Request:PostTimedWait");
|
|
2648
2674
|
}
|
|
2649
2675
|
|
|
2650
2676
|
TEST_P(BackupEngineRateLimitingTestWithParam, RateLimitingVerifyBackup) {
|
|
2651
2677
|
const std::size_t kMicrosPerSec = 1000 * 1000LL;
|
|
2652
|
-
std::
|
|
2653
|
-
1, 100 * 1000 /* refill_period_us */, 10 /* fairness */,
|
|
2654
|
-
RateLimiter::Mode::kAllIo /* mode */));
|
|
2655
|
-
|
|
2656
|
-
bool makeThrottler = std::get<0>(GetParam());
|
|
2657
|
-
if (makeThrottler) {
|
|
2658
|
-
engine_options_->backup_rate_limiter = backupThrottler;
|
|
2659
|
-
}
|
|
2660
|
-
|
|
2661
|
-
bool is_single_threaded = std::get<1>(GetParam()) == 0 ? true : false;
|
|
2662
|
-
engine_options_->max_background_operations = is_single_threaded ? 1 : 10;
|
|
2663
|
-
|
|
2678
|
+
const bool custom_rate_limiter = std::get<0>(GetParam());
|
|
2664
2679
|
const std::uint64_t backup_rate_limiter_limit = std::get<2>(GetParam()).first;
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2680
|
+
const bool is_single_threaded = std::get<1>(GetParam()) == 0 ? true : false;
|
|
2681
|
+
std::unique_ptr<Env> special_env(
|
|
2682
|
+
new SpecialEnv(db_chroot_env_.get(), /*time_elapse_only_sleep*/ true));
|
|
2683
|
+
|
|
2684
|
+
if (custom_rate_limiter) {
|
|
2685
|
+
std::shared_ptr<RateLimiter> backup_rate_limiter =
|
|
2686
|
+
std::make_shared<GenericRateLimiter>(
|
|
2687
|
+
backup_rate_limiter_limit, 100 * 1000 /* refill_period_us */,
|
|
2688
|
+
10 /* fairness */, RateLimiter::Mode::kAllIo /* mode */,
|
|
2689
|
+
special_env->GetSystemClock(), false /* auto_tuned */);
|
|
2690
|
+
engine_options_->backup_rate_limiter = backup_rate_limiter;
|
|
2668
2691
|
} else {
|
|
2669
2692
|
engine_options_->backup_rate_limit = backup_rate_limiter_limit;
|
|
2670
2693
|
}
|
|
2671
2694
|
|
|
2672
|
-
|
|
2695
|
+
engine_options_->max_background_operations = is_single_threaded ? 1 : 10;
|
|
2696
|
+
|
|
2697
|
+
Options options;
|
|
2698
|
+
options.env = special_env.get();
|
|
2699
|
+
DestroyDB(dbname_, options);
|
|
2700
|
+
// Rate limiter uses `CondVar::TimedWait()`, which does not have access to the
|
|
2701
|
+
// `Env` to advance its time according to the fake wait duration. The
|
|
2702
|
+
// workaround is to install a callback that advance the `Env`'s mock time.
|
|
2703
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
2704
|
+
"GenericRateLimiter::Request:PostTimedWait", [&](void* arg) {
|
|
2705
|
+
int64_t time_waited_us = *static_cast<int64_t*>(arg);
|
|
2706
|
+
special_env->SleepForMicroseconds(static_cast<int>(time_waited_us));
|
|
2707
|
+
});
|
|
2708
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
|
|
2673
2709
|
OpenDBAndBackupEngine(true /* destroy_old_data */);
|
|
2674
|
-
|
|
2710
|
+
TEST_SetDefaultRateLimitersClock(backup_engine_.get(),
|
|
2711
|
+
special_env->GetSystemClock(), nullptr);
|
|
2712
|
+
FillDB(db_.get(), 0, 10000);
|
|
2713
|
+
|
|
2675
2714
|
ASSERT_OK(backup_engine_->CreateNewBackup(db_.get(),
|
|
2676
2715
|
false /* flush_before_backup */));
|
|
2677
2716
|
|
|
@@ -2688,21 +2727,24 @@ TEST_P(BackupEngineRateLimitingTestWithParam, RateLimitingVerifyBackup) {
|
|
|
2688
2727
|
for (BackupFileInfo backup_file_info : backup_info.file_details) {
|
|
2689
2728
|
bytes_read_during_verify_backup += backup_file_info.size;
|
|
2690
2729
|
}
|
|
2691
|
-
|
|
2692
|
-
auto start_verify_backup = db_chroot_env_->NowMicros();
|
|
2730
|
+
auto start_verify_backup = special_env->NowMicros();
|
|
2693
2731
|
ASSERT_OK(
|
|
2694
2732
|
backup_engine_->VerifyBackup(backup_id, true /* verify_with_checksum */));
|
|
2695
|
-
auto verify_backup_time =
|
|
2733
|
+
auto verify_backup_time = special_env->NowMicros() - start_verify_backup;
|
|
2696
2734
|
auto rate_limited_verify_backup_time =
|
|
2697
2735
|
(bytes_read_during_verify_backup * kMicrosPerSec) /
|
|
2698
2736
|
backup_rate_limiter_limit;
|
|
2699
|
-
|
|
2700
|
-
if (makeThrottler) {
|
|
2737
|
+
if (custom_rate_limiter) {
|
|
2701
2738
|
EXPECT_GE(verify_backup_time, 0.8 * rate_limited_verify_backup_time);
|
|
2702
2739
|
}
|
|
2740
|
+
|
|
2703
2741
|
CloseDBAndBackupEngine();
|
|
2704
|
-
AssertBackupConsistency(backup_id, 0,
|
|
2705
|
-
DestroyDB(dbname_,
|
|
2742
|
+
AssertBackupConsistency(backup_id, 0, 10000, 10010);
|
|
2743
|
+
DestroyDB(dbname_, options);
|
|
2744
|
+
|
|
2745
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
2746
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearCallBack(
|
|
2747
|
+
"GenericRateLimiter::Request:PostTimedWait");
|
|
2706
2748
|
}
|
|
2707
2749
|
|
|
2708
2750
|
TEST_P(BackupEngineRateLimitingTestWithParam, RateLimitingChargeReadInBackup) {
|
|
@@ -3285,7 +3327,7 @@ TEST_F(BackupEngineTest, MetaSchemaVersion2_SizeCorruption) {
|
|
|
3285
3327
|
|
|
3286
3328
|
for (int id = 1; id <= 3; ++id) {
|
|
3287
3329
|
ASSERT_OK(file_manager_->WriteToFile(
|
|
3288
|
-
private_dir + "/" +
|
|
3330
|
+
private_dir + "/" + std::to_string(id) + "/CURRENT", "x"));
|
|
3289
3331
|
}
|
|
3290
3332
|
// Except corrupt Backup 4 with same size CURRENT file
|
|
3291
3333
|
{
|
|
@@ -3518,7 +3560,7 @@ TEST_F(BackupEngineTest, Concurrency) {
|
|
|
3518
3560
|
ASSERT_EQ(ids.size(), 0U);
|
|
3519
3561
|
|
|
3520
3562
|
// (Eventually, see below) Restore one of the backups, or "latest"
|
|
3521
|
-
std::string restore_db_dir = dbname_ + "/restore" +
|
|
3563
|
+
std::string restore_db_dir = dbname_ + "/restore" + std::to_string(i);
|
|
3522
3564
|
DestroyDir(test_db_env_.get(), restore_db_dir).PermitUncheckedError();
|
|
3523
3565
|
BackupID to_restore;
|
|
3524
3566
|
if (latest) {
|
|
@@ -3756,7 +3798,8 @@ TEST_F(BackupEngineTest, WriteOnlyEngineNoSharedFileDeletion) {
|
|
|
3756
3798
|
}
|
|
3757
3799
|
CloseDBAndBackupEngine();
|
|
3758
3800
|
|
|
3759
|
-
engine_options_->max_valid_backups_to_open =
|
|
3801
|
+
engine_options_->max_valid_backups_to_open =
|
|
3802
|
+
std::numeric_limits<int32_t>::max();
|
|
3760
3803
|
AssertBackupConsistency(i + 1, 0, (i + 1) * kNumKeys);
|
|
3761
3804
|
}
|
|
3762
3805
|
}
|
|
@@ -4110,7 +4153,7 @@ TEST_F(BackupEngineTest, FileTemperatures) {
|
|
|
4110
4153
|
}
|
|
4111
4154
|
|
|
4112
4155
|
// Restore backup to another virtual (tiered) dir
|
|
4113
|
-
const std::string restore_dir = "/restore" +
|
|
4156
|
+
const std::string restore_dir = "/restore" + std::to_string(i);
|
|
4114
4157
|
ASSERT_OK(backup_engine_->RestoreDBFromLatestBackup(
|
|
4115
4158
|
RestoreOptions(), restore_dir, restore_dir));
|
|
4116
4159
|
|