@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
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
#include "cache/cache_entry_roles.h"
|
|
15
15
|
#include "cache/cache_key.h"
|
|
16
|
+
#include "cache/fast_lru_cache.h"
|
|
16
17
|
#include "cache/lru_cache.h"
|
|
17
18
|
#include "db/column_family.h"
|
|
18
19
|
#include "db/db_impl/db_impl.h"
|
|
@@ -75,7 +76,7 @@ class DBBlockCacheTest : public DBTestBase {
|
|
|
75
76
|
void InitTable(const Options& /*options*/) {
|
|
76
77
|
std::string value(kValueSize, 'a');
|
|
77
78
|
for (size_t i = 0; i < kNumBlocks; i++) {
|
|
78
|
-
ASSERT_OK(Put(
|
|
79
|
+
ASSERT_OK(Put(std::to_string(i), value.c_str()));
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
|
|
@@ -204,7 +205,7 @@ TEST_F(DBBlockCacheTest, IteratorBlockCacheUsage) {
|
|
|
204
205
|
|
|
205
206
|
ASSERT_EQ(0, cache->GetUsage());
|
|
206
207
|
iter = db_->NewIterator(read_options);
|
|
207
|
-
iter->Seek(
|
|
208
|
+
iter->Seek(std::to_string(0));
|
|
208
209
|
ASSERT_LT(0, cache->GetUsage());
|
|
209
210
|
delete iter;
|
|
210
211
|
iter = nullptr;
|
|
@@ -235,7 +236,7 @@ TEST_F(DBBlockCacheTest, TestWithoutCompressedBlockCache) {
|
|
|
235
236
|
// Load blocks into cache.
|
|
236
237
|
for (size_t i = 0; i + 1 < kNumBlocks; i++) {
|
|
237
238
|
iter = db_->NewIterator(read_options);
|
|
238
|
-
iter->Seek(
|
|
239
|
+
iter->Seek(std::to_string(i));
|
|
239
240
|
ASSERT_OK(iter->status());
|
|
240
241
|
CheckCacheCounters(options, 1, 0, 1, 0);
|
|
241
242
|
iterators[i].reset(iter);
|
|
@@ -248,7 +249,7 @@ TEST_F(DBBlockCacheTest, TestWithoutCompressedBlockCache) {
|
|
|
248
249
|
// Test with strict capacity limit.
|
|
249
250
|
cache->SetStrictCapacityLimit(true);
|
|
250
251
|
iter = db_->NewIterator(read_options);
|
|
251
|
-
iter->Seek(
|
|
252
|
+
iter->Seek(std::to_string(kNumBlocks - 1));
|
|
252
253
|
ASSERT_TRUE(iter->status().IsIncomplete());
|
|
253
254
|
CheckCacheCounters(options, 1, 0, 0, 1);
|
|
254
255
|
delete iter;
|
|
@@ -262,7 +263,7 @@ TEST_F(DBBlockCacheTest, TestWithoutCompressedBlockCache) {
|
|
|
262
263
|
ASSERT_EQ(0, cache->GetPinnedUsage());
|
|
263
264
|
for (size_t i = 0; i + 1 < kNumBlocks; i++) {
|
|
264
265
|
iter = db_->NewIterator(read_options);
|
|
265
|
-
iter->Seek(
|
|
266
|
+
iter->Seek(std::to_string(i));
|
|
266
267
|
ASSERT_OK(iter->status());
|
|
267
268
|
CheckCacheCounters(options, 0, 1, 0, 0);
|
|
268
269
|
iterators[i].reset(iter);
|
|
@@ -288,7 +289,7 @@ TEST_F(DBBlockCacheTest, TestWithCompressedBlockCache) {
|
|
|
288
289
|
|
|
289
290
|
std::string value(kValueSize, 'a');
|
|
290
291
|
for (size_t i = 0; i < kNumBlocks; i++) {
|
|
291
|
-
ASSERT_OK(Put(
|
|
292
|
+
ASSERT_OK(Put(std::to_string(i), value));
|
|
292
293
|
ASSERT_OK(Flush());
|
|
293
294
|
}
|
|
294
295
|
|
|
@@ -312,7 +313,7 @@ TEST_F(DBBlockCacheTest, TestWithCompressedBlockCache) {
|
|
|
312
313
|
|
|
313
314
|
// Load blocks into cache.
|
|
314
315
|
for (size_t i = 0; i < kNumBlocks - 1; i++) {
|
|
315
|
-
ASSERT_EQ(value, Get(
|
|
316
|
+
ASSERT_EQ(value, Get(std::to_string(i)));
|
|
316
317
|
CheckCacheCounters(options, 1, 0, 1, 0);
|
|
317
318
|
CheckCompressedCacheCounters(options, 1, 0, 1, 0);
|
|
318
319
|
}
|
|
@@ -333,7 +334,7 @@ TEST_F(DBBlockCacheTest, TestWithCompressedBlockCache) {
|
|
|
333
334
|
|
|
334
335
|
// Load last key block.
|
|
335
336
|
ASSERT_EQ("Result incomplete: Insert failed due to LRU cache being full.",
|
|
336
|
-
Get(
|
|
337
|
+
Get(std::to_string(kNumBlocks - 1)));
|
|
337
338
|
// Failure will also record the miss counter.
|
|
338
339
|
CheckCacheCounters(options, 1, 0, 0, 1);
|
|
339
340
|
CheckCompressedCacheCounters(options, 1, 0, 1, 0);
|
|
@@ -342,7 +343,7 @@ TEST_F(DBBlockCacheTest, TestWithCompressedBlockCache) {
|
|
|
342
343
|
// cache and load into block cache.
|
|
343
344
|
cache->SetStrictCapacityLimit(false);
|
|
344
345
|
// Load last key block.
|
|
345
|
-
ASSERT_EQ(value, Get(
|
|
346
|
+
ASSERT_EQ(value, Get(std::to_string(kNumBlocks - 1)));
|
|
346
347
|
CheckCacheCounters(options, 1, 0, 1, 0);
|
|
347
348
|
CheckCompressedCacheCounters(options, 0, 1, 0, 0);
|
|
348
349
|
}
|
|
@@ -567,7 +568,7 @@ TEST_F(DBBlockCacheTest, FillCacheAndIterateDB) {
|
|
|
567
568
|
Iterator* iter = nullptr;
|
|
568
569
|
|
|
569
570
|
iter = db_->NewIterator(read_options);
|
|
570
|
-
iter->Seek(
|
|
571
|
+
iter->Seek(std::to_string(0));
|
|
571
572
|
while (iter->Valid()) {
|
|
572
573
|
iter->Next();
|
|
573
574
|
}
|
|
@@ -645,10 +646,10 @@ TEST_F(DBBlockCacheTest, WarmCacheWithDataBlocksDuringFlush) {
|
|
|
645
646
|
|
|
646
647
|
std::string value(kValueSize, 'a');
|
|
647
648
|
for (size_t i = 1; i <= kNumBlocks; i++) {
|
|
648
|
-
ASSERT_OK(Put(
|
|
649
|
+
ASSERT_OK(Put(std::to_string(i), value));
|
|
649
650
|
ASSERT_OK(Flush());
|
|
650
651
|
ASSERT_EQ(i, options.statistics->getTickerCount(BLOCK_CACHE_DATA_ADD));
|
|
651
|
-
ASSERT_EQ(value, Get(
|
|
652
|
+
ASSERT_EQ(value, Get(std::to_string(i)));
|
|
652
653
|
ASSERT_EQ(0, options.statistics->getTickerCount(BLOCK_CACHE_DATA_MISS));
|
|
653
654
|
ASSERT_EQ(i, options.statistics->getTickerCount(BLOCK_CACHE_DATA_HIT));
|
|
654
655
|
}
|
|
@@ -705,7 +706,7 @@ TEST_P(DBBlockCacheTest1, WarmCacheWithBlocksDuringFlush) {
|
|
|
705
706
|
|
|
706
707
|
std::string value(kValueSize, 'a');
|
|
707
708
|
for (size_t i = 1; i <= kNumBlocks; i++) {
|
|
708
|
-
ASSERT_OK(Put(
|
|
709
|
+
ASSERT_OK(Put(std::to_string(i), value));
|
|
709
710
|
ASSERT_OK(Flush());
|
|
710
711
|
ASSERT_EQ(i, options.statistics->getTickerCount(BLOCK_CACHE_DATA_ADD));
|
|
711
712
|
if (filter_type == 1) {
|
|
@@ -717,7 +718,7 @@ TEST_P(DBBlockCacheTest1, WarmCacheWithBlocksDuringFlush) {
|
|
|
717
718
|
ASSERT_EQ(i, options.statistics->getTickerCount(BLOCK_CACHE_INDEX_ADD));
|
|
718
719
|
ASSERT_EQ(i, options.statistics->getTickerCount(BLOCK_CACHE_FILTER_ADD));
|
|
719
720
|
}
|
|
720
|
-
ASSERT_EQ(value, Get(
|
|
721
|
+
ASSERT_EQ(value, Get(std::to_string(i)));
|
|
721
722
|
|
|
722
723
|
ASSERT_EQ(0, options.statistics->getTickerCount(BLOCK_CACHE_DATA_MISS));
|
|
723
724
|
ASSERT_EQ(i, options.statistics->getTickerCount(BLOCK_CACHE_DATA_HIT));
|
|
@@ -772,12 +773,12 @@ TEST_F(DBBlockCacheTest, DynamicallyWarmCacheDuringFlush) {
|
|
|
772
773
|
std::string value(kValueSize, 'a');
|
|
773
774
|
|
|
774
775
|
for (size_t i = 1; i <= 5; i++) {
|
|
775
|
-
ASSERT_OK(Put(
|
|
776
|
+
ASSERT_OK(Put(std::to_string(i), value));
|
|
776
777
|
ASSERT_OK(Flush());
|
|
777
778
|
ASSERT_EQ(1,
|
|
778
779
|
options.statistics->getAndResetTickerCount(BLOCK_CACHE_DATA_ADD));
|
|
779
780
|
|
|
780
|
-
ASSERT_EQ(value, Get(
|
|
781
|
+
ASSERT_EQ(value, Get(std::to_string(i)));
|
|
781
782
|
ASSERT_EQ(0,
|
|
782
783
|
options.statistics->getAndResetTickerCount(BLOCK_CACHE_DATA_ADD));
|
|
783
784
|
ASSERT_EQ(
|
|
@@ -790,12 +791,12 @@ TEST_F(DBBlockCacheTest, DynamicallyWarmCacheDuringFlush) {
|
|
|
790
791
|
{{"block_based_table_factory", "{prepopulate_block_cache=kDisable;}"}}));
|
|
791
792
|
|
|
792
793
|
for (size_t i = 6; i <= kNumBlocks; i++) {
|
|
793
|
-
ASSERT_OK(Put(
|
|
794
|
+
ASSERT_OK(Put(std::to_string(i), value));
|
|
794
795
|
ASSERT_OK(Flush());
|
|
795
796
|
ASSERT_EQ(0,
|
|
796
797
|
options.statistics->getAndResetTickerCount(BLOCK_CACHE_DATA_ADD));
|
|
797
798
|
|
|
798
|
-
ASSERT_EQ(value, Get(
|
|
799
|
+
ASSERT_EQ(value, Get(std::to_string(i)));
|
|
799
800
|
ASSERT_EQ(1,
|
|
800
801
|
options.statistics->getAndResetTickerCount(BLOCK_CACHE_DATA_ADD));
|
|
801
802
|
ASSERT_EQ(
|
|
@@ -934,7 +935,8 @@ TEST_F(DBBlockCacheTest, AddRedundantStats) {
|
|
|
934
935
|
int iterations_tested = 0;
|
|
935
936
|
for (std::shared_ptr<Cache> base_cache :
|
|
936
937
|
{NewLRUCache(capacity, num_shard_bits),
|
|
937
|
-
NewClockCache(capacity, num_shard_bits)
|
|
938
|
+
NewClockCache(capacity, num_shard_bits),
|
|
939
|
+
NewFastLRUCache(capacity, num_shard_bits)}) {
|
|
938
940
|
if (!base_cache) {
|
|
939
941
|
// Skip clock cache when not supported
|
|
940
942
|
continue;
|
|
@@ -1288,7 +1290,8 @@ TEST_F(DBBlockCacheTest, CacheEntryRoleStats) {
|
|
|
1288
1290
|
int iterations_tested = 0;
|
|
1289
1291
|
for (bool partition : {false, true}) {
|
|
1290
1292
|
for (std::shared_ptr<Cache> cache :
|
|
1291
|
-
{NewLRUCache(capacity), NewClockCache(capacity)
|
|
1293
|
+
{NewLRUCache(capacity), NewClockCache(capacity),
|
|
1294
|
+
NewFastLRUCache(capacity)}) {
|
|
1292
1295
|
if (!cache) {
|
|
1293
1296
|
// Skip clock cache when not supported
|
|
1294
1297
|
continue;
|
|
@@ -1406,7 +1409,7 @@ TEST_F(DBBlockCacheTest, CacheEntryRoleStats) {
|
|
|
1406
1409
|
|
|
1407
1410
|
for (size_t i = 0; i < kNumCacheEntryRoles; ++i) {
|
|
1408
1411
|
auto role = static_cast<CacheEntryRole>(i);
|
|
1409
|
-
EXPECT_EQ(
|
|
1412
|
+
EXPECT_EQ(std::to_string(expected[i]),
|
|
1410
1413
|
values[BlockCacheEntryStatsMapKeys::EntryCount(role)]);
|
|
1411
1414
|
}
|
|
1412
1415
|
|
|
@@ -1419,7 +1422,7 @@ TEST_F(DBBlockCacheTest, CacheEntryRoleStats) {
|
|
|
1419
1422
|
// re-scanning stats, but not totally aggressive.
|
|
1420
1423
|
// Within some time window, we will get cached entry stats
|
|
1421
1424
|
env_->MockSleepForSeconds(1);
|
|
1422
|
-
EXPECT_EQ(
|
|
1425
|
+
EXPECT_EQ(std::to_string(prev_expected[static_cast<size_t>(
|
|
1423
1426
|
CacheEntryRole::kWriteBuffer)]),
|
|
1424
1427
|
values[BlockCacheEntryStatsMapKeys::EntryCount(
|
|
1425
1428
|
CacheEntryRole::kWriteBuffer)]);
|
|
@@ -1429,7 +1432,7 @@ TEST_F(DBBlockCacheTest, CacheEntryRoleStats) {
|
|
|
1429
1432
|
ASSERT_TRUE(db_->GetMapProperty(DB::Properties::kBlockCacheEntryStats,
|
|
1430
1433
|
&values));
|
|
1431
1434
|
EXPECT_EQ(
|
|
1432
|
-
|
|
1435
|
+
std::to_string(
|
|
1433
1436
|
expected[static_cast<size_t>(CacheEntryRole::kWriteBuffer)]),
|
|
1434
1437
|
values[BlockCacheEntryStatsMapKeys::EntryCount(
|
|
1435
1438
|
CacheEntryRole::kWriteBuffer)]);
|
|
@@ -1637,7 +1640,7 @@ TEST_P(DBBlockCacheKeyTest, StableCacheKeys) {
|
|
|
1637
1640
|
SstFileWriter sst_file_writer(EnvOptions(), options);
|
|
1638
1641
|
std::vector<std::string> external;
|
|
1639
1642
|
for (int i = 0; i < 2; ++i) {
|
|
1640
|
-
std::string f = dbname_ + "/external" +
|
|
1643
|
+
std::string f = dbname_ + "/external" + std::to_string(i) + ".sst";
|
|
1641
1644
|
external.push_back(f);
|
|
1642
1645
|
ASSERT_OK(sst_file_writer.Open(f));
|
|
1643
1646
|
ASSERT_OK(sst_file_writer.Put(Key(key_count), "abc"));
|
|
@@ -1721,7 +1724,7 @@ class CacheKeyTest : public testing::Test {
|
|
|
1721
1724
|
// Like SemiStructuredUniqueIdGen::GenerateNext
|
|
1722
1725
|
tp_.db_session_id = EncodeSessionId(base_session_upper_,
|
|
1723
1726
|
base_session_lower_ ^ session_counter_);
|
|
1724
|
-
tp_.db_id =
|
|
1727
|
+
tp_.db_id = std::to_string(db_id_);
|
|
1725
1728
|
tp_.orig_file_number = file_number_;
|
|
1726
1729
|
bool is_stable;
|
|
1727
1730
|
std::string cur_session_id = ""; // ignored
|
|
@@ -111,6 +111,7 @@ TEST_P(DBBloomFilterTestDefFormatVersion, KeyMayExist) {
|
|
|
111
111
|
options_override.filter_policy = Create(20, bfp_impl_);
|
|
112
112
|
options_override.partition_filters = partition_filters_;
|
|
113
113
|
options_override.metadata_block_size = 32;
|
|
114
|
+
options_override.full_block_cache = true;
|
|
114
115
|
Options options = CurrentOptions(options_override);
|
|
115
116
|
if (partition_filters_) {
|
|
116
117
|
auto* table_options =
|
|
@@ -857,7 +858,7 @@ TEST_F(DBBloomFilterTest, BloomFilterCompatibility) {
|
|
|
857
858
|
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
858
859
|
Reopen(options);
|
|
859
860
|
|
|
860
|
-
std::string prefix =
|
|
861
|
+
std::string prefix = std::to_string(i) + "_";
|
|
861
862
|
ASSERT_OK(Put(prefix + "A", "val"));
|
|
862
863
|
ASSERT_OK(Put(prefix + "Z", "val"));
|
|
863
864
|
ASSERT_OK(Flush());
|
|
@@ -872,7 +873,7 @@ TEST_F(DBBloomFilterTest, BloomFilterCompatibility) {
|
|
|
872
873
|
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
873
874
|
Reopen(options);
|
|
874
875
|
for (size_t j = 0; j < kCompatibilityConfigs.size(); ++j) {
|
|
875
|
-
std::string prefix =
|
|
876
|
+
std::string prefix = std::to_string(j) + "_";
|
|
876
877
|
ASSERT_EQ("val", Get(prefix + "A")); // Filter positive
|
|
877
878
|
ASSERT_EQ("val", Get(prefix + "Z")); // Filter positive
|
|
878
879
|
// Filter negative, with high probability
|
|
@@ -885,103 +886,27 @@ TEST_F(DBBloomFilterTest, BloomFilterCompatibility) {
|
|
|
885
886
|
}
|
|
886
887
|
}
|
|
887
888
|
|
|
888
|
-
/*
|
|
889
|
-
* A cache wrapper that tracks peaks and increments of filter
|
|
890
|
-
* construction cache reservation.
|
|
891
|
-
* p0
|
|
892
|
-
* / \ p1
|
|
893
|
-
* / \ /\
|
|
894
|
-
* / \/ \
|
|
895
|
-
* a / b \
|
|
896
|
-
* peaks = {p0, p1}
|
|
897
|
-
* increments = {p1-a, p2-b}
|
|
898
|
-
*/
|
|
899
|
-
class FilterConstructResPeakTrackingCache : public CacheWrapper {
|
|
900
|
-
public:
|
|
901
|
-
explicit FilterConstructResPeakTrackingCache(std::shared_ptr<Cache> target)
|
|
902
|
-
: CacheWrapper(std::move(target)),
|
|
903
|
-
cur_cache_res_(0),
|
|
904
|
-
cache_res_peak_(0),
|
|
905
|
-
cache_res_increment_(0),
|
|
906
|
-
last_peak_tracked_(false),
|
|
907
|
-
cache_res_increments_sum_(0) {}
|
|
908
|
-
|
|
909
|
-
using Cache::Insert;
|
|
910
|
-
Status Insert(const Slice& key, void* value, size_t charge,
|
|
911
|
-
void (*deleter)(const Slice& key, void* value),
|
|
912
|
-
Handle** handle = nullptr,
|
|
913
|
-
Priority priority = Priority::LOW) override {
|
|
914
|
-
Status s = target_->Insert(key, value, charge, deleter, handle, priority);
|
|
915
|
-
if (deleter == kNoopDeleterForFilterConstruction) {
|
|
916
|
-
if (last_peak_tracked_) {
|
|
917
|
-
cache_res_peak_ = 0;
|
|
918
|
-
cache_res_increment_ = 0;
|
|
919
|
-
last_peak_tracked_ = false;
|
|
920
|
-
}
|
|
921
|
-
cur_cache_res_ += charge;
|
|
922
|
-
cache_res_peak_ = std::max(cache_res_peak_, cur_cache_res_);
|
|
923
|
-
cache_res_increment_ += charge;
|
|
924
|
-
}
|
|
925
|
-
return s;
|
|
926
|
-
}
|
|
927
|
-
|
|
928
|
-
using Cache::Release;
|
|
929
|
-
bool Release(Handle* handle, bool erase_if_last_ref = false) override {
|
|
930
|
-
auto deleter = GetDeleter(handle);
|
|
931
|
-
if (deleter == kNoopDeleterForFilterConstruction) {
|
|
932
|
-
if (!last_peak_tracked_) {
|
|
933
|
-
cache_res_peaks_.push_back(cache_res_peak_);
|
|
934
|
-
cache_res_increments_sum_ += cache_res_increment_;
|
|
935
|
-
last_peak_tracked_ = true;
|
|
936
|
-
}
|
|
937
|
-
cur_cache_res_ -= GetCharge(handle);
|
|
938
|
-
}
|
|
939
|
-
bool is_successful = target_->Release(handle, erase_if_last_ref);
|
|
940
|
-
return is_successful;
|
|
941
|
-
}
|
|
942
|
-
|
|
943
|
-
std::deque<std::size_t> GetReservedCachePeaks() { return cache_res_peaks_; }
|
|
944
|
-
|
|
945
|
-
std::size_t GetReservedCacheIncrementSum() {
|
|
946
|
-
return cache_res_increments_sum_;
|
|
947
|
-
}
|
|
948
|
-
|
|
949
|
-
private:
|
|
950
|
-
static const Cache::DeleterFn kNoopDeleterForFilterConstruction;
|
|
951
|
-
|
|
952
|
-
std::size_t cur_cache_res_;
|
|
953
|
-
std::size_t cache_res_peak_;
|
|
954
|
-
std::size_t cache_res_increment_;
|
|
955
|
-
bool last_peak_tracked_;
|
|
956
|
-
std::deque<std::size_t> cache_res_peaks_;
|
|
957
|
-
std::size_t cache_res_increments_sum_;
|
|
958
|
-
};
|
|
959
|
-
|
|
960
|
-
const Cache::DeleterFn
|
|
961
|
-
FilterConstructResPeakTrackingCache::kNoopDeleterForFilterConstruction =
|
|
962
|
-
CacheReservationManagerImpl<
|
|
963
|
-
CacheEntryRole::kFilterConstruction>::TEST_GetNoopDeleterForRole();
|
|
964
|
-
|
|
965
889
|
// To align with the type of hash entry being reserved in implementation.
|
|
966
890
|
using FilterConstructionReserveMemoryHash = uint64_t;
|
|
967
891
|
|
|
968
|
-
class
|
|
892
|
+
class ChargeFilterConstructionTestWithParam
|
|
969
893
|
: public DBTestBase,
|
|
970
|
-
public testing::WithParamInterface<
|
|
971
|
-
|
|
894
|
+
public testing::WithParamInterface<std::tuple<
|
|
895
|
+
CacheEntryRoleOptions::Decision, std::string, bool, bool>> {
|
|
972
896
|
public:
|
|
973
|
-
|
|
897
|
+
ChargeFilterConstructionTestWithParam()
|
|
974
898
|
: DBTestBase("db_bloom_filter_tests",
|
|
975
899
|
/*env_do_fsync=*/true),
|
|
976
900
|
num_key_(0),
|
|
977
|
-
|
|
901
|
+
charge_filter_construction_(std::get<0>(GetParam())),
|
|
978
902
|
policy_(std::get<1>(GetParam())),
|
|
979
903
|
partition_filters_(std::get<2>(GetParam())),
|
|
980
904
|
detect_filter_construct_corruption_(std::get<3>(GetParam())) {
|
|
981
|
-
if (
|
|
982
|
-
|
|
905
|
+
if (charge_filter_construction_ ==
|
|
906
|
+
CacheEntryRoleOptions::Decision::kDisabled ||
|
|
907
|
+
policy_ == kDeprecatedBlock || policy_ == kLegacyBloom) {
|
|
983
908
|
// For these cases, we only interested in whether filter construction
|
|
984
|
-
// cache
|
|
909
|
+
// cache charging happens instead of its accuracy. Therefore we don't
|
|
985
910
|
// need many keys.
|
|
986
911
|
num_key_ = 5;
|
|
987
912
|
} else if (partition_filters_) {
|
|
@@ -996,11 +921,11 @@ class DBFilterConstructionReserveMemoryTestWithParam
|
|
|
996
921
|
sizeof(FilterConstructionReserveMemoryHash);
|
|
997
922
|
} else if (policy_ == kFastLocalBloom) {
|
|
998
923
|
// For Bloom Filter + FullFilter case, since we design the num_key_ to
|
|
999
|
-
// make hash entry cache
|
|
924
|
+
// make hash entry cache charging be a multiple of dummy entries, the
|
|
1000
925
|
// correct behavior of charging final filter on top of it will trigger at
|
|
1001
926
|
// least another dummy entry insertion. Therefore we can assert that
|
|
1002
927
|
// behavior and we don't need a large number of keys to verify we
|
|
1003
|
-
// indeed charge the final filter for cache
|
|
928
|
+
// indeed charge the final filter for in cache, even though final
|
|
1004
929
|
// filter is a lot smaller than hash entries.
|
|
1005
930
|
num_key_ = 1 *
|
|
1006
931
|
CacheReservationManagerImpl<
|
|
@@ -1010,7 +935,7 @@ class DBFilterConstructionReserveMemoryTestWithParam
|
|
|
1010
935
|
// For Ribbon Filter + FullFilter case, we need a large enough number of
|
|
1011
936
|
// keys so that charging final filter after releasing the hash entries
|
|
1012
937
|
// reservation will trigger at least another dummy entry (or equivalently
|
|
1013
|
-
// to saying, causing another peak in cache
|
|
938
|
+
// to saying, causing another peak in cache charging) as banding
|
|
1014
939
|
// reservation might not be a multiple of dummy entry.
|
|
1015
940
|
num_key_ = 12 *
|
|
1016
941
|
CacheReservationManagerImpl<
|
|
@@ -1026,7 +951,9 @@ class DBFilterConstructionReserveMemoryTestWithParam
|
|
|
1026
951
|
// calculation.
|
|
1027
952
|
constexpr std::size_t kCacheCapacity = 100 * 1024 * 1024;
|
|
1028
953
|
|
|
1029
|
-
table_options.
|
|
954
|
+
table_options.cache_usage_options.options_overrides.insert(
|
|
955
|
+
{CacheEntryRole::kFilterConstruction,
|
|
956
|
+
{/*.charged = */ charge_filter_construction_}});
|
|
1030
957
|
table_options.filter_policy = Create(10, policy_);
|
|
1031
958
|
table_options.partition_filters = partition_filters_;
|
|
1032
959
|
if (table_options.partition_filters) {
|
|
@@ -1044,7 +971,8 @@ class DBFilterConstructionReserveMemoryTestWithParam
|
|
|
1044
971
|
lo.capacity = kCacheCapacity;
|
|
1045
972
|
lo.num_shard_bits = 0; // 2^0 shard
|
|
1046
973
|
lo.strict_capacity_limit = true;
|
|
1047
|
-
cache_ = std::make_shared<
|
|
974
|
+
cache_ = std::make_shared<
|
|
975
|
+
TargetCacheChargeTrackingCache<CacheEntryRole::kFilterConstruction>>(
|
|
1048
976
|
(NewLRUCache(lo)));
|
|
1049
977
|
table_options.block_cache = cache_;
|
|
1050
978
|
|
|
@@ -1053,56 +981,73 @@ class DBFilterConstructionReserveMemoryTestWithParam
|
|
|
1053
981
|
|
|
1054
982
|
std::size_t GetNumKey() { return num_key_; }
|
|
1055
983
|
|
|
1056
|
-
|
|
984
|
+
CacheEntryRoleOptions::Decision ChargeFilterConstructMemory() {
|
|
985
|
+
return charge_filter_construction_;
|
|
986
|
+
}
|
|
1057
987
|
|
|
1058
988
|
std::string GetFilterPolicy() { return policy_; }
|
|
1059
989
|
|
|
1060
990
|
bool PartitionFilters() { return partition_filters_; }
|
|
1061
991
|
|
|
1062
|
-
std::shared_ptr<
|
|
1063
|
-
|
|
992
|
+
std::shared_ptr<
|
|
993
|
+
TargetCacheChargeTrackingCache<CacheEntryRole::kFilterConstruction>>
|
|
994
|
+
GetCache() {
|
|
1064
995
|
return cache_;
|
|
1065
996
|
}
|
|
1066
997
|
|
|
1067
998
|
private:
|
|
1068
999
|
std::size_t num_key_;
|
|
1069
|
-
|
|
1000
|
+
CacheEntryRoleOptions::Decision charge_filter_construction_;
|
|
1070
1001
|
std::string policy_;
|
|
1071
1002
|
bool partition_filters_;
|
|
1072
|
-
std::shared_ptr<
|
|
1003
|
+
std::shared_ptr<
|
|
1004
|
+
TargetCacheChargeTrackingCache<CacheEntryRole::kFilterConstruction>>
|
|
1005
|
+
cache_;
|
|
1073
1006
|
bool detect_filter_construct_corruption_;
|
|
1074
1007
|
};
|
|
1075
1008
|
|
|
1076
1009
|
INSTANTIATE_TEST_CASE_P(
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
::testing::Values(
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1010
|
+
ChargeFilterConstructionTestWithParam,
|
|
1011
|
+
ChargeFilterConstructionTestWithParam,
|
|
1012
|
+
::testing::Values(
|
|
1013
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kDisabled,
|
|
1014
|
+
kFastLocalBloom, false, false),
|
|
1015
|
+
|
|
1016
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kEnabled,
|
|
1017
|
+
kFastLocalBloom, false, false),
|
|
1018
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kEnabled,
|
|
1019
|
+
kFastLocalBloom, false, true),
|
|
1020
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kEnabled,
|
|
1021
|
+
kFastLocalBloom, true, false),
|
|
1022
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kEnabled,
|
|
1023
|
+
kFastLocalBloom, true, true),
|
|
1024
|
+
|
|
1025
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kEnabled,
|
|
1026
|
+
kStandard128Ribbon, false, false),
|
|
1027
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kEnabled,
|
|
1028
|
+
kStandard128Ribbon, false, true),
|
|
1029
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kEnabled,
|
|
1030
|
+
kStandard128Ribbon, true, false),
|
|
1031
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kEnabled,
|
|
1032
|
+
kStandard128Ribbon, true, true),
|
|
1033
|
+
|
|
1034
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kEnabled,
|
|
1035
|
+
kDeprecatedBlock, false, false),
|
|
1036
|
+
std::make_tuple(CacheEntryRoleOptions::Decision::kEnabled, kLegacyBloom,
|
|
1037
|
+
false, false)));
|
|
1093
1038
|
|
|
1094
1039
|
// TODO: Speed up this test, and reduce disk space usage (~700MB)
|
|
1095
1040
|
// The current test inserts many keys (on the scale of dummy entry size)
|
|
1096
1041
|
// in order to make small memory user (e.g, final filter, partitioned hash
|
|
1097
1042
|
// entries/filter/banding) , which is proportional to the number of
|
|
1098
|
-
// keys, big enough so that its cache
|
|
1043
|
+
// keys, big enough so that its cache charging triggers dummy entry insertion
|
|
1099
1044
|
// and becomes observable in the test.
|
|
1100
1045
|
//
|
|
1101
1046
|
// However, inserting that many keys slows down this test and leaves future
|
|
1102
1047
|
// developers an opportunity to speed it up.
|
|
1103
1048
|
//
|
|
1104
1049
|
// Possible approaches & challenges:
|
|
1105
|
-
// 1. Use sync point during cache
|
|
1050
|
+
// 1. Use sync point during cache charging of filter construction
|
|
1106
1051
|
//
|
|
1107
1052
|
// Benefit: It does not rely on triggering dummy entry insertion
|
|
1108
1053
|
// but the sync point to verify small memory user is charged correctly.
|
|
@@ -1111,7 +1056,7 @@ INSTANTIATE_TEST_CASE_P(
|
|
|
1111
1056
|
//
|
|
1112
1057
|
// 2. Make dummy entry size configurable and set it small in the test
|
|
1113
1058
|
//
|
|
1114
|
-
// Benefit: It increases the precision of cache
|
|
1059
|
+
// Benefit: It increases the precision of cache charging and therefore
|
|
1115
1060
|
// small memory usage can still trigger insertion of dummy entry.
|
|
1116
1061
|
//
|
|
1117
1062
|
// Challenge: change CacheReservationManager related APIs and a hack
|
|
@@ -1119,16 +1064,17 @@ INSTANTIATE_TEST_CASE_P(
|
|
|
1119
1064
|
// CacheReservationManager used in filter construction for testing
|
|
1120
1065
|
// since CacheReservationManager is not exposed at the high level.
|
|
1121
1066
|
//
|
|
1122
|
-
TEST_P(
|
|
1067
|
+
TEST_P(ChargeFilterConstructionTestWithParam, Basic) {
|
|
1123
1068
|
Options options = CurrentOptions();
|
|
1124
1069
|
// We set write_buffer_size big enough so that in the case where there is
|
|
1125
|
-
// filter construction cache
|
|
1070
|
+
// filter construction cache charging, flush won't be triggered before we
|
|
1126
1071
|
// manually trigger it for clean testing
|
|
1127
1072
|
options.write_buffer_size = 640 << 20;
|
|
1128
1073
|
BlockBasedTableOptions table_options = GetBlockBasedTableOptions();
|
|
1129
1074
|
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
1130
|
-
std::shared_ptr<
|
|
1131
|
-
|
|
1075
|
+
std::shared_ptr<
|
|
1076
|
+
TargetCacheChargeTrackingCache<CacheEntryRole::kFilterConstruction>>
|
|
1077
|
+
cache = GetCache();
|
|
1132
1078
|
options.create_if_missing = true;
|
|
1133
1079
|
// Disable auto compaction to prevent its unexpected side effect
|
|
1134
1080
|
// to the number of keys per partition designed by us in the test
|
|
@@ -1139,32 +1085,33 @@ TEST_P(DBFilterConstructionReserveMemoryTestWithParam, ReserveMemory) {
|
|
|
1139
1085
|
ASSERT_OK(Put(Key(i), Key(i)));
|
|
1140
1086
|
}
|
|
1141
1087
|
|
|
1142
|
-
ASSERT_EQ(cache->
|
|
1088
|
+
ASSERT_EQ(cache->GetChargedCacheIncrementSum(), 0)
|
|
1143
1089
|
<< "Flush was triggered too early in the test case with filter "
|
|
1144
|
-
"construction cache
|
|
1090
|
+
"construction cache charging - please make sure no flush triggered "
|
|
1145
1091
|
"during the key insertions above";
|
|
1146
1092
|
|
|
1147
1093
|
ASSERT_OK(Flush());
|
|
1148
1094
|
|
|
1149
|
-
bool
|
|
1095
|
+
bool charge_filter_construction = (ChargeFilterConstructMemory() ==
|
|
1096
|
+
CacheEntryRoleOptions::Decision::kEnabled);
|
|
1150
1097
|
std::string policy = GetFilterPolicy();
|
|
1151
1098
|
bool partition_filters = PartitionFilters();
|
|
1152
1099
|
bool detect_filter_construct_corruption =
|
|
1153
1100
|
table_options.detect_filter_construct_corruption;
|
|
1154
1101
|
|
|
1155
1102
|
std::deque<std::size_t> filter_construction_cache_res_peaks =
|
|
1156
|
-
cache->
|
|
1103
|
+
cache->GetChargedCachePeaks();
|
|
1157
1104
|
std::size_t filter_construction_cache_res_increments_sum =
|
|
1158
|
-
cache->
|
|
1105
|
+
cache->GetChargedCacheIncrementSum();
|
|
1159
1106
|
|
|
1160
|
-
if (!
|
|
1107
|
+
if (!charge_filter_construction) {
|
|
1161
1108
|
EXPECT_EQ(filter_construction_cache_res_peaks.size(), 0);
|
|
1162
1109
|
return;
|
|
1163
1110
|
}
|
|
1164
1111
|
|
|
1165
1112
|
if (policy == kDeprecatedBlock || policy == kLegacyBloom) {
|
|
1166
1113
|
EXPECT_EQ(filter_construction_cache_res_peaks.size(), 0)
|
|
1167
|
-
<< "There shouldn't be filter construction cache
|
|
1114
|
+
<< "There shouldn't be filter construction cache charging as this "
|
|
1168
1115
|
"feature does not support kDeprecatedBlock "
|
|
1169
1116
|
"nor kLegacyBloom";
|
|
1170
1117
|
return;
|
|
@@ -1238,14 +1185,14 @@ TEST_P(DBFilterConstructionReserveMemoryTestWithParam, ReserveMemory) {
|
|
|
1238
1185
|
*/
|
|
1239
1186
|
if (!partition_filters) {
|
|
1240
1187
|
EXPECT_EQ(filter_construction_cache_res_peaks.size(), 1)
|
|
1241
|
-
<< "Filter construction cache
|
|
1188
|
+
<< "Filter construction cache charging should have only 1 peak in "
|
|
1242
1189
|
"case: kFastLocalBloom + FullFilter";
|
|
1243
1190
|
std::size_t filter_construction_cache_res_peak =
|
|
1244
1191
|
filter_construction_cache_res_peaks[0];
|
|
1245
1192
|
EXPECT_GT(filter_construction_cache_res_peak,
|
|
1246
1193
|
predicted_hash_entries_cache_res)
|
|
1247
1194
|
<< "The testing number of hash entries is designed to make hash "
|
|
1248
|
-
"entries cache
|
|
1195
|
+
"entries cache charging be multiples of dummy entries"
|
|
1249
1196
|
" so the correct behavior of charging final filter on top of it"
|
|
1250
1197
|
" should've triggered at least another dummy entry insertion";
|
|
1251
1198
|
|
|
@@ -1258,7 +1205,7 @@ TEST_P(DBFilterConstructionReserveMemoryTestWithParam, ReserveMemory) {
|
|
|
1258
1205
|
return;
|
|
1259
1206
|
} else {
|
|
1260
1207
|
EXPECT_GE(filter_construction_cache_res_peaks.size(), 2)
|
|
1261
|
-
<< "Filter construction cache
|
|
1208
|
+
<< "Filter construction cache charging should have multiple peaks "
|
|
1262
1209
|
"in case: kFastLocalBloom + "
|
|
1263
1210
|
"PartitionedFilter";
|
|
1264
1211
|
std::size_t predicted_filter_construction_cache_res_increments_sum =
|
|
@@ -1365,11 +1312,11 @@ TEST_P(DBFilterConstructionReserveMemoryTestWithParam, ReserveMemory) {
|
|
|
1365
1312
|
CacheReservationManagerImpl<
|
|
1366
1313
|
CacheEntryRole::kFilterConstruction>::GetDummyEntrySize()),
|
|
1367
1314
|
1)
|
|
1368
|
-
<< "Final filter cache
|
|
1315
|
+
<< "Final filter cache charging too small for this test - please "
|
|
1369
1316
|
"increase the number of keys";
|
|
1370
1317
|
if (!detect_filter_construct_corruption) {
|
|
1371
1318
|
EXPECT_EQ(filter_construction_cache_res_peaks.size(), 2)
|
|
1372
|
-
<< "Filter construction cache
|
|
1319
|
+
<< "Filter construction cache charging should have 2 peaks in "
|
|
1373
1320
|
"case: kStandard128Ribbon + "
|
|
1374
1321
|
"FullFilter. "
|
|
1375
1322
|
"The second peak is resulted from charging the final filter "
|
|
@@ -1388,7 +1335,7 @@ TEST_P(DBFilterConstructionReserveMemoryTestWithParam, ReserveMemory) {
|
|
|
1388
1335
|
predicted_filter_construction_cache_res_peak * 1.1);
|
|
1389
1336
|
} else {
|
|
1390
1337
|
EXPECT_EQ(filter_construction_cache_res_peaks.size(), 1)
|
|
1391
|
-
<< "Filter construction cache
|
|
1338
|
+
<< "Filter construction cache charging should have 1 peaks in "
|
|
1392
1339
|
"case: kStandard128Ribbon + FullFilter "
|
|
1393
1340
|
"+ detect_filter_construct_corruption. "
|
|
1394
1341
|
"The previous second peak now disappears since we don't "
|
|
@@ -1409,13 +1356,13 @@ TEST_P(DBFilterConstructionReserveMemoryTestWithParam, ReserveMemory) {
|
|
|
1409
1356
|
} else {
|
|
1410
1357
|
if (!detect_filter_construct_corruption) {
|
|
1411
1358
|
EXPECT_GE(filter_construction_cache_res_peaks.size(), 3)
|
|
1412
|
-
<< "Filter construction cache
|
|
1359
|
+
<< "Filter construction cache charging should have more than 3 "
|
|
1413
1360
|
"peaks "
|
|
1414
1361
|
"in case: kStandard128Ribbon + "
|
|
1415
1362
|
"PartitionedFilter";
|
|
1416
1363
|
} else {
|
|
1417
1364
|
EXPECT_GE(filter_construction_cache_res_peaks.size(), 2)
|
|
1418
|
-
<< "Filter construction cache
|
|
1365
|
+
<< "Filter construction cache charging should have more than 2 "
|
|
1419
1366
|
"peaks "
|
|
1420
1367
|
"in case: kStandard128Ribbon + "
|
|
1421
1368
|
"PartitionedFilter + detect_filter_construct_corruption";
|
|
@@ -1712,11 +1659,11 @@ class TestingContextCustomFilterPolicy
|
|
|
1712
1659
|
test_report_ +=
|
|
1713
1660
|
OptionsHelper::compaction_style_to_string[context.compaction_style];
|
|
1714
1661
|
test_report_ += ",n=";
|
|
1715
|
-
test_report_ +=
|
|
1662
|
+
test_report_ += std::to_string(context.num_levels);
|
|
1716
1663
|
test_report_ += ",l=";
|
|
1717
|
-
test_report_ +=
|
|
1664
|
+
test_report_ += std::to_string(context.level_at_creation);
|
|
1718
1665
|
test_report_ += ",b=";
|
|
1719
|
-
test_report_ +=
|
|
1666
|
+
test_report_ += std::to_string(int{context.is_bottommost});
|
|
1720
1667
|
test_report_ += ",r=";
|
|
1721
1668
|
test_report_ += table_file_creation_reason_to_string[context.reason];
|
|
1722
1669
|
test_report_ += "\n";
|