@nxtedition/rocksdb 8.2.0 → 8.2.2
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/binding.cc +3 -3
- package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -52
- package/deps/rocksdb/rocksdb/Makefile +10 -5
- package/deps/rocksdb/rocksdb/TARGETS +8 -345
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +92 -0
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +32 -32
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +12 -9
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +6 -43
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +3 -13
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +8 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +21 -47
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -8
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +1 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +44 -7
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +13 -14
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +17 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +40 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +41 -42
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +5 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +5 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +7 -6
- package/deps/rocksdb/rocksdb/db/builder.h +2 -2
- package/deps/rocksdb/rocksdb/db/c.cc +76 -5
- package/deps/rocksdb/rocksdb/db/c_test.c +141 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +32 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +5 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +21 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +77 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +4 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +55 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +142 -56
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +21 -20
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +260 -220
- package/deps/rocksdb/rocksdb/db/db_clip_test.cc +142 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +333 -27
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +7 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +189 -27
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +23 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +134 -90
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +124 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +10 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +7 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +15 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +11 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +54 -3
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +42 -0
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +116 -1
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +9 -8
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +142 -63
- package/deps/rocksdb/rocksdb/db/db_test.cc +28 -7
- package/deps/rocksdb/rocksdb/db/db_test2.cc +71 -131
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +18 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.h +6 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +25 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +88 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +67 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +5 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +86 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +15 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/flush_job.cc +21 -14
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -7
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +31 -8
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +21 -19
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +42 -12
- package/deps/rocksdb/rocksdb/db/internal_stats.h +1 -0
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +92 -6
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/log_format.h +8 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -51
- package/deps/rocksdb/rocksdb/db/log_reader.h +16 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +125 -4
- package/deps/rocksdb/rocksdb/db/log_writer.cc +32 -2
- package/deps/rocksdb/rocksdb/db/log_writer.h +16 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +17 -46
- package/deps/rocksdb/rocksdb/db/memtable.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +8 -4
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/repair.cc +38 -11
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/table_cache.cc +68 -51
- package/deps/rocksdb/rocksdb/db/table_cache.h +20 -10
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/version_builder.cc +9 -5
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +140 -120
- package/deps/rocksdb/rocksdb/db/version_edit.cc +14 -0
- package/deps/rocksdb/rocksdb/db/version_edit.h +12 -4
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +21 -13
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +26 -16
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +9 -9
- package/deps/rocksdb/rocksdb/db/version_set.cc +292 -96
- package/deps/rocksdb/rocksdb/db/version_set.h +53 -28
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +62 -22
- package/deps/rocksdb/rocksdb/db/version_util.h +5 -4
- package/deps/rocksdb/rocksdb/db/write_batch.cc +3 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +119 -27
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +123 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +7 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +13 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +43 -33
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +29 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +85 -50
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +96 -54
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.cc +122 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +206 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +9 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +9 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +322 -92
- package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -8
- package/deps/rocksdb/rocksdb/env/env_test.cc +31 -0
- package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +14 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +5 -1
- package/deps/rocksdb/rocksdb/file/file_util.cc +3 -3
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +89 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +22 -7
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -2
- package/deps/rocksdb/rocksdb/file/readahead_raf.cc +1 -1
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +154 -74
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +27 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +107 -28
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +137 -152
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +61 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +30 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +33 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +87 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +9 -2
- package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -0
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +78 -42
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +14 -9
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +4 -9
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +19 -11
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +211 -555
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +36 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +17 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +10 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +19 -18
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +10 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +35 -2
- package/deps/rocksdb/rocksdb/options/cf_options.h +5 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/options.cc +12 -53
- package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -0
- package/deps/rocksdb/rocksdb/options/options_parser.cc +11 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +32 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +89 -5
- package/deps/rocksdb/rocksdb/port/lang.h +27 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +67 -24
- package/deps/rocksdb/rocksdb/src.mk +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +195 -35
- package/deps/rocksdb/rocksdb/table/block_based/block.h +197 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +71 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +4 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +43 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +36 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +266 -166
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +44 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +63 -56
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +10 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +14 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +918 -2
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -9
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -8
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +18 -23
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +8 -8
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -32
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +7 -8
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +46 -53
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +12 -12
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +26 -23
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +3 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +7 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +5 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +4 -2
- package/deps/rocksdb/rocksdb/table/format.cc +4 -4
- package/deps/rocksdb/rocksdb/table/format.h +1 -1
- package/deps/rocksdb/rocksdb/table/get_context.cc +1 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +33 -22
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +4 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +4 -2
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +1 -1
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +18 -10
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +10 -7
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +4 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +11 -0
- package/deps/rocksdb/rocksdb/table/table_builder.h +14 -5
- package/deps/rocksdb/rocksdb/table/table_properties.cc +2 -0
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -3
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +291 -34
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +5 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +33 -17
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +2 -2
- package/deps/rocksdb/rocksdb/util/compression.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +24 -83
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +7 -9
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +4 -1
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +9 -10
- package/deps/rocksdb/rocksdb/util/math.h +12 -7
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +16 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +46 -2
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +6 -6
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +12 -7
- package/deps/rocksdb/rocksdb/util/stop_watch.h +31 -13
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
- package/deps/rocksdb/rocksdb/util/udt_util.h +77 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +11 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +34 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +15 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +29 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +6 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +10 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +6 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +5 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- /package/deps/rocksdb/rocksdb/memory/{memory_allocator.h → memory_allocator_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/monitoring/{statistics.h → statistics_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/table/block_based/{flush_block_policy.h → flush_block_policy_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/util/{rate_limiter.h → rate_limiter_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/utilities/agg_merge/{agg_merge.h → agg_merge_impl.h} +0 -0
|
@@ -220,45 +220,43 @@ std::unique_ptr<FilterBlockReader> PartitionedFilterBlockReader::Create(
|
|
|
220
220
|
bool PartitionedFilterBlockReader::KeyMayMatch(
|
|
221
221
|
const Slice& key, const bool no_io, const Slice* const const_ikey_ptr,
|
|
222
222
|
GetContext* get_context, BlockCacheLookupContext* lookup_context,
|
|
223
|
-
|
|
223
|
+
const ReadOptions& read_options) {
|
|
224
224
|
assert(const_ikey_ptr != nullptr);
|
|
225
225
|
if (!whole_key_filtering()) {
|
|
226
226
|
return true;
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
return MayMatch(key, no_io, const_ikey_ptr, get_context, lookup_context,
|
|
230
|
-
|
|
230
|
+
read_options, &FullFilterBlockReader::KeyMayMatch);
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
void PartitionedFilterBlockReader::KeysMayMatch(
|
|
234
234
|
MultiGetRange* range, const bool no_io,
|
|
235
|
-
BlockCacheLookupContext* lookup_context,
|
|
236
|
-
Env::IOPriority rate_limiter_priority) {
|
|
235
|
+
BlockCacheLookupContext* lookup_context, const ReadOptions& read_options) {
|
|
237
236
|
if (!whole_key_filtering()) {
|
|
238
237
|
return; // Any/all may match
|
|
239
238
|
}
|
|
240
239
|
|
|
241
|
-
MayMatch(range, nullptr, no_io, lookup_context,
|
|
240
|
+
MayMatch(range, nullptr, no_io, lookup_context, read_options,
|
|
242
241
|
&FullFilterBlockReader::KeysMayMatch2);
|
|
243
242
|
}
|
|
244
243
|
|
|
245
244
|
bool PartitionedFilterBlockReader::PrefixMayMatch(
|
|
246
245
|
const Slice& prefix, const bool no_io, const Slice* const const_ikey_ptr,
|
|
247
246
|
GetContext* get_context, BlockCacheLookupContext* lookup_context,
|
|
248
|
-
|
|
247
|
+
const ReadOptions& read_options) {
|
|
249
248
|
assert(const_ikey_ptr != nullptr);
|
|
250
249
|
return MayMatch(prefix, no_io, const_ikey_ptr, get_context, lookup_context,
|
|
251
|
-
|
|
252
|
-
&FullFilterBlockReader::PrefixMayMatch);
|
|
250
|
+
read_options, &FullFilterBlockReader::PrefixMayMatch);
|
|
253
251
|
}
|
|
254
252
|
|
|
255
253
|
void PartitionedFilterBlockReader::PrefixesMayMatch(
|
|
256
254
|
MultiGetRange* range, const SliceTransform* prefix_extractor,
|
|
257
255
|
const bool no_io, BlockCacheLookupContext* lookup_context,
|
|
258
|
-
|
|
256
|
+
const ReadOptions& read_options) {
|
|
259
257
|
assert(prefix_extractor);
|
|
260
|
-
MayMatch(range, prefix_extractor, no_io, lookup_context,
|
|
261
|
-
|
|
258
|
+
MayMatch(range, prefix_extractor, no_io, lookup_context, read_options,
|
|
259
|
+
&FullFilterBlockReader::PrefixesMayMatch);
|
|
262
260
|
}
|
|
263
261
|
|
|
264
262
|
BlockHandle PartitionedFilterBlockReader::GetFilterPartitionHandle(
|
|
@@ -290,8 +288,7 @@ BlockHandle PartitionedFilterBlockReader::GetFilterPartitionHandle(
|
|
|
290
288
|
Status PartitionedFilterBlockReader::GetFilterPartitionBlock(
|
|
291
289
|
FilePrefetchBuffer* prefetch_buffer, const BlockHandle& fltr_blk_handle,
|
|
292
290
|
bool no_io, GetContext* get_context,
|
|
293
|
-
BlockCacheLookupContext* lookup_context,
|
|
294
|
-
Env::IOPriority rate_limiter_priority,
|
|
291
|
+
BlockCacheLookupContext* lookup_context, const ReadOptions& _read_options,
|
|
295
292
|
CachableEntry<ParsedFullFilterBlock>* filter_block) const {
|
|
296
293
|
assert(table());
|
|
297
294
|
assert(filter_block);
|
|
@@ -307,8 +304,7 @@ Status PartitionedFilterBlockReader::GetFilterPartitionBlock(
|
|
|
307
304
|
}
|
|
308
305
|
}
|
|
309
306
|
|
|
310
|
-
ReadOptions read_options;
|
|
311
|
-
read_options.rate_limiter_priority = rate_limiter_priority;
|
|
307
|
+
ReadOptions read_options = _read_options;
|
|
312
308
|
if (no_io) {
|
|
313
309
|
read_options.read_tier = kBlockCacheTier;
|
|
314
310
|
}
|
|
@@ -326,11 +322,10 @@ Status PartitionedFilterBlockReader::GetFilterPartitionBlock(
|
|
|
326
322
|
bool PartitionedFilterBlockReader::MayMatch(
|
|
327
323
|
const Slice& slice, bool no_io, const Slice* const_ikey_ptr,
|
|
328
324
|
GetContext* get_context, BlockCacheLookupContext* lookup_context,
|
|
329
|
-
|
|
330
|
-
FilterFunction filter_function) const {
|
|
325
|
+
const ReadOptions& read_options, FilterFunction filter_function) const {
|
|
331
326
|
CachableEntry<Block_kFilterPartitionIndex> filter_block;
|
|
332
327
|
Status s = GetOrReadFilterBlock(no_io, get_context, lookup_context,
|
|
333
|
-
&filter_block,
|
|
328
|
+
&filter_block, read_options);
|
|
334
329
|
if (UNLIKELY(!s.ok())) {
|
|
335
330
|
IGNORE_STATUS_IF_ERROR(s);
|
|
336
331
|
return true;
|
|
@@ -347,8 +342,8 @@ bool PartitionedFilterBlockReader::MayMatch(
|
|
|
347
342
|
|
|
348
343
|
CachableEntry<ParsedFullFilterBlock> filter_partition_block;
|
|
349
344
|
s = GetFilterPartitionBlock(nullptr /* prefetch_buffer */, filter_handle,
|
|
350
|
-
no_io, get_context, lookup_context,
|
|
351
|
-
|
|
345
|
+
no_io, get_context, lookup_context, read_options,
|
|
346
|
+
&filter_partition_block);
|
|
352
347
|
if (UNLIKELY(!s.ok())) {
|
|
353
348
|
IGNORE_STATUS_IF_ERROR(s);
|
|
354
349
|
return true;
|
|
@@ -356,20 +351,17 @@ bool PartitionedFilterBlockReader::MayMatch(
|
|
|
356
351
|
|
|
357
352
|
FullFilterBlockReader filter_partition(table(),
|
|
358
353
|
std::move(filter_partition_block));
|
|
359
|
-
return (filter_partition.*filter_function)(
|
|
360
|
-
|
|
361
|
-
rate_limiter_priority);
|
|
354
|
+
return (filter_partition.*filter_function)(
|
|
355
|
+
slice, no_io, const_ikey_ptr, get_context, lookup_context, read_options);
|
|
362
356
|
}
|
|
363
357
|
|
|
364
358
|
void PartitionedFilterBlockReader::MayMatch(
|
|
365
359
|
MultiGetRange* range, const SliceTransform* prefix_extractor, bool no_io,
|
|
366
|
-
BlockCacheLookupContext* lookup_context,
|
|
367
|
-
Env::IOPriority rate_limiter_priority,
|
|
360
|
+
BlockCacheLookupContext* lookup_context, const ReadOptions& read_options,
|
|
368
361
|
FilterManyFunction filter_function) const {
|
|
369
362
|
CachableEntry<Block_kFilterPartitionIndex> filter_block;
|
|
370
|
-
Status s =
|
|
371
|
-
|
|
372
|
-
&filter_block, rate_limiter_priority);
|
|
363
|
+
Status s = GetOrReadFilterBlock(no_io, range->begin()->get_context,
|
|
364
|
+
lookup_context, &filter_block, read_options);
|
|
373
365
|
if (UNLIKELY(!s.ok())) {
|
|
374
366
|
IGNORE_STATUS_IF_ERROR(s);
|
|
375
367
|
return; // Any/all may match
|
|
@@ -393,7 +385,7 @@ void PartitionedFilterBlockReader::MayMatch(
|
|
|
393
385
|
this_filter_handle != prev_filter_handle) {
|
|
394
386
|
MultiGetRange subrange(*range, start_iter_same_handle, iter);
|
|
395
387
|
MayMatchPartition(&subrange, prefix_extractor, prev_filter_handle, no_io,
|
|
396
|
-
lookup_context,
|
|
388
|
+
lookup_context, read_options, filter_function);
|
|
397
389
|
range->AddSkipsFrom(subrange);
|
|
398
390
|
start_iter_same_handle = iter;
|
|
399
391
|
}
|
|
@@ -409,7 +401,7 @@ void PartitionedFilterBlockReader::MayMatch(
|
|
|
409
401
|
if (!prev_filter_handle.IsNull()) {
|
|
410
402
|
MultiGetRange subrange(*range, start_iter_same_handle, range->end());
|
|
411
403
|
MayMatchPartition(&subrange, prefix_extractor, prev_filter_handle, no_io,
|
|
412
|
-
lookup_context,
|
|
404
|
+
lookup_context, read_options, filter_function);
|
|
413
405
|
range->AddSkipsFrom(subrange);
|
|
414
406
|
}
|
|
415
407
|
}
|
|
@@ -417,13 +409,12 @@ void PartitionedFilterBlockReader::MayMatch(
|
|
|
417
409
|
void PartitionedFilterBlockReader::MayMatchPartition(
|
|
418
410
|
MultiGetRange* range, const SliceTransform* prefix_extractor,
|
|
419
411
|
BlockHandle filter_handle, bool no_io,
|
|
420
|
-
BlockCacheLookupContext* lookup_context,
|
|
421
|
-
Env::IOPriority rate_limiter_priority,
|
|
412
|
+
BlockCacheLookupContext* lookup_context, const ReadOptions& read_options,
|
|
422
413
|
FilterManyFunction filter_function) const {
|
|
423
414
|
CachableEntry<ParsedFullFilterBlock> filter_partition_block;
|
|
424
415
|
Status s = GetFilterPartitionBlock(
|
|
425
416
|
nullptr /* prefetch_buffer */, filter_handle, no_io,
|
|
426
|
-
range->begin()->get_context, lookup_context,
|
|
417
|
+
range->begin()->get_context, lookup_context, read_options,
|
|
427
418
|
&filter_partition_block);
|
|
428
419
|
if (UNLIKELY(!s.ok())) {
|
|
429
420
|
IGNORE_STATUS_IF_ERROR(s);
|
|
@@ -433,7 +424,7 @@ void PartitionedFilterBlockReader::MayMatchPartition(
|
|
|
433
424
|
FullFilterBlockReader filter_partition(table(),
|
|
434
425
|
std::move(filter_partition_block));
|
|
435
426
|
(filter_partition.*filter_function)(range, prefix_extractor, no_io,
|
|
436
|
-
lookup_context,
|
|
427
|
+
lookup_context, read_options);
|
|
437
428
|
}
|
|
438
429
|
|
|
439
430
|
size_t PartitionedFilterBlockReader::ApproximateMemoryUsage() const {
|
|
@@ -448,8 +439,8 @@ size_t PartitionedFilterBlockReader::ApproximateMemoryUsage() const {
|
|
|
448
439
|
}
|
|
449
440
|
|
|
450
441
|
// TODO(myabandeh): merge this with the same function in IndexReader
|
|
451
|
-
Status PartitionedFilterBlockReader::CacheDependencies(
|
|
452
|
-
|
|
442
|
+
Status PartitionedFilterBlockReader::CacheDependencies(
|
|
443
|
+
const ReadOptions& ro, bool pin, FilePrefetchBuffer* tail_prefetch_buffer) {
|
|
453
444
|
assert(table());
|
|
454
445
|
|
|
455
446
|
const BlockBasedTable::Rep* const rep = table()->get_rep();
|
|
@@ -460,8 +451,7 @@ Status PartitionedFilterBlockReader::CacheDependencies(const ReadOptions& ro,
|
|
|
460
451
|
CachableEntry<Block_kFilterPartitionIndex> filter_block;
|
|
461
452
|
|
|
462
453
|
Status s = GetOrReadFilterBlock(false /* no_io */, nullptr /* get_context */,
|
|
463
|
-
&lookup_context, &filter_block,
|
|
464
|
-
ro.rate_limiter_priority);
|
|
454
|
+
&lookup_context, &filter_block, ro);
|
|
465
455
|
if (!s.ok()) {
|
|
466
456
|
ROCKS_LOG_ERROR(rep->ioptions.logger,
|
|
467
457
|
"Error retrieving top-level filter block while trying to "
|
|
@@ -494,21 +484,23 @@ Status PartitionedFilterBlockReader::CacheDependencies(const ReadOptions& ro,
|
|
|
494
484
|
handle.offset() + handle.size() + BlockBasedTable::kBlockTrailerSize;
|
|
495
485
|
uint64_t prefetch_len = last_off - prefetch_off;
|
|
496
486
|
std::unique_ptr<FilePrefetchBuffer> prefetch_buffer;
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
s =
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
487
|
+
if (tail_prefetch_buffer == nullptr || !tail_prefetch_buffer->Enabled() ||
|
|
488
|
+
tail_prefetch_buffer->GetPrefetchOffset() > prefetch_off) {
|
|
489
|
+
rep->CreateFilePrefetchBuffer(
|
|
490
|
+
0, 0, &prefetch_buffer, false /* Implicit autoreadahead */,
|
|
491
|
+
0 /*num_reads_*/, 0 /*num_file_reads_for_auto_readahead*/);
|
|
492
|
+
|
|
493
|
+
IOOptions opts;
|
|
494
|
+
s = rep->file->PrepareIOOptions(ro, opts);
|
|
495
|
+
if (s.ok()) {
|
|
496
|
+
s = prefetch_buffer->Prefetch(opts, rep->file.get(), prefetch_off,
|
|
497
|
+
static_cast<size_t>(prefetch_len),
|
|
498
|
+
ro.rate_limiter_priority);
|
|
499
|
+
}
|
|
500
|
+
if (!s.ok()) {
|
|
501
|
+
return s;
|
|
502
|
+
}
|
|
510
503
|
}
|
|
511
|
-
|
|
512
504
|
// After prefetch, read the partitions one by one
|
|
513
505
|
for (biter.SeekToFirst(); biter.Valid(); biter.Next()) {
|
|
514
506
|
handle = biter.value().handle;
|
|
@@ -517,7 +509,8 @@ Status PartitionedFilterBlockReader::CacheDependencies(const ReadOptions& ro,
|
|
|
517
509
|
// TODO: Support counter batch update for partitioned index and
|
|
518
510
|
// filter blocks
|
|
519
511
|
s = table()->MaybeReadBlockAndLoadToCache(
|
|
520
|
-
prefetch_buffer.get()
|
|
512
|
+
prefetch_buffer ? prefetch_buffer.get() : tail_prefetch_buffer, ro,
|
|
513
|
+
handle, UncompressionDict::GetEmptyDict(),
|
|
521
514
|
/* for_compaction */ false, &block, nullptr /* get_context */,
|
|
522
515
|
&lookup_context, nullptr /* contents */, false);
|
|
523
516
|
if (!s.ok()) {
|
|
@@ -115,21 +115,21 @@ class PartitionedFilterBlockReader
|
|
|
115
115
|
bool KeyMayMatch(const Slice& key, const bool no_io,
|
|
116
116
|
const Slice* const const_ikey_ptr, GetContext* get_context,
|
|
117
117
|
BlockCacheLookupContext* lookup_context,
|
|
118
|
-
|
|
118
|
+
const ReadOptions& read_options) override;
|
|
119
119
|
void KeysMayMatch(MultiGetRange* range, const bool no_io,
|
|
120
120
|
BlockCacheLookupContext* lookup_context,
|
|
121
|
-
|
|
121
|
+
const ReadOptions& read_options) override;
|
|
122
122
|
|
|
123
123
|
bool PrefixMayMatch(const Slice& prefix, const bool no_io,
|
|
124
124
|
const Slice* const const_ikey_ptr,
|
|
125
125
|
GetContext* get_context,
|
|
126
126
|
BlockCacheLookupContext* lookup_context,
|
|
127
|
-
|
|
127
|
+
const ReadOptions& read_options) override;
|
|
128
128
|
void PrefixesMayMatch(MultiGetRange* range,
|
|
129
129
|
const SliceTransform* prefix_extractor,
|
|
130
130
|
const bool no_io,
|
|
131
131
|
BlockCacheLookupContext* lookup_context,
|
|
132
|
-
|
|
132
|
+
const ReadOptions& read_options) override;
|
|
133
133
|
|
|
134
134
|
size_t ApproximateMemoryUsage() const override;
|
|
135
135
|
|
|
@@ -140,34 +140,34 @@ class PartitionedFilterBlockReader
|
|
|
140
140
|
Status GetFilterPartitionBlock(
|
|
141
141
|
FilePrefetchBuffer* prefetch_buffer, const BlockHandle& handle,
|
|
142
142
|
bool no_io, GetContext* get_context,
|
|
143
|
-
BlockCacheLookupContext* lookup_context,
|
|
144
|
-
Env::IOPriority rate_limiter_priority,
|
|
143
|
+
BlockCacheLookupContext* lookup_context, const ReadOptions& read_options,
|
|
145
144
|
CachableEntry<ParsedFullFilterBlock>* filter_block) const;
|
|
146
145
|
|
|
147
146
|
using FilterFunction = bool (FullFilterBlockReader::*)(
|
|
148
147
|
const Slice& slice, const bool no_io, const Slice* const const_ikey_ptr,
|
|
149
148
|
GetContext* get_context, BlockCacheLookupContext* lookup_context,
|
|
150
|
-
|
|
149
|
+
const ReadOptions& read_options);
|
|
151
150
|
bool MayMatch(const Slice& slice, bool no_io, const Slice* const_ikey_ptr,
|
|
152
151
|
GetContext* get_context,
|
|
153
152
|
BlockCacheLookupContext* lookup_context,
|
|
154
|
-
|
|
153
|
+
const ReadOptions& read_options,
|
|
155
154
|
FilterFunction filter_function) const;
|
|
156
155
|
using FilterManyFunction = void (FullFilterBlockReader::*)(
|
|
157
156
|
MultiGetRange* range, const SliceTransform* prefix_extractor,
|
|
158
157
|
const bool no_io, BlockCacheLookupContext* lookup_context,
|
|
159
|
-
|
|
158
|
+
const ReadOptions& read_options);
|
|
160
159
|
void MayMatch(MultiGetRange* range, const SliceTransform* prefix_extractor,
|
|
161
160
|
bool no_io, BlockCacheLookupContext* lookup_context,
|
|
162
|
-
|
|
161
|
+
const ReadOptions& read_options,
|
|
163
162
|
FilterManyFunction filter_function) const;
|
|
164
163
|
void MayMatchPartition(MultiGetRange* range,
|
|
165
164
|
const SliceTransform* prefix_extractor,
|
|
166
165
|
BlockHandle filter_handle, bool no_io,
|
|
167
166
|
BlockCacheLookupContext* lookup_context,
|
|
168
|
-
|
|
167
|
+
const ReadOptions& read_options,
|
|
169
168
|
FilterManyFunction filter_function) const;
|
|
170
|
-
Status CacheDependencies(const ReadOptions& ro, bool pin
|
|
169
|
+
Status CacheDependencies(const ReadOptions& ro, bool pin,
|
|
170
|
+
FilePrefetchBuffer* tail_prefetch_buffer) override;
|
|
171
171
|
|
|
172
172
|
const InternalKeyComparator* internal_comparator() const;
|
|
173
173
|
bool index_key_includes_seq() const;
|
|
@@ -167,7 +167,6 @@ class PartitionedFilterBlockTest
|
|
|
167
167
|
PartitionedIndexBuilder* pib, bool empty = false) {
|
|
168
168
|
std::unique_ptr<PartitionedFilterBlockReader> reader(
|
|
169
169
|
NewReader(builder, pib));
|
|
170
|
-
Env::IOPriority rate_limiter_priority = Env::IO_TOTAL;
|
|
171
170
|
// Querying added keys
|
|
172
171
|
const bool no_io = true;
|
|
173
172
|
for (auto key : keys) {
|
|
@@ -176,7 +175,7 @@ class PartitionedFilterBlockTest
|
|
|
176
175
|
ASSERT_TRUE(reader->KeyMayMatch(key, !no_io, &ikey_slice,
|
|
177
176
|
/*get_context=*/nullptr,
|
|
178
177
|
/*lookup_context=*/nullptr,
|
|
179
|
-
|
|
178
|
+
ReadOptions()));
|
|
180
179
|
}
|
|
181
180
|
{
|
|
182
181
|
// querying a key twice
|
|
@@ -185,7 +184,7 @@ class PartitionedFilterBlockTest
|
|
|
185
184
|
ASSERT_TRUE(reader->KeyMayMatch(keys[0], !no_io, &ikey_slice,
|
|
186
185
|
/*get_context=*/nullptr,
|
|
187
186
|
/*lookup_context=*/nullptr,
|
|
188
|
-
|
|
187
|
+
ReadOptions()));
|
|
189
188
|
}
|
|
190
189
|
// querying missing keys
|
|
191
190
|
for (auto key : missing_keys) {
|
|
@@ -195,13 +194,13 @@ class PartitionedFilterBlockTest
|
|
|
195
194
|
ASSERT_TRUE(reader->KeyMayMatch(key, !no_io, &ikey_slice,
|
|
196
195
|
/*get_context=*/nullptr,
|
|
197
196
|
/*lookup_context=*/nullptr,
|
|
198
|
-
|
|
197
|
+
ReadOptions()));
|
|
199
198
|
} else {
|
|
200
199
|
// assuming a good hash function
|
|
201
200
|
ASSERT_FALSE(reader->KeyMayMatch(key, !no_io, &ikey_slice,
|
|
202
201
|
/*get_context=*/nullptr,
|
|
203
202
|
/*lookup_context=*/nullptr,
|
|
204
|
-
|
|
203
|
+
ReadOptions()));
|
|
205
204
|
}
|
|
206
205
|
}
|
|
207
206
|
}
|
|
@@ -354,7 +353,7 @@ TEST_P(PartitionedFilterBlockTest, SamePrefixInMultipleBlocks) {
|
|
|
354
353
|
/*no_io=*/false, &ikey_slice,
|
|
355
354
|
/*get_context=*/nullptr,
|
|
356
355
|
/*lookup_context=*/nullptr,
|
|
357
|
-
|
|
356
|
+
ReadOptions()));
|
|
358
357
|
}
|
|
359
358
|
// Non-existent keys but with the same prefix
|
|
360
359
|
const std::string pnonkeys[4] = {"p-key9", "p-key11", "p-key21", "p-key31"};
|
|
@@ -365,7 +364,7 @@ TEST_P(PartitionedFilterBlockTest, SamePrefixInMultipleBlocks) {
|
|
|
365
364
|
/*no_io=*/false, &ikey_slice,
|
|
366
365
|
/*get_context=*/nullptr,
|
|
367
366
|
/*lookup_context=*/nullptr,
|
|
368
|
-
|
|
367
|
+
ReadOptions()));
|
|
369
368
|
}
|
|
370
369
|
}
|
|
371
370
|
|
|
@@ -396,7 +395,6 @@ TEST_P(PartitionedFilterBlockTest, PrefixInWrongPartitionBug) {
|
|
|
396
395
|
CutABlock(pib.get(), pkeys[4]);
|
|
397
396
|
std::unique_ptr<PartitionedFilterBlockReader> reader(
|
|
398
397
|
NewReader(builder.get(), pib.get()));
|
|
399
|
-
Env::IOPriority rate_limiter_priority = Env::IO_TOTAL;
|
|
400
398
|
for (auto key : pkeys) {
|
|
401
399
|
auto prefix = prefix_extractor->Transform(key);
|
|
402
400
|
auto ikey = InternalKey(prefix, 0, ValueType::kTypeValue);
|
|
@@ -405,7 +403,7 @@ TEST_P(PartitionedFilterBlockTest, PrefixInWrongPartitionBug) {
|
|
|
405
403
|
/*no_io=*/false, &ikey_slice,
|
|
406
404
|
/*get_context=*/nullptr,
|
|
407
405
|
/*lookup_context=*/nullptr,
|
|
408
|
-
|
|
406
|
+
ReadOptions()));
|
|
409
407
|
}
|
|
410
408
|
}
|
|
411
409
|
|
|
@@ -49,9 +49,8 @@ InternalIteratorBase<IndexValue>* PartitionIndexReader::NewIterator(
|
|
|
49
49
|
BlockCacheLookupContext* lookup_context) {
|
|
50
50
|
const bool no_io = (read_options.read_tier == kBlockCacheTier);
|
|
51
51
|
CachableEntry<Block> index_block;
|
|
52
|
-
const Status s =
|
|
53
|
-
|
|
54
|
-
get_context, lookup_context, &index_block);
|
|
52
|
+
const Status s = GetOrReadIndexBlock(no_io, get_context, lookup_context,
|
|
53
|
+
&index_block, read_options);
|
|
55
54
|
if (!s.ok()) {
|
|
56
55
|
if (iter != nullptr) {
|
|
57
56
|
iter->Invalidate(s);
|
|
@@ -85,6 +84,8 @@ InternalIteratorBase<IndexValue>* PartitionIndexReader::NewIterator(
|
|
|
85
84
|
ro.adaptive_readahead = read_options.adaptive_readahead;
|
|
86
85
|
ro.async_io = read_options.async_io;
|
|
87
86
|
ro.rate_limiter_priority = read_options.rate_limiter_priority;
|
|
87
|
+
ro.verify_checksums = read_options.verify_checksums;
|
|
88
|
+
ro.io_activity = read_options.io_activity;
|
|
88
89
|
|
|
89
90
|
// We don't return pinned data from index blocks, so no need
|
|
90
91
|
// to set `block_contents_pinned`.
|
|
@@ -111,8 +112,8 @@ InternalIteratorBase<IndexValue>* PartitionIndexReader::NewIterator(
|
|
|
111
112
|
// the first level iter is always on heap and will attempt to delete it
|
|
112
113
|
// in its destructor.
|
|
113
114
|
}
|
|
114
|
-
Status PartitionIndexReader::CacheDependencies(
|
|
115
|
-
|
|
115
|
+
Status PartitionIndexReader::CacheDependencies(
|
|
116
|
+
const ReadOptions& ro, bool pin, FilePrefetchBuffer* tail_prefetch_buffer) {
|
|
116
117
|
if (!partition_map_.empty()) {
|
|
117
118
|
// The dependencies are already cached since `partition_map_` is filled in
|
|
118
119
|
// an all-or-nothing manner.
|
|
@@ -127,9 +128,8 @@ Status PartitionIndexReader::CacheDependencies(const ReadOptions& ro,
|
|
|
127
128
|
|
|
128
129
|
CachableEntry<Block> index_block;
|
|
129
130
|
{
|
|
130
|
-
Status s = GetOrReadIndexBlock(false /* no_io */,
|
|
131
|
-
|
|
132
|
-
&index_block);
|
|
131
|
+
Status s = GetOrReadIndexBlock(false /* no_io */, nullptr /* get_context */,
|
|
132
|
+
&lookup_context, &index_block, ro);
|
|
133
133
|
if (!s.ok()) {
|
|
134
134
|
return s;
|
|
135
135
|
}
|
|
@@ -162,22 +162,24 @@ Status PartitionIndexReader::CacheDependencies(const ReadOptions& ro,
|
|
|
162
162
|
handle.offset() + BlockBasedTable::BlockSizeWithTrailer(handle);
|
|
163
163
|
uint64_t prefetch_len = last_off - prefetch_off;
|
|
164
164
|
std::unique_ptr<FilePrefetchBuffer> prefetch_buffer;
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
s =
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
165
|
+
if (tail_prefetch_buffer == nullptr || !tail_prefetch_buffer->Enabled() ||
|
|
166
|
+
tail_prefetch_buffer->GetPrefetchOffset() > prefetch_off) {
|
|
167
|
+
rep->CreateFilePrefetchBuffer(
|
|
168
|
+
0, 0, &prefetch_buffer, false /*Implicit auto readahead*/,
|
|
169
|
+
0 /*num_reads_*/, 0 /*num_file_reads_for_auto_readahead*/);
|
|
170
|
+
IOOptions opts;
|
|
171
|
+
{
|
|
172
|
+
Status s = rep->file->PrepareIOOptions(ro, opts);
|
|
173
|
+
if (s.ok()) {
|
|
174
|
+
s = prefetch_buffer->Prefetch(opts, rep->file.get(), prefetch_off,
|
|
175
|
+
static_cast<size_t>(prefetch_len),
|
|
176
|
+
ro.rate_limiter_priority);
|
|
177
|
+
}
|
|
178
|
+
if (!s.ok()) {
|
|
179
|
+
return s;
|
|
180
|
+
}
|
|
178
181
|
}
|
|
179
182
|
}
|
|
180
|
-
|
|
181
183
|
// For saving "all or nothing" to partition_map_
|
|
182
184
|
UnorderedMap<uint64_t, CachableEntry<Block>> map_in_progress;
|
|
183
185
|
|
|
@@ -191,7 +193,8 @@ Status PartitionIndexReader::CacheDependencies(const ReadOptions& ro,
|
|
|
191
193
|
// TODO: Support counter batch update for partitioned index and
|
|
192
194
|
// filter blocks
|
|
193
195
|
Status s = table()->MaybeReadBlockAndLoadToCache(
|
|
194
|
-
prefetch_buffer.get()
|
|
196
|
+
prefetch_buffer ? prefetch_buffer.get() : tail_prefetch_buffer, ro,
|
|
197
|
+
handle, UncompressionDict::GetEmptyDict(),
|
|
195
198
|
/*for_compaction=*/false, &block.As<Block_kIndex>(),
|
|
196
199
|
/*get_context=*/nullptr, &lookup_context, /*contents=*/nullptr,
|
|
197
200
|
/*async_read=*/false);
|
|
@@ -30,7 +30,8 @@ class PartitionIndexReader : public BlockBasedTable::IndexReaderCommon {
|
|
|
30
30
|
IndexBlockIter* iter, GetContext* get_context,
|
|
31
31
|
BlockCacheLookupContext* lookup_context) override;
|
|
32
32
|
|
|
33
|
-
Status CacheDependencies(const ReadOptions& ro, bool pin
|
|
33
|
+
Status CacheDependencies(const ReadOptions& ro, bool pin,
|
|
34
|
+
FilePrefetchBuffer* tail_prefetch_buffer) override;
|
|
34
35
|
size_t ApproximateMemoryUsage() const override {
|
|
35
36
|
size_t usage = ApproximateIndexBlockMemoryUsage();
|
|
36
37
|
#ifdef ROCKSDB_MALLOC_USABLE_SIZE
|
|
@@ -24,6 +24,9 @@ inline MemoryAllocator* GetMemoryAllocator(
|
|
|
24
24
|
|
|
25
25
|
// Assumes block has a trailer as in format.h. file_name and offset provided
|
|
26
26
|
// for generating a diagnostic message in returned status.
|
|
27
|
+
//
|
|
28
|
+
// Returns Status::OK() on checksum match, or Status::Corruption() on checksum
|
|
29
|
+
// mismatch.
|
|
27
30
|
extern Status VerifyBlockChecksum(ChecksumType type, const char* data,
|
|
28
31
|
size_t block_size,
|
|
29
32
|
const std::string& file_name,
|
|
@@ -77,8 +77,9 @@ Status UncompressionDictReader::ReadUncompressionDictionary(
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
Status UncompressionDictReader::GetOrReadUncompressionDictionary(
|
|
80
|
-
FilePrefetchBuffer* prefetch_buffer,
|
|
81
|
-
|
|
80
|
+
FilePrefetchBuffer* prefetch_buffer, const ReadOptions& ro, bool no_io,
|
|
81
|
+
bool verify_checksums, GetContext* get_context,
|
|
82
|
+
BlockCacheLookupContext* lookup_context,
|
|
82
83
|
CachableEntry<UncompressionDict>* uncompression_dict) const {
|
|
83
84
|
assert(uncompression_dict);
|
|
84
85
|
|
|
@@ -92,6 +93,7 @@ Status UncompressionDictReader::GetOrReadUncompressionDictionary(
|
|
|
92
93
|
read_options.read_tier = kBlockCacheTier;
|
|
93
94
|
}
|
|
94
95
|
read_options.verify_checksums = verify_checksums;
|
|
96
|
+
read_options.io_activity = ro.io_activity;
|
|
95
97
|
|
|
96
98
|
return ReadUncompressionDictionary(table_, prefetch_buffer, read_options,
|
|
97
99
|
cache_dictionary_blocks(), get_context,
|
|
@@ -32,8 +32,9 @@ class UncompressionDictReader {
|
|
|
32
32
|
std::unique_ptr<UncompressionDictReader>* uncompression_dict_reader);
|
|
33
33
|
|
|
34
34
|
Status GetOrReadUncompressionDictionary(
|
|
35
|
-
FilePrefetchBuffer* prefetch_buffer,
|
|
36
|
-
|
|
35
|
+
FilePrefetchBuffer* prefetch_buffer, const ReadOptions& ro, bool no_io,
|
|
36
|
+
bool verify_checksums, GetContext* get_context,
|
|
37
|
+
BlockCacheLookupContext* lookup_context,
|
|
37
38
|
CachableEntry<UncompressionDict>* uncompression_dict) const;
|
|
38
39
|
|
|
39
40
|
size_t ApproximateMemoryUsage() const;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
#include <string>
|
|
15
15
|
|
|
16
16
|
#include "logging/logging.h"
|
|
17
|
-
#include "memory/
|
|
17
|
+
#include "memory/memory_allocator_impl.h"
|
|
18
18
|
#include "monitoring/perf_context_imp.h"
|
|
19
19
|
#include "rocksdb/compression_type.h"
|
|
20
20
|
#include "rocksdb/env.h"
|
|
@@ -37,6 +37,10 @@ inline void BlockFetcher::ProcessTrailerIfPresent() {
|
|
|
37
37
|
footer_.checksum_type(), slice_.data(), block_size_,
|
|
38
38
|
file_->file_name(), handle_.offset()));
|
|
39
39
|
RecordTick(ioptions_.stats, BLOCK_CHECKSUM_COMPUTE_COUNT);
|
|
40
|
+
if (!io_status_.ok()) {
|
|
41
|
+
assert(io_status_.IsCorruption());
|
|
42
|
+
RecordTick(ioptions_.stats, BLOCK_CHECKSUM_MISMATCH_COUNT);
|
|
43
|
+
}
|
|
40
44
|
}
|
|
41
45
|
compression_type_ =
|
|
42
46
|
BlockBasedTable::GetBlockCompressionType(slice_.data(), block_size_);
|
|
@@ -254,6 +258,7 @@ IOStatus BlockFetcher::ReadBlockContents() {
|
|
|
254
258
|
if (io_status_.ok()) {
|
|
255
259
|
if (file_->use_direct_io()) {
|
|
256
260
|
PERF_TIMER_GUARD(block_read_time);
|
|
261
|
+
PERF_CPU_TIMER_GUARD(block_read_cpu_time, nullptr);
|
|
257
262
|
io_status_ = file_->Read(
|
|
258
263
|
opts, handle_.offset(), block_size_with_trailer_, &slice_, nullptr,
|
|
259
264
|
&direct_io_buf_, read_options_.rate_limiter_priority);
|
|
@@ -262,6 +267,7 @@ IOStatus BlockFetcher::ReadBlockContents() {
|
|
|
262
267
|
} else {
|
|
263
268
|
PrepareBufferForBlockFromFile();
|
|
264
269
|
PERF_TIMER_GUARD(block_read_time);
|
|
270
|
+
PERF_CPU_TIMER_GUARD(block_read_cpu_time, nullptr);
|
|
265
271
|
io_status_ = file_->Read(opts, handle_.offset(),
|
|
266
272
|
block_size_with_trailer_, &slice_, used_buf_,
|
|
267
273
|
nullptr, read_options_.rate_limiter_priority);
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
|
|
10
10
|
#pragma once
|
|
11
|
-
#include "memory/
|
|
11
|
+
#include "memory/memory_allocator_impl.h"
|
|
12
12
|
#include "table/block_based/block.h"
|
|
13
13
|
#include "table/block_based/block_type.h"
|
|
14
14
|
#include "table/format.h"
|
|
@@ -268,7 +268,8 @@ class BlockFetcherTest : public testing::Test {
|
|
|
268
268
|
ASSERT_NE(table_options, nullptr);
|
|
269
269
|
ASSERT_OK(BlockBasedTable::Open(ro, ioptions, EnvOptions(), *table_options,
|
|
270
270
|
comparator, std::move(file), file_size,
|
|
271
|
-
|
|
271
|
+
0 /* block_protection_bytes_per_key */,
|
|
272
|
+
&table_reader, 0 /* tail_size */));
|
|
272
273
|
|
|
273
274
|
table->reset(reinterpret_cast<BlockBasedTable*>(table_reader.release()));
|
|
274
275
|
}
|
|
@@ -70,8 +70,10 @@ class CuckooBuilderTest : public testing::Test {
|
|
|
70
70
|
|
|
71
71
|
// Assert Table Properties.
|
|
72
72
|
std::unique_ptr<TableProperties> props;
|
|
73
|
+
const ReadOptions read_options;
|
|
73
74
|
ASSERT_OK(ReadTableProperties(file_reader.get(), read_file_size,
|
|
74
|
-
kCuckooTableMagicNumber, ioptions,
|
|
75
|
+
kCuckooTableMagicNumber, ioptions,
|
|
76
|
+
read_options, &props));
|
|
75
77
|
// Check unused bucket.
|
|
76
78
|
std::string unused_key =
|
|
77
79
|
props->user_collected_properties[CuckooTablePropertyNames::kEmptyKey];
|
|
@@ -627,4 +629,3 @@ int main(int argc, char** argv) {
|
|
|
627
629
|
::testing::InitGoogleTest(&argc, argv);
|
|
628
630
|
return RUN_ALL_TESTS();
|
|
629
631
|
}
|
|
630
|
-
|
|
@@ -59,8 +59,11 @@ CuckooTableReader::CuckooTableReader(
|
|
|
59
59
|
}
|
|
60
60
|
{
|
|
61
61
|
std::unique_ptr<TableProperties> props;
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
// TODO: plumb Env::IOActivity
|
|
63
|
+
const ReadOptions read_options;
|
|
64
|
+
status_ =
|
|
65
|
+
ReadTableProperties(file_.get(), file_size, kCuckooTableMagicNumber,
|
|
66
|
+
ioptions, read_options, &props);
|
|
64
67
|
if (!status_.ok()) {
|
|
65
68
|
return;
|
|
66
69
|
}
|
|
@@ -58,12 +58,14 @@ class CuckooTableReader : public TableReader {
|
|
|
58
58
|
size_t ApproximateMemoryUsage() const override;
|
|
59
59
|
|
|
60
60
|
// Following methods are not implemented for Cuckoo Table Reader
|
|
61
|
-
uint64_t ApproximateOffsetOf(const
|
|
61
|
+
uint64_t ApproximateOffsetOf(const ReadOptions& /*read_options*/,
|
|
62
|
+
const Slice& /*key*/,
|
|
62
63
|
TableReaderCaller /*caller*/) override {
|
|
63
64
|
return 0;
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
uint64_t ApproximateSize(const
|
|
67
|
+
uint64_t ApproximateSize(const ReadOptions& /* read_options */,
|
|
68
|
+
const Slice& /*start*/, const Slice& /*end*/,
|
|
67
69
|
TableReaderCaller /*caller*/) override {
|
|
68
70
|
return 0;
|
|
69
71
|
}
|