@nxtedition/rocksdb 6.0.1 → 7.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BUILDING.md +12 -4
- package/binding.cc +421 -40
- package/deps/rocksdb/build_version.cc +4 -10
- package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
- package/deps/rocksdb/rocksdb/Makefile +73 -91
- package/deps/rocksdb/rocksdb/TARGETS +27 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
- package/deps/rocksdb/rocksdb/common.mk +30 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
- package/deps/rocksdb/rocksdb/db/c.cc +71 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
- package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
- package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
- package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
- package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
- package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
- package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
- package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
- package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
- package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
- package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
- package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
- package/deps/rocksdb/rocksdb/env/env.cc +0 -60
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
- package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
- package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
- package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
- package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
- package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
- package/deps/rocksdb/rocksdb/src.mk +6 -1
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/format.cc +22 -20
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
- package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
- package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
- package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
- package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
- package/deps/rocksdb/rocksdb/util/compression.h +56 -7
- package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
- package/deps/rocksdb/rocksdb/util/heap.h +5 -3
- package/deps/rocksdb/rocksdb/util/random.cc +1 -5
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
- package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
- package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +20 -13
- package/index.js +187 -3
- package/iterator.js +1 -0
- package/package-lock.json +23687 -0
- package/package.json +2 -30
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/snapshot.js +23 -0
- package/deps/liburing/liburing/README +0 -46
- package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
- package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
- package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
- package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
- package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
- package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
- package/deps/liburing/liburing/test/Makefile +0 -312
- package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
- package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
- package/deps/liburing/liburing/test/accept-link.c +0 -251
- package/deps/liburing/liburing/test/accept-reuse.c +0 -164
- package/deps/liburing/liburing/test/accept-test.c +0 -79
- package/deps/liburing/liburing/test/accept.c +0 -476
- package/deps/liburing/liburing/test/across-fork.c +0 -283
- package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
- package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
- package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
- package/deps/liburing/liburing/test/close-opath.c +0 -122
- package/deps/liburing/liburing/test/config +0 -10
- package/deps/liburing/liburing/test/connect.c +0 -398
- package/deps/liburing/liburing/test/cq-full.c +0 -96
- package/deps/liburing/liburing/test/cq-overflow.c +0 -294
- package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
- package/deps/liburing/liburing/test/cq-ready.c +0 -94
- package/deps/liburing/liburing/test/cq-size.c +0 -58
- package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
- package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
- package/deps/liburing/liburing/test/defer.c +0 -307
- package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
- package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
- package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
- package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
- package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
- package/deps/liburing/liburing/test/eventfd.c +0 -112
- package/deps/liburing/liburing/test/fadvise.c +0 -202
- package/deps/liburing/liburing/test/fallocate.c +0 -249
- package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
- package/deps/liburing/liburing/test/file-register.c +0 -843
- package/deps/liburing/liburing/test/file-update.c +0 -173
- package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
- package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
- package/deps/liburing/liburing/test/fixed-link.c +0 -90
- package/deps/liburing/liburing/test/fsync.c +0 -224
- package/deps/liburing/liburing/test/hardlink.c +0 -136
- package/deps/liburing/liburing/test/helpers.c +0 -135
- package/deps/liburing/liburing/test/helpers.h +0 -67
- package/deps/liburing/liburing/test/io-cancel.c +0 -537
- package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
- package/deps/liburing/liburing/test/io_uring_register.c +0 -664
- package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
- package/deps/liburing/liburing/test/iopoll.c +0 -366
- package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
- package/deps/liburing/liburing/test/lfs-openat.c +0 -273
- package/deps/liburing/liburing/test/link-timeout.c +0 -1107
- package/deps/liburing/liburing/test/link.c +0 -496
- package/deps/liburing/liburing/test/link_drain.c +0 -229
- package/deps/liburing/liburing/test/madvise.c +0 -195
- package/deps/liburing/liburing/test/mkdir.c +0 -108
- package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
- package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
- package/deps/liburing/liburing/test/nop.c +0 -115
- package/deps/liburing/liburing/test/open-close.c +0 -146
- package/deps/liburing/liburing/test/openat2.c +0 -240
- package/deps/liburing/liburing/test/personality.c +0 -204
- package/deps/liburing/liburing/test/pipe-eof.c +0 -81
- package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
- package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
- package/deps/liburing/liburing/test/poll-cancel.c +0 -135
- package/deps/liburing/liburing/test/poll-link.c +0 -227
- package/deps/liburing/liburing/test/poll-many.c +0 -208
- package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
- package/deps/liburing/liburing/test/poll-ring.c +0 -48
- package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
- package/deps/liburing/liburing/test/poll.c +0 -109
- package/deps/liburing/liburing/test/probe.c +0 -137
- package/deps/liburing/liburing/test/read-write.c +0 -876
- package/deps/liburing/liburing/test/register-restrictions.c +0 -633
- package/deps/liburing/liburing/test/rename.c +0 -134
- package/deps/liburing/liburing/test/ring-leak.c +0 -173
- package/deps/liburing/liburing/test/ring-leak2.c +0 -249
- package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
- package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
- package/deps/liburing/liburing/test/runtests.sh +0 -170
- package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
- package/deps/liburing/liburing/test/self.c +0 -91
- package/deps/liburing/liburing/test/send_recv.c +0 -291
- package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
- package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
- package/deps/liburing/liburing/test/shared-wq.c +0 -84
- package/deps/liburing/liburing/test/short-read.c +0 -75
- package/deps/liburing/liburing/test/shutdown.c +0 -163
- package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
- package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
- package/deps/liburing/liburing/test/socket-rw.c +0 -147
- package/deps/liburing/liburing/test/splice.c +0 -511
- package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
- package/deps/liburing/liburing/test/sq-full.c +0 -45
- package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
- package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
- package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
- package/deps/liburing/liburing/test/sq-space_left.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
- package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
- package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
- package/deps/liburing/liburing/test/statx.c +0 -172
- package/deps/liburing/liburing/test/stdout.c +0 -232
- package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
- package/deps/liburing/liburing/test/submit-reuse.c +0 -239
- package/deps/liburing/liburing/test/symlink.c +0 -116
- package/deps/liburing/liburing/test/teardowns.c +0 -58
- package/deps/liburing/liburing/test/thread-exit.c +0 -131
- package/deps/liburing/liburing/test/timeout-new.c +0 -246
- package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
- package/deps/liburing/liburing/test/timeout.c +0 -1354
- package/deps/liburing/liburing/test/unlink.c +0 -111
- package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
- package/deps/rocksdb/rocksdb/README.md +0 -32
- package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
- package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
- package/deps/rocksdb/rocksdb/port/README +0 -10
- package/deps/rocksdb/rocksdb/python.mk +0 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -38,10 +38,10 @@ class DBTest2 : public DBTestBase {
|
|
|
38
38
|
#ifndef ROCKSDB_LITE
|
|
39
39
|
uint64_t GetSstSizeHelper(Temperature temperature) {
|
|
40
40
|
std::string prop;
|
|
41
|
-
EXPECT_TRUE(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
EXPECT_TRUE(dbfull()->GetProperty(
|
|
42
|
+
DB::Properties::kLiveSstFilesSizeAtTemperature +
|
|
43
|
+
std::to_string(static_cast<uint8_t>(temperature)),
|
|
44
|
+
&prop));
|
|
45
45
|
return static_cast<uint64_t>(std::atoi(prop.c_str()));
|
|
46
46
|
}
|
|
47
47
|
#endif // ROCKSDB_LITE
|
|
@@ -1296,6 +1296,7 @@ TEST_F(DBTest2, PresetCompressionDict) {
|
|
|
1296
1296
|
enum DictionaryTypes : int {
|
|
1297
1297
|
kWithoutDict,
|
|
1298
1298
|
kWithDict,
|
|
1299
|
+
kWithZSTDfinalizeDict,
|
|
1299
1300
|
kWithZSTDTrainedDict,
|
|
1300
1301
|
kDictEnd,
|
|
1301
1302
|
};
|
|
@@ -1304,6 +1305,7 @@ TEST_F(DBTest2, PresetCompressionDict) {
|
|
|
1304
1305
|
options.compression = compression_type;
|
|
1305
1306
|
size_t bytes_without_dict = 0;
|
|
1306
1307
|
size_t bytes_with_dict = 0;
|
|
1308
|
+
size_t bytes_with_zstd_finalize_dict = 0;
|
|
1307
1309
|
size_t bytes_with_zstd_trained_dict = 0;
|
|
1308
1310
|
for (int i = kWithoutDict; i < kDictEnd; i++) {
|
|
1309
1311
|
// First iteration: compress without preset dictionary
|
|
@@ -1323,12 +1325,21 @@ TEST_F(DBTest2, PresetCompressionDict) {
|
|
|
1323
1325
|
options.compression_opts.max_dict_bytes = kBlockSizeBytes;
|
|
1324
1326
|
options.compression_opts.zstd_max_train_bytes = 0;
|
|
1325
1327
|
break;
|
|
1328
|
+
case kWithZSTDfinalizeDict:
|
|
1329
|
+
if (compression_type != kZSTD) {
|
|
1330
|
+
continue;
|
|
1331
|
+
}
|
|
1332
|
+
options.compression_opts.max_dict_bytes = kBlockSizeBytes;
|
|
1333
|
+
options.compression_opts.zstd_max_train_bytes = kL0FileBytes;
|
|
1334
|
+
options.compression_opts.use_zstd_dict_trainer = false;
|
|
1335
|
+
break;
|
|
1326
1336
|
case kWithZSTDTrainedDict:
|
|
1327
1337
|
if (compression_type != kZSTD) {
|
|
1328
1338
|
continue;
|
|
1329
1339
|
}
|
|
1330
1340
|
options.compression_opts.max_dict_bytes = kBlockSizeBytes;
|
|
1331
1341
|
options.compression_opts.zstd_max_train_bytes = kL0FileBytes;
|
|
1342
|
+
options.compression_opts.use_zstd_dict_trainer = true;
|
|
1332
1343
|
break;
|
|
1333
1344
|
default:
|
|
1334
1345
|
assert(false);
|
|
@@ -1365,6 +1376,8 @@ TEST_F(DBTest2, PresetCompressionDict) {
|
|
|
1365
1376
|
bytes_without_dict = total_sst_bytes;
|
|
1366
1377
|
} else if (i == kWithDict) {
|
|
1367
1378
|
bytes_with_dict = total_sst_bytes;
|
|
1379
|
+
} else if (i == kWithZSTDfinalizeDict) {
|
|
1380
|
+
bytes_with_zstd_finalize_dict = total_sst_bytes;
|
|
1368
1381
|
} else if (i == kWithZSTDTrainedDict) {
|
|
1369
1382
|
bytes_with_zstd_trained_dict = total_sst_bytes;
|
|
1370
1383
|
}
|
|
@@ -1375,6 +1388,13 @@ TEST_F(DBTest2, PresetCompressionDict) {
|
|
|
1375
1388
|
}
|
|
1376
1389
|
if (i == kWithDict) {
|
|
1377
1390
|
ASSERT_GT(bytes_without_dict, bytes_with_dict);
|
|
1391
|
+
} else if (i == kWithZSTDTrainedDict) {
|
|
1392
|
+
// In zstd compression, it is sometimes possible that using a finalized
|
|
1393
|
+
// dictionary does not get as good a compression ratio as raw content
|
|
1394
|
+
// dictionary. But using a dictionary should always get better
|
|
1395
|
+
// compression ratio than not using one.
|
|
1396
|
+
ASSERT_TRUE(bytes_with_dict > bytes_with_zstd_finalize_dict ||
|
|
1397
|
+
bytes_without_dict > bytes_with_zstd_finalize_dict);
|
|
1378
1398
|
} else if (i == kWithZSTDTrainedDict) {
|
|
1379
1399
|
// In zstd compression, it is sometimes possible that using a trained
|
|
1380
1400
|
// dictionary does not get as good a compression ratio as without
|
|
@@ -1694,9 +1714,9 @@ class CompactionCompressionListener : public EventListener {
|
|
|
1694
1714
|
int bottommost_level = 0;
|
|
1695
1715
|
for (int level = 0; level < db->NumberLevels(); level++) {
|
|
1696
1716
|
std::string files_at_level;
|
|
1697
|
-
ASSERT_TRUE(
|
|
1698
|
-
"rocksdb.num-files-at-level" +
|
|
1699
|
-
|
|
1717
|
+
ASSERT_TRUE(
|
|
1718
|
+
db->GetProperty("rocksdb.num-files-at-level" + std::to_string(level),
|
|
1719
|
+
&files_at_level));
|
|
1700
1720
|
if (files_at_level != "0") {
|
|
1701
1721
|
bottommost_level = level;
|
|
1702
1722
|
}
|
|
@@ -2492,14 +2512,14 @@ TEST_F(DBTest2, TestPerfContextIterCpuTime) {
|
|
|
2492
2512
|
|
|
2493
2513
|
const size_t kNumEntries = 10;
|
|
2494
2514
|
for (size_t i = 0; i < kNumEntries; ++i) {
|
|
2495
|
-
ASSERT_OK(Put("k" +
|
|
2515
|
+
ASSERT_OK(Put("k" + std::to_string(i), "v" + std::to_string(i)));
|
|
2496
2516
|
}
|
|
2497
2517
|
ASSERT_OK(Flush());
|
|
2498
2518
|
for (size_t i = 0; i < kNumEntries; ++i) {
|
|
2499
|
-
ASSERT_EQ("v" +
|
|
2519
|
+
ASSERT_EQ("v" + std::to_string(i), Get("k" + std::to_string(i)));
|
|
2500
2520
|
}
|
|
2501
|
-
std::string last_key = "k" +
|
|
2502
|
-
std::string last_value = "v" +
|
|
2521
|
+
std::string last_key = "k" + std::to_string(kNumEntries - 1);
|
|
2522
|
+
std::string last_value = "v" + std::to_string(kNumEntries - 1);
|
|
2503
2523
|
env_->now_cpu_count_.store(0);
|
|
2504
2524
|
env_->SetMockSleep();
|
|
2505
2525
|
|
|
@@ -3987,12 +4007,14 @@ TEST_F(DBTest2, RateLimitedCompactionReads) {
|
|
|
3987
4007
|
|
|
3988
4008
|
// should be slightly above 512KB due to non-data blocks read. Arbitrarily
|
|
3989
4009
|
// chose 1MB as the upper bound on the total bytes read.
|
|
3990
|
-
size_t rate_limited_bytes =
|
|
3991
|
-
options.rate_limiter->GetTotalBytesThrough(Env::IO_TOTAL);
|
|
3992
|
-
//
|
|
4010
|
+
size_t rate_limited_bytes = static_cast<size_t>(
|
|
4011
|
+
options.rate_limiter->GetTotalBytesThrough(Env::IO_TOTAL));
|
|
4012
|
+
// The charges can exist for `IO_LOW` and `IO_USER` priorities.
|
|
4013
|
+
size_t rate_limited_bytes_by_pri =
|
|
4014
|
+
options.rate_limiter->GetTotalBytesThrough(Env::IO_LOW) +
|
|
4015
|
+
options.rate_limiter->GetTotalBytesThrough(Env::IO_USER);
|
|
3993
4016
|
ASSERT_EQ(rate_limited_bytes,
|
|
3994
|
-
static_cast<size_t>(
|
|
3995
|
-
options.rate_limiter->GetTotalBytesThrough(Env::IO_LOW)));
|
|
4017
|
+
static_cast<size_t>(rate_limited_bytes_by_pri));
|
|
3996
4018
|
// Include the explicit prefetch of the footer in direct I/O case.
|
|
3997
4019
|
size_t direct_io_extra = use_direct_io ? 512 * 1024 : 0;
|
|
3998
4020
|
ASSERT_GE(
|
|
@@ -4010,9 +4032,11 @@ TEST_F(DBTest2, RateLimitedCompactionReads) {
|
|
|
4010
4032
|
}
|
|
4011
4033
|
delete iter;
|
|
4012
4034
|
// bytes read for user iterator shouldn't count against the rate limit.
|
|
4035
|
+
rate_limited_bytes_by_pri =
|
|
4036
|
+
options.rate_limiter->GetTotalBytesThrough(Env::IO_LOW) +
|
|
4037
|
+
options.rate_limiter->GetTotalBytesThrough(Env::IO_USER);
|
|
4013
4038
|
ASSERT_EQ(rate_limited_bytes,
|
|
4014
|
-
static_cast<size_t>(
|
|
4015
|
-
options.rate_limiter->GetTotalBytesThrough(Env::IO_LOW)));
|
|
4039
|
+
static_cast<size_t>(rate_limited_bytes_by_pri));
|
|
4016
4040
|
}
|
|
4017
4041
|
}
|
|
4018
4042
|
}
|
|
@@ -5553,7 +5577,7 @@ TEST_F(DBTest2, MultiDBParallelOpenTest) {
|
|
|
5553
5577
|
Options options = CurrentOptions();
|
|
5554
5578
|
std::vector<std::string> dbnames;
|
|
5555
5579
|
for (int i = 0; i < kNumDbs; ++i) {
|
|
5556
|
-
dbnames.emplace_back(test::PerThreadDBPath(env_, "db" +
|
|
5580
|
+
dbnames.emplace_back(test::PerThreadDBPath(env_, "db" + std::to_string(i)));
|
|
5557
5581
|
ASSERT_OK(DestroyDB(dbnames.back(), options));
|
|
5558
5582
|
}
|
|
5559
5583
|
|
|
@@ -6305,115 +6329,118 @@ TEST_F(DBTest2, BlockBasedTablePrefixGetIndexNotFound) {
|
|
|
6305
6329
|
|
|
6306
6330
|
#ifndef ROCKSDB_LITE
|
|
6307
6331
|
TEST_F(DBTest2, AutoPrefixMode1) {
|
|
6308
|
-
|
|
6309
|
-
|
|
6310
|
-
|
|
6311
|
-
|
|
6312
|
-
|
|
6313
|
-
|
|
6314
|
-
|
|
6315
|
-
|
|
6316
|
-
|
|
6317
|
-
|
|
6318
|
-
Random rnd(301);
|
|
6319
|
-
std::string large_value = rnd.RandomString(500);
|
|
6320
|
-
|
|
6321
|
-
ASSERT_OK(Put("a1", large_value));
|
|
6322
|
-
ASSERT_OK(Put("x1", large_value));
|
|
6323
|
-
ASSERT_OK(Put("y1", large_value));
|
|
6324
|
-
ASSERT_OK(Flush());
|
|
6325
|
-
|
|
6326
|
-
ReadOptions ro;
|
|
6327
|
-
ro.total_order_seek = false;
|
|
6328
|
-
ro.auto_prefix_mode = true;
|
|
6329
|
-
{
|
|
6330
|
-
std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
|
|
6331
|
-
iterator->Seek("b1");
|
|
6332
|
-
ASSERT_TRUE(iterator->Valid());
|
|
6333
|
-
ASSERT_EQ("x1", iterator->key().ToString());
|
|
6334
|
-
ASSERT_EQ(0, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6335
|
-
ASSERT_OK(iterator->status());
|
|
6336
|
-
}
|
|
6332
|
+
do {
|
|
6333
|
+
// create a DB with block prefix index
|
|
6334
|
+
Options options = CurrentOptions();
|
|
6335
|
+
BlockBasedTableOptions table_options =
|
|
6336
|
+
*options.table_factory->GetOptions<BlockBasedTableOptions>();
|
|
6337
|
+
table_options.filter_policy.reset(NewBloomFilterPolicy(10, false));
|
|
6338
|
+
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
6339
|
+
options.prefix_extractor.reset(NewFixedPrefixTransform(1));
|
|
6340
|
+
options.statistics = CreateDBStatistics();
|
|
6337
6341
|
|
|
6338
|
-
|
|
6339
|
-
Slice ub(ub_str);
|
|
6340
|
-
ro.iterate_upper_bound = &ub;
|
|
6342
|
+
Reopen(options);
|
|
6341
6343
|
|
|
6342
|
-
|
|
6343
|
-
std::
|
|
6344
|
-
iterator->Seek("b1");
|
|
6345
|
-
ASSERT_FALSE(iterator->Valid());
|
|
6346
|
-
ASSERT_EQ(1, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6347
|
-
ASSERT_OK(iterator->status());
|
|
6348
|
-
}
|
|
6344
|
+
Random rnd(301);
|
|
6345
|
+
std::string large_value = rnd.RandomString(500);
|
|
6349
6346
|
|
|
6350
|
-
|
|
6351
|
-
|
|
6352
|
-
|
|
6353
|
-
|
|
6354
|
-
iterator->Seek("b1");
|
|
6355
|
-
ASSERT_TRUE(iterator->Valid());
|
|
6356
|
-
ASSERT_EQ("x1", iterator->key().ToString());
|
|
6357
|
-
ASSERT_EQ(1, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6358
|
-
ASSERT_OK(iterator->status());
|
|
6359
|
-
}
|
|
6347
|
+
ASSERT_OK(Put("a1", large_value));
|
|
6348
|
+
ASSERT_OK(Put("x1", large_value));
|
|
6349
|
+
ASSERT_OK(Put("y1", large_value));
|
|
6350
|
+
ASSERT_OK(Flush());
|
|
6360
6351
|
|
|
6361
|
-
|
|
6362
|
-
|
|
6363
|
-
|
|
6364
|
-
|
|
6365
|
-
|
|
6366
|
-
|
|
6367
|
-
|
|
6368
|
-
|
|
6369
|
-
|
|
6352
|
+
ReadOptions ro;
|
|
6353
|
+
ro.total_order_seek = false;
|
|
6354
|
+
ro.auto_prefix_mode = true;
|
|
6355
|
+
{
|
|
6356
|
+
std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
|
|
6357
|
+
iterator->Seek("b1");
|
|
6358
|
+
ASSERT_TRUE(iterator->Valid());
|
|
6359
|
+
ASSERT_EQ("x1", iterator->key().ToString());
|
|
6360
|
+
ASSERT_EQ(0, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6361
|
+
ASSERT_OK(iterator->status());
|
|
6362
|
+
}
|
|
6370
6363
|
|
|
6371
|
-
|
|
6372
|
-
|
|
6373
|
-
ub_str = "b9";
|
|
6374
|
-
ub = Slice(ub_str);
|
|
6364
|
+
std::string ub_str = "b9";
|
|
6365
|
+
Slice ub(ub_str);
|
|
6375
6366
|
ro.iterate_upper_bound = &ub;
|
|
6376
6367
|
|
|
6377
|
-
|
|
6378
|
-
|
|
6379
|
-
|
|
6380
|
-
|
|
6381
|
-
|
|
6368
|
+
{
|
|
6369
|
+
std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
|
|
6370
|
+
iterator->Seek("b1");
|
|
6371
|
+
ASSERT_FALSE(iterator->Valid());
|
|
6372
|
+
ASSERT_EQ(1, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6373
|
+
ASSERT_OK(iterator->status());
|
|
6374
|
+
}
|
|
6382
6375
|
|
|
6383
6376
|
ub_str = "z";
|
|
6384
6377
|
ub = Slice(ub_str);
|
|
6385
|
-
|
|
6386
|
-
|
|
6387
|
-
|
|
6388
|
-
|
|
6389
|
-
|
|
6378
|
+
{
|
|
6379
|
+
std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
|
|
6380
|
+
iterator->Seek("b1");
|
|
6381
|
+
ASSERT_TRUE(iterator->Valid());
|
|
6382
|
+
ASSERT_EQ("x1", iterator->key().ToString());
|
|
6383
|
+
ASSERT_EQ(1, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6384
|
+
ASSERT_OK(iterator->status());
|
|
6385
|
+
}
|
|
6390
6386
|
|
|
6391
6387
|
ub_str = "c";
|
|
6392
6388
|
ub = Slice(ub_str);
|
|
6389
|
+
{
|
|
6390
|
+
std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
|
|
6391
|
+
iterator->Seek("b1");
|
|
6392
|
+
ASSERT_FALSE(iterator->Valid());
|
|
6393
|
+
ASSERT_EQ(2, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6394
|
+
ASSERT_OK(iterator->status());
|
|
6395
|
+
}
|
|
6393
6396
|
|
|
6394
|
-
iterator
|
|
6395
|
-
|
|
6396
|
-
|
|
6397
|
+
// The same queries without recreating iterator
|
|
6398
|
+
{
|
|
6399
|
+
ub_str = "b9";
|
|
6400
|
+
ub = Slice(ub_str);
|
|
6401
|
+
ro.iterate_upper_bound = &ub;
|
|
6397
6402
|
|
|
6398
|
-
|
|
6399
|
-
|
|
6400
|
-
|
|
6401
|
-
|
|
6402
|
-
|
|
6403
|
-
ASSERT_EQ("a1", iterator->key().ToString());
|
|
6404
|
-
ASSERT_EQ(4, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6403
|
+
std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
|
|
6404
|
+
iterator->Seek("b1");
|
|
6405
|
+
ASSERT_FALSE(iterator->Valid());
|
|
6406
|
+
ASSERT_EQ(3, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6407
|
+
ASSERT_OK(iterator->status());
|
|
6405
6408
|
|
|
6406
|
-
|
|
6407
|
-
|
|
6408
|
-
ro.iterate_upper_bound = &ub;
|
|
6409
|
-
iterator->SeekToLast();
|
|
6410
|
-
ASSERT_TRUE(iterator->Valid());
|
|
6411
|
-
ASSERT_EQ("y1", iterator->key().ToString());
|
|
6409
|
+
ub_str = "z";
|
|
6410
|
+
ub = Slice(ub_str);
|
|
6412
6411
|
|
|
6413
|
-
|
|
6414
|
-
|
|
6415
|
-
|
|
6416
|
-
|
|
6412
|
+
iterator->Seek("b1");
|
|
6413
|
+
ASSERT_TRUE(iterator->Valid());
|
|
6414
|
+
ASSERT_EQ("x1", iterator->key().ToString());
|
|
6415
|
+
ASSERT_EQ(3, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6416
|
+
|
|
6417
|
+
ub_str = "c";
|
|
6418
|
+
ub = Slice(ub_str);
|
|
6419
|
+
|
|
6420
|
+
iterator->Seek("b1");
|
|
6421
|
+
ASSERT_FALSE(iterator->Valid());
|
|
6422
|
+
ASSERT_EQ(4, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6423
|
+
|
|
6424
|
+
ub_str = "b9";
|
|
6425
|
+
ub = Slice(ub_str);
|
|
6426
|
+
ro.iterate_upper_bound = &ub;
|
|
6427
|
+
iterator->SeekForPrev("b1");
|
|
6428
|
+
ASSERT_TRUE(iterator->Valid());
|
|
6429
|
+
ASSERT_EQ("a1", iterator->key().ToString());
|
|
6430
|
+
ASSERT_EQ(4, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
|
|
6431
|
+
|
|
6432
|
+
ub_str = "zz";
|
|
6433
|
+
ub = Slice(ub_str);
|
|
6434
|
+
ro.iterate_upper_bound = &ub;
|
|
6435
|
+
iterator->SeekToLast();
|
|
6436
|
+
ASSERT_TRUE(iterator->Valid());
|
|
6437
|
+
ASSERT_EQ("y1", iterator->key().ToString());
|
|
6438
|
+
|
|
6439
|
+
iterator->SeekToFirst();
|
|
6440
|
+
ASSERT_TRUE(iterator->Valid());
|
|
6441
|
+
ASSERT_EQ("a1", iterator->key().ToString());
|
|
6442
|
+
}
|
|
6443
|
+
} while (ChangeOptions(kSkipPlainTable));
|
|
6417
6444
|
}
|
|
6418
6445
|
|
|
6419
6446
|
class RenameCurrentTest : public DBTestBase,
|
|
@@ -7145,6 +7172,112 @@ TEST_F(DBTest2, RenameDirectory) {
|
|
|
7145
7172
|
dbname_ = old_dbname;
|
|
7146
7173
|
}
|
|
7147
7174
|
|
|
7175
|
+
TEST_F(DBTest2, SstUniqueIdVerifyBackwardCompatible) {
|
|
7176
|
+
const int kNumSst = 3;
|
|
7177
|
+
const int kLevel0Trigger = 4;
|
|
7178
|
+
auto options = CurrentOptions();
|
|
7179
|
+
options.level0_file_num_compaction_trigger = kLevel0Trigger;
|
|
7180
|
+
options.statistics = CreateDBStatistics();
|
|
7181
|
+
|
|
7182
|
+
// Existing manifest doesn't have unique id
|
|
7183
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
7184
|
+
"VersionEdit::EncodeTo:UniqueId", [&](void* arg) {
|
|
7185
|
+
auto unique_id = static_cast<UniqueId64x2*>(arg);
|
|
7186
|
+
// remove id before writing it to manifest
|
|
7187
|
+
(*unique_id)[0] = 0;
|
|
7188
|
+
(*unique_id)[1] = 0;
|
|
7189
|
+
});
|
|
7190
|
+
std::atomic_int skipped = 0;
|
|
7191
|
+
SyncPoint::GetInstance()->SetCallBack("Version::VerifySstUniqueIds::Skipped",
|
|
7192
|
+
[&](void* /*arg*/) { skipped++; });
|
|
7193
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
7194
|
+
|
|
7195
|
+
// generate a few SSTs
|
|
7196
|
+
for (int i = 0; i < kNumSst; i++) {
|
|
7197
|
+
for (int j = 0; j < 100; j++) {
|
|
7198
|
+
ASSERT_OK(Put(Key(i * 10 + j), "value"));
|
|
7199
|
+
}
|
|
7200
|
+
ASSERT_OK(Flush());
|
|
7201
|
+
}
|
|
7202
|
+
|
|
7203
|
+
// Reopen without verification
|
|
7204
|
+
Reopen(options);
|
|
7205
|
+
|
|
7206
|
+
// Reopen with verification, but it's skipped because manifest doesn't have id
|
|
7207
|
+
options.verify_sst_unique_id_in_manifest = true;
|
|
7208
|
+
Reopen(options);
|
|
7209
|
+
ASSERT_EQ(skipped, kNumSst);
|
|
7210
|
+
|
|
7211
|
+
// test compaction generated Sst
|
|
7212
|
+
for (int i = kNumSst; i < kLevel0Trigger; i++) {
|
|
7213
|
+
for (int j = 0; j < 100; j++) {
|
|
7214
|
+
ASSERT_OK(Put(Key(i * 10 + j), "value"));
|
|
7215
|
+
}
|
|
7216
|
+
ASSERT_OK(Flush());
|
|
7217
|
+
}
|
|
7218
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
7219
|
+
|
|
7220
|
+
#ifndef ROCKSDB_LITE
|
|
7221
|
+
ASSERT_EQ("0,1", FilesPerLevel(0));
|
|
7222
|
+
#endif // ROCKSDB_LITE
|
|
7223
|
+
|
|
7224
|
+
// Reopen with verification should fail
|
|
7225
|
+
options.verify_sst_unique_id_in_manifest = true;
|
|
7226
|
+
skipped = 0;
|
|
7227
|
+
Reopen(options);
|
|
7228
|
+
ASSERT_EQ(skipped, 1);
|
|
7229
|
+
}
|
|
7230
|
+
|
|
7231
|
+
TEST_F(DBTest2, SstUniqueIdVerify) {
|
|
7232
|
+
const int kNumSst = 3;
|
|
7233
|
+
const int kLevel0Trigger = 4;
|
|
7234
|
+
auto options = CurrentOptions();
|
|
7235
|
+
options.level0_file_num_compaction_trigger = kLevel0Trigger;
|
|
7236
|
+
|
|
7237
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
7238
|
+
"PropertyBlockBuilder::AddTableProperty:Start", [&](void* props_vs) {
|
|
7239
|
+
auto props = static_cast<TableProperties*>(props_vs);
|
|
7240
|
+
// update table property session_id to a different one
|
|
7241
|
+
props->db_session_id = DBImpl::GenerateDbSessionId(nullptr);
|
|
7242
|
+
});
|
|
7243
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
7244
|
+
|
|
7245
|
+
// generate a few SSTs
|
|
7246
|
+
for (int i = 0; i < kNumSst; i++) {
|
|
7247
|
+
for (int j = 0; j < 100; j++) {
|
|
7248
|
+
ASSERT_OK(Put(Key(i * 10 + j), "value"));
|
|
7249
|
+
}
|
|
7250
|
+
ASSERT_OK(Flush());
|
|
7251
|
+
}
|
|
7252
|
+
|
|
7253
|
+
// Reopen with verification should report corruption
|
|
7254
|
+
options.verify_sst_unique_id_in_manifest = true;
|
|
7255
|
+
auto s = TryReopen(options);
|
|
7256
|
+
ASSERT_TRUE(s.IsCorruption());
|
|
7257
|
+
|
|
7258
|
+
// Reopen without verification should be fine
|
|
7259
|
+
options.verify_sst_unique_id_in_manifest = false;
|
|
7260
|
+
Reopen(options);
|
|
7261
|
+
|
|
7262
|
+
// test compaction generated Sst
|
|
7263
|
+
for (int i = kNumSst; i < kLevel0Trigger; i++) {
|
|
7264
|
+
for (int j = 0; j < 100; j++) {
|
|
7265
|
+
ASSERT_OK(Put(Key(i * 10 + j), "value"));
|
|
7266
|
+
}
|
|
7267
|
+
ASSERT_OK(Flush());
|
|
7268
|
+
}
|
|
7269
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
7270
|
+
|
|
7271
|
+
#ifndef ROCKSDB_LITE
|
|
7272
|
+
ASSERT_EQ("0,1", FilesPerLevel(0));
|
|
7273
|
+
#endif // ROCKSDB_LITE
|
|
7274
|
+
|
|
7275
|
+
// Reopen with verification should fail
|
|
7276
|
+
options.verify_sst_unique_id_in_manifest = true;
|
|
7277
|
+
s = TryReopen(options);
|
|
7278
|
+
ASSERT_TRUE(s.IsCorruption());
|
|
7279
|
+
}
|
|
7280
|
+
|
|
7148
7281
|
#ifndef ROCKSDB_LITE
|
|
7149
7282
|
TEST_F(DBTest2, GetLatestSeqAndTsForKey) {
|
|
7150
7283
|
Destroy(last_options_);
|
|
@@ -9,8 +9,11 @@
|
|
|
9
9
|
|
|
10
10
|
#include "db/db_test_util.h"
|
|
11
11
|
|
|
12
|
+
#include "cache/cache_reservation_manager.h"
|
|
12
13
|
#include "db/forward_iterator.h"
|
|
13
14
|
#include "env/mock_env.h"
|
|
15
|
+
#include "port/lang.h"
|
|
16
|
+
#include "rocksdb/cache.h"
|
|
14
17
|
#include "rocksdb/convenience.h"
|
|
15
18
|
#include "rocksdb/env_encryption.h"
|
|
16
19
|
#include "rocksdb/unique_id.h"
|
|
@@ -360,6 +363,17 @@ Options DBTestBase::GetOptions(
|
|
|
360
363
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearCallBack(
|
|
361
364
|
"NewWritableFile:O_DIRECT");
|
|
362
365
|
#endif
|
|
366
|
+
// kMustFreeHeapAllocations -> indicates ASAN build
|
|
367
|
+
if (kMustFreeHeapAllocations && !options_override.full_block_cache) {
|
|
368
|
+
// Detecting block cache use-after-free is normally difficult in unit
|
|
369
|
+
// tests, because as a cache, it tends to keep unreferenced entries in
|
|
370
|
+
// memory, and we normally want unit tests to take advantage of block
|
|
371
|
+
// cache for speed. However, we also want a strong chance of detecting
|
|
372
|
+
// block cache use-after-free in unit tests in ASAN builds, so for ASAN
|
|
373
|
+
// builds we use a trivially small block cache to which entries can be
|
|
374
|
+
// added but are immediately freed on no more references.
|
|
375
|
+
table_options.block_cache = NewLRUCache(/* too small */ 1);
|
|
376
|
+
}
|
|
363
377
|
|
|
364
378
|
bool can_allow_mmap = IsMemoryMappedAccessSupported();
|
|
365
379
|
switch (option_config) {
|
|
@@ -816,10 +830,12 @@ std::string DBTestBase::Get(int cf, const std::string& k,
|
|
|
816
830
|
std::vector<std::string> DBTestBase::MultiGet(std::vector<int> cfs,
|
|
817
831
|
const std::vector<std::string>& k,
|
|
818
832
|
const Snapshot* snapshot,
|
|
819
|
-
const bool batched
|
|
833
|
+
const bool batched,
|
|
834
|
+
const bool async) {
|
|
820
835
|
ReadOptions options;
|
|
821
836
|
options.verify_checksums = true;
|
|
822
837
|
options.snapshot = snapshot;
|
|
838
|
+
options.async_io = async;
|
|
823
839
|
std::vector<ColumnFamilyHandle*> handles;
|
|
824
840
|
std::vector<Slice> keys;
|
|
825
841
|
std::vector<std::string> result;
|
|
@@ -831,7 +847,7 @@ std::vector<std::string> DBTestBase::MultiGet(std::vector<int> cfs,
|
|
|
831
847
|
std::vector<Status> s;
|
|
832
848
|
if (!batched) {
|
|
833
849
|
s = db_->MultiGet(options, handles, keys, &result);
|
|
834
|
-
for (
|
|
850
|
+
for (size_t i = 0; i < s.size(); ++i) {
|
|
835
851
|
if (s[i].IsNotFound()) {
|
|
836
852
|
result[i] = "NOT_FOUND";
|
|
837
853
|
} else if (!s[i].ok()) {
|
|
@@ -844,13 +860,16 @@ std::vector<std::string> DBTestBase::MultiGet(std::vector<int> cfs,
|
|
|
844
860
|
s.resize(cfs.size());
|
|
845
861
|
db_->MultiGet(options, cfs.size(), handles.data(), keys.data(),
|
|
846
862
|
pin_values.data(), s.data());
|
|
847
|
-
for (
|
|
863
|
+
for (size_t i = 0; i < s.size(); ++i) {
|
|
848
864
|
if (s[i].IsNotFound()) {
|
|
849
865
|
result[i] = "NOT_FOUND";
|
|
850
866
|
} else if (!s[i].ok()) {
|
|
851
867
|
result[i] = s[i].ToString();
|
|
852
868
|
} else {
|
|
853
869
|
result[i].assign(pin_values[i].data(), pin_values[i].size());
|
|
870
|
+
// Increase likelihood of detecting potential use-after-free bugs with
|
|
871
|
+
// PinnableSlices tracking the same resource
|
|
872
|
+
pin_values[i].Reset();
|
|
854
873
|
}
|
|
855
874
|
}
|
|
856
875
|
}
|
|
@@ -858,28 +877,32 @@ std::vector<std::string> DBTestBase::MultiGet(std::vector<int> cfs,
|
|
|
858
877
|
}
|
|
859
878
|
|
|
860
879
|
std::vector<std::string> DBTestBase::MultiGet(const std::vector<std::string>& k,
|
|
861
|
-
const Snapshot* snapshot
|
|
880
|
+
const Snapshot* snapshot,
|
|
881
|
+
const bool async) {
|
|
862
882
|
ReadOptions options;
|
|
863
883
|
options.verify_checksums = true;
|
|
864
884
|
options.snapshot = snapshot;
|
|
885
|
+
options.async_io = async;
|
|
865
886
|
std::vector<Slice> keys;
|
|
866
|
-
std::vector<std::string> result;
|
|
887
|
+
std::vector<std::string> result(k.size());
|
|
867
888
|
std::vector<Status> statuses(k.size());
|
|
868
889
|
std::vector<PinnableSlice> pin_values(k.size());
|
|
869
890
|
|
|
870
|
-
for (
|
|
891
|
+
for (size_t i = 0; i < k.size(); ++i) {
|
|
871
892
|
keys.push_back(k[i]);
|
|
872
893
|
}
|
|
873
894
|
db_->MultiGet(options, dbfull()->DefaultColumnFamily(), keys.size(),
|
|
874
895
|
keys.data(), pin_values.data(), statuses.data());
|
|
875
|
-
|
|
876
|
-
for (auto iter = result.begin(); iter != result.end(); ++iter) {
|
|
877
|
-
iter->assign(pin_values[iter - result.begin()].data(),
|
|
878
|
-
pin_values[iter - result.begin()].size());
|
|
879
|
-
}
|
|
880
|
-
for (unsigned int i = 0; i < statuses.size(); ++i) {
|
|
896
|
+
for (size_t i = 0; i < statuses.size(); ++i) {
|
|
881
897
|
if (statuses[i].IsNotFound()) {
|
|
882
898
|
result[i] = "NOT_FOUND";
|
|
899
|
+
} else if (!statuses[i].ok()) {
|
|
900
|
+
result[i] = statuses[i].ToString();
|
|
901
|
+
} else {
|
|
902
|
+
result[i].assign(pin_values[i].data(), pin_values[i].size());
|
|
903
|
+
// Increase likelihood of detecting potential use-after-free bugs with
|
|
904
|
+
// PinnableSlices tracking the same resource
|
|
905
|
+
pin_values[i].Reset();
|
|
883
906
|
}
|
|
884
907
|
}
|
|
885
908
|
return result;
|
|
@@ -1068,12 +1091,12 @@ int DBTestBase::NumTableFilesAtLevel(int level, int cf) {
|
|
|
1068
1091
|
std::string property;
|
|
1069
1092
|
if (cf == 0) {
|
|
1070
1093
|
// default cfd
|
|
1071
|
-
EXPECT_TRUE(db_->GetProperty(
|
|
1072
|
-
|
|
1094
|
+
EXPECT_TRUE(db_->GetProperty(
|
|
1095
|
+
"rocksdb.num-files-at-level" + std::to_string(level), &property));
|
|
1073
1096
|
} else {
|
|
1074
|
-
EXPECT_TRUE(db_->GetProperty(
|
|
1075
|
-
|
|
1076
|
-
|
|
1097
|
+
EXPECT_TRUE(db_->GetProperty(
|
|
1098
|
+
handles_[cf], "rocksdb.num-files-at-level" + std::to_string(level),
|
|
1099
|
+
&property));
|
|
1077
1100
|
}
|
|
1078
1101
|
return atoi(property.c_str());
|
|
1079
1102
|
}
|
|
@@ -1083,10 +1106,12 @@ double DBTestBase::CompressionRatioAtLevel(int level, int cf) {
|
|
|
1083
1106
|
if (cf == 0) {
|
|
1084
1107
|
// default cfd
|
|
1085
1108
|
EXPECT_TRUE(db_->GetProperty(
|
|
1086
|
-
"rocksdb.compression-ratio-at-level" +
|
|
1109
|
+
"rocksdb.compression-ratio-at-level" + std::to_string(level),
|
|
1110
|
+
&property));
|
|
1087
1111
|
} else {
|
|
1088
1112
|
EXPECT_TRUE(db_->GetProperty(
|
|
1089
|
-
handles_[cf],
|
|
1113
|
+
handles_[cf],
|
|
1114
|
+
"rocksdb.compression-ratio-at-level" + std::to_string(level),
|
|
1090
1115
|
&property));
|
|
1091
1116
|
}
|
|
1092
1117
|
return std::stod(property);
|
|
@@ -1663,4 +1688,61 @@ void VerifySstUniqueIds(const TablePropertiesCollection& props) {
|
|
|
1663
1688
|
}
|
|
1664
1689
|
}
|
|
1665
1690
|
|
|
1691
|
+
template <CacheEntryRole R>
|
|
1692
|
+
TargetCacheChargeTrackingCache<R>::TargetCacheChargeTrackingCache(
|
|
1693
|
+
std::shared_ptr<Cache> target)
|
|
1694
|
+
: CacheWrapper(std::move(target)),
|
|
1695
|
+
cur_cache_charge_(0),
|
|
1696
|
+
cache_charge_peak_(0),
|
|
1697
|
+
cache_charge_increment_(0),
|
|
1698
|
+
last_peak_tracked_(false),
|
|
1699
|
+
cache_charge_increments_sum_(0) {}
|
|
1700
|
+
|
|
1701
|
+
template <CacheEntryRole R>
|
|
1702
|
+
Status TargetCacheChargeTrackingCache<R>::Insert(
|
|
1703
|
+
const Slice& key, void* value, size_t charge,
|
|
1704
|
+
void (*deleter)(const Slice& key, void* value), Handle** handle,
|
|
1705
|
+
Priority priority) {
|
|
1706
|
+
Status s = target_->Insert(key, value, charge, deleter, handle, priority);
|
|
1707
|
+
if (deleter == kNoopDeleter) {
|
|
1708
|
+
if (last_peak_tracked_) {
|
|
1709
|
+
cache_charge_peak_ = 0;
|
|
1710
|
+
cache_charge_increment_ = 0;
|
|
1711
|
+
last_peak_tracked_ = false;
|
|
1712
|
+
}
|
|
1713
|
+
if (s.ok()) {
|
|
1714
|
+
cur_cache_charge_ += charge;
|
|
1715
|
+
}
|
|
1716
|
+
cache_charge_peak_ = std::max(cache_charge_peak_, cur_cache_charge_);
|
|
1717
|
+
cache_charge_increment_ += charge;
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
return s;
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
template <CacheEntryRole R>
|
|
1724
|
+
bool TargetCacheChargeTrackingCache<R>::Release(Handle* handle,
|
|
1725
|
+
bool erase_if_last_ref) {
|
|
1726
|
+
auto deleter = GetDeleter(handle);
|
|
1727
|
+
if (deleter == kNoopDeleter) {
|
|
1728
|
+
if (!last_peak_tracked_) {
|
|
1729
|
+
cache_charge_peaks_.push_back(cache_charge_peak_);
|
|
1730
|
+
cache_charge_increments_sum_ += cache_charge_increment_;
|
|
1731
|
+
last_peak_tracked_ = true;
|
|
1732
|
+
}
|
|
1733
|
+
cur_cache_charge_ -= GetCharge(handle);
|
|
1734
|
+
}
|
|
1735
|
+
bool is_successful = target_->Release(handle, erase_if_last_ref);
|
|
1736
|
+
return is_successful;
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
template <CacheEntryRole R>
|
|
1740
|
+
const Cache::DeleterFn TargetCacheChargeTrackingCache<R>::kNoopDeleter =
|
|
1741
|
+
CacheReservationManagerImpl<R>::TEST_GetNoopDeleterForRole();
|
|
1742
|
+
|
|
1743
|
+
template class TargetCacheChargeTrackingCache<
|
|
1744
|
+
CacheEntryRole::kFilterConstruction>;
|
|
1745
|
+
template class TargetCacheChargeTrackingCache<
|
|
1746
|
+
CacheEntryRole::kBlockBasedTableReader>;
|
|
1747
|
+
|
|
1666
1748
|
} // namespace ROCKSDB_NAMESPACE
|