@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
|
@@ -259,6 +259,7 @@ Status BlobFileBuilder::CompressBlobIfNeeded(
|
|
|
259
259
|
return Status::OK();
|
|
260
260
|
}
|
|
261
261
|
|
|
262
|
+
// TODO: allow user CompressionOptions, including max_compressed_bytes_per_kb
|
|
262
263
|
CompressionOptions opts;
|
|
263
264
|
CompressionContext context(blob_compression_type_);
|
|
264
265
|
constexpr uint64_t sample_for_compression = 0;
|
|
@@ -37,7 +37,7 @@ BlobFileCache::BlobFileCache(Cache* cache,
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
Status BlobFileCache::GetBlobFileReader(
|
|
40
|
-
uint64_t blob_file_number,
|
|
40
|
+
const ReadOptions& read_options, uint64_t blob_file_number,
|
|
41
41
|
CacheHandleGuard<BlobFileReader>* blob_file_reader) {
|
|
42
42
|
assert(blob_file_reader);
|
|
43
43
|
assert(blob_file_reader->IsEmpty());
|
|
@@ -73,7 +73,7 @@ Status BlobFileCache::GetBlobFileReader(
|
|
|
73
73
|
{
|
|
74
74
|
assert(file_options_);
|
|
75
75
|
const Status s = BlobFileReader::Create(
|
|
76
|
-
*immutable_options_, *file_options_, column_family_id_,
|
|
76
|
+
*immutable_options_, read_options, *file_options_, column_family_id_,
|
|
77
77
|
blob_file_read_hist_, blob_file_number, io_tracer_, &reader);
|
|
78
78
|
if (!s.ok()) {
|
|
79
79
|
RecordTick(statistics, NO_FILE_ERRORS);
|
|
@@ -32,7 +32,8 @@ class BlobFileCache {
|
|
|
32
32
|
BlobFileCache(const BlobFileCache&) = delete;
|
|
33
33
|
BlobFileCache& operator=(const BlobFileCache&) = delete;
|
|
34
34
|
|
|
35
|
-
Status GetBlobFileReader(
|
|
35
|
+
Status GetBlobFileReader(const ReadOptions& read_options,
|
|
36
|
+
uint64_t blob_file_number,
|
|
36
37
|
CacheHandleGuard<BlobFileReader>* blob_file_reader);
|
|
37
38
|
|
|
38
39
|
private:
|
|
@@ -118,7 +118,9 @@ TEST_F(BlobFileCacheTest, GetBlobFileReader) {
|
|
|
118
118
|
// First try: reader should be opened and put in cache
|
|
119
119
|
CacheHandleGuard<BlobFileReader> first;
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
const ReadOptions read_options;
|
|
122
|
+
ASSERT_OK(blob_file_cache.GetBlobFileReader(read_options, blob_file_number,
|
|
123
|
+
&first));
|
|
122
124
|
ASSERT_NE(first.GetValue(), nullptr);
|
|
123
125
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
|
|
124
126
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 0);
|
|
@@ -126,7 +128,8 @@ TEST_F(BlobFileCacheTest, GetBlobFileReader) {
|
|
|
126
128
|
// Second try: reader should be served from cache
|
|
127
129
|
CacheHandleGuard<BlobFileReader> second;
|
|
128
130
|
|
|
129
|
-
ASSERT_OK(blob_file_cache.GetBlobFileReader(blob_file_number,
|
|
131
|
+
ASSERT_OK(blob_file_cache.GetBlobFileReader(read_options, blob_file_number,
|
|
132
|
+
&second));
|
|
130
133
|
ASSERT_NE(second.GetValue(), nullptr);
|
|
131
134
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
|
|
132
135
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 0);
|
|
@@ -163,19 +166,21 @@ TEST_F(BlobFileCacheTest, GetBlobFileReader_Race) {
|
|
|
163
166
|
CacheHandleGuard<BlobFileReader> first;
|
|
164
167
|
CacheHandleGuard<BlobFileReader> second;
|
|
165
168
|
|
|
169
|
+
const ReadOptions read_options;
|
|
166
170
|
SyncPoint::GetInstance()->SetCallBack(
|
|
167
171
|
"BlobFileCache::GetBlobFileReader:DoubleCheck", [&](void* /* arg */) {
|
|
168
172
|
// Disabling sync points to prevent infinite recursion
|
|
169
173
|
SyncPoint::GetInstance()->DisableProcessing();
|
|
170
|
-
|
|
171
|
-
|
|
174
|
+
ASSERT_OK(blob_file_cache.GetBlobFileReader(read_options,
|
|
175
|
+
blob_file_number, &second));
|
|
172
176
|
ASSERT_NE(second.GetValue(), nullptr);
|
|
173
177
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
|
|
174
178
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 0);
|
|
175
179
|
});
|
|
176
180
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
177
181
|
|
|
178
|
-
ASSERT_OK(blob_file_cache.GetBlobFileReader(blob_file_number,
|
|
182
|
+
ASSERT_OK(blob_file_cache.GetBlobFileReader(read_options, blob_file_number,
|
|
183
|
+
&first));
|
|
179
184
|
ASSERT_NE(first.GetValue(), nullptr);
|
|
180
185
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
|
|
181
186
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 0);
|
|
@@ -213,8 +218,10 @@ TEST_F(BlobFileCacheTest, GetBlobFileReader_IOError) {
|
|
|
213
218
|
|
|
214
219
|
CacheHandleGuard<BlobFileReader> reader;
|
|
215
220
|
|
|
221
|
+
const ReadOptions read_options;
|
|
216
222
|
ASSERT_TRUE(
|
|
217
|
-
blob_file_cache.GetBlobFileReader(blob_file_number, &reader)
|
|
223
|
+
blob_file_cache.GetBlobFileReader(read_options, blob_file_number, &reader)
|
|
224
|
+
.IsIOError());
|
|
218
225
|
ASSERT_EQ(reader.GetValue(), nullptr);
|
|
219
226
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
|
|
220
227
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 1);
|
|
@@ -253,8 +260,10 @@ TEST_F(BlobFileCacheTest, GetBlobFileReader_CacheFull) {
|
|
|
253
260
|
// strict_capacity_limit is set
|
|
254
261
|
CacheHandleGuard<BlobFileReader> reader;
|
|
255
262
|
|
|
256
|
-
|
|
257
|
-
|
|
263
|
+
const ReadOptions read_options;
|
|
264
|
+
ASSERT_TRUE(
|
|
265
|
+
blob_file_cache.GetBlobFileReader(read_options, blob_file_number, &reader)
|
|
266
|
+
.IsMemoryLimit());
|
|
258
267
|
ASSERT_EQ(reader.GetValue(), nullptr);
|
|
259
268
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
|
|
260
269
|
ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 1);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
#include "db/blob/blob_log_format.h"
|
|
13
13
|
#include "file/file_prefetch_buffer.h"
|
|
14
14
|
#include "file/filename.h"
|
|
15
|
-
#include "monitoring/
|
|
15
|
+
#include "monitoring/statistics_impl.h"
|
|
16
16
|
#include "options/cf_options.h"
|
|
17
17
|
#include "rocksdb/file_system.h"
|
|
18
18
|
#include "rocksdb/slice.h"
|
|
@@ -26,9 +26,10 @@
|
|
|
26
26
|
namespace ROCKSDB_NAMESPACE {
|
|
27
27
|
|
|
28
28
|
Status BlobFileReader::Create(
|
|
29
|
-
const ImmutableOptions& immutable_options, const
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const ImmutableOptions& immutable_options, const ReadOptions& read_options,
|
|
30
|
+
const FileOptions& file_options, uint32_t column_family_id,
|
|
31
|
+
HistogramImpl* blob_file_read_hist, uint64_t blob_file_number,
|
|
32
|
+
const std::shared_ptr<IOTracer>& io_tracer,
|
|
32
33
|
std::unique_ptr<BlobFileReader>* blob_file_reader) {
|
|
33
34
|
assert(blob_file_reader);
|
|
34
35
|
assert(!*blob_file_reader);
|
|
@@ -52,15 +53,17 @@ Status BlobFileReader::Create(
|
|
|
52
53
|
CompressionType compression_type = kNoCompression;
|
|
53
54
|
|
|
54
55
|
{
|
|
55
|
-
const Status s =
|
|
56
|
-
|
|
56
|
+
const Status s =
|
|
57
|
+
ReadHeader(file_reader.get(), read_options, column_family_id,
|
|
58
|
+
statistics, &compression_type);
|
|
57
59
|
if (!s.ok()) {
|
|
58
60
|
return s;
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
63
|
|
|
62
64
|
{
|
|
63
|
-
const Status s =
|
|
65
|
+
const Status s =
|
|
66
|
+
ReadFooter(file_reader.get(), read_options, file_size, statistics);
|
|
64
67
|
if (!s.ok()) {
|
|
65
68
|
return s;
|
|
66
69
|
}
|
|
@@ -134,6 +137,7 @@ Status BlobFileReader::OpenFile(
|
|
|
134
137
|
}
|
|
135
138
|
|
|
136
139
|
Status BlobFileReader::ReadHeader(const RandomAccessFileReader* file_reader,
|
|
140
|
+
const ReadOptions& read_options,
|
|
137
141
|
uint32_t column_family_id,
|
|
138
142
|
Statistics* statistics,
|
|
139
143
|
CompressionType* compression_type) {
|
|
@@ -151,9 +155,10 @@ Status BlobFileReader::ReadHeader(const RandomAccessFileReader* file_reader,
|
|
|
151
155
|
constexpr size_t read_size = BlobLogHeader::kSize;
|
|
152
156
|
|
|
153
157
|
// TODO: rate limit reading headers from blob files.
|
|
154
|
-
const Status s =
|
|
155
|
-
|
|
156
|
-
|
|
158
|
+
const Status s =
|
|
159
|
+
ReadFromFile(file_reader, read_options, read_offset, read_size,
|
|
160
|
+
statistics, &header_slice, &buf, &aligned_buf,
|
|
161
|
+
Env::IO_TOTAL /* rate_limiter_priority */);
|
|
157
162
|
if (!s.ok()) {
|
|
158
163
|
return s;
|
|
159
164
|
}
|
|
@@ -187,6 +192,7 @@ Status BlobFileReader::ReadHeader(const RandomAccessFileReader* file_reader,
|
|
|
187
192
|
}
|
|
188
193
|
|
|
189
194
|
Status BlobFileReader::ReadFooter(const RandomAccessFileReader* file_reader,
|
|
195
|
+
const ReadOptions& read_options,
|
|
190
196
|
uint64_t file_size, Statistics* statistics) {
|
|
191
197
|
assert(file_size >= BlobLogHeader::kSize + BlobLogFooter::kSize);
|
|
192
198
|
assert(file_reader);
|
|
@@ -202,9 +208,10 @@ Status BlobFileReader::ReadFooter(const RandomAccessFileReader* file_reader,
|
|
|
202
208
|
constexpr size_t read_size = BlobLogFooter::kSize;
|
|
203
209
|
|
|
204
210
|
// TODO: rate limit reading footers from blob files.
|
|
205
|
-
const Status s =
|
|
206
|
-
|
|
207
|
-
|
|
211
|
+
const Status s =
|
|
212
|
+
ReadFromFile(file_reader, read_options, read_offset, read_size,
|
|
213
|
+
statistics, &footer_slice, &buf, &aligned_buf,
|
|
214
|
+
Env::IO_TOTAL /* rate_limiter_priority */);
|
|
208
215
|
if (!s.ok()) {
|
|
209
216
|
return s;
|
|
210
217
|
}
|
|
@@ -232,6 +239,7 @@ Status BlobFileReader::ReadFooter(const RandomAccessFileReader* file_reader,
|
|
|
232
239
|
}
|
|
233
240
|
|
|
234
241
|
Status BlobFileReader::ReadFromFile(const RandomAccessFileReader* file_reader,
|
|
242
|
+
const ReadOptions& read_options,
|
|
235
243
|
uint64_t read_offset, size_t read_size,
|
|
236
244
|
Statistics* statistics, Slice* slice,
|
|
237
245
|
Buffer* buf, AlignedBuf* aligned_buf,
|
|
@@ -246,17 +254,23 @@ Status BlobFileReader::ReadFromFile(const RandomAccessFileReader* file_reader,
|
|
|
246
254
|
|
|
247
255
|
Status s;
|
|
248
256
|
|
|
257
|
+
IOOptions io_options;
|
|
258
|
+
s = file_reader->PrepareIOOptions(read_options, io_options);
|
|
259
|
+
if (!s.ok()) {
|
|
260
|
+
return s;
|
|
261
|
+
}
|
|
262
|
+
|
|
249
263
|
if (file_reader->use_direct_io()) {
|
|
250
264
|
constexpr char* scratch = nullptr;
|
|
251
265
|
|
|
252
|
-
s = file_reader->Read(
|
|
266
|
+
s = file_reader->Read(io_options, read_offset, read_size, slice, scratch,
|
|
253
267
|
aligned_buf, rate_limiter_priority);
|
|
254
268
|
} else {
|
|
255
269
|
buf->reset(new char[read_size]);
|
|
256
270
|
constexpr AlignedBuf* aligned_scratch = nullptr;
|
|
257
271
|
|
|
258
|
-
s = file_reader->Read(
|
|
259
|
-
|
|
272
|
+
s = file_reader->Read(io_options, read_offset, read_size, slice, buf->get(),
|
|
273
|
+
aligned_scratch, rate_limiter_priority);
|
|
260
274
|
}
|
|
261
275
|
|
|
262
276
|
if (!s.ok()) {
|
|
@@ -324,8 +338,13 @@ Status BlobFileReader::GetBlob(
|
|
|
324
338
|
Status s;
|
|
325
339
|
constexpr bool for_compaction = true;
|
|
326
340
|
|
|
341
|
+
IOOptions io_options;
|
|
342
|
+
s = file_reader_->PrepareIOOptions(read_options, io_options);
|
|
343
|
+
if (!s.ok()) {
|
|
344
|
+
return s;
|
|
345
|
+
}
|
|
327
346
|
prefetched = prefetch_buffer->TryReadFromCache(
|
|
328
|
-
|
|
347
|
+
io_options, file_reader_.get(), record_offset,
|
|
329
348
|
static_cast<size_t>(record_size), &record_slice, &s,
|
|
330
349
|
read_options.rate_limiter_priority, for_compaction);
|
|
331
350
|
if (!s.ok()) {
|
|
@@ -338,10 +357,10 @@ Status BlobFileReader::GetBlob(
|
|
|
338
357
|
PERF_COUNTER_ADD(blob_read_count, 1);
|
|
339
358
|
PERF_COUNTER_ADD(blob_read_byte, record_size);
|
|
340
359
|
PERF_TIMER_GUARD(blob_read_time);
|
|
341
|
-
const Status s = ReadFromFile(
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
360
|
+
const Status s = ReadFromFile(
|
|
361
|
+
file_reader_.get(), read_options, record_offset,
|
|
362
|
+
static_cast<size_t>(record_size), statistics_, &record_slice, &buf,
|
|
363
|
+
&aligned_buf, read_options.rate_limiter_priority);
|
|
345
364
|
if (!s.ok()) {
|
|
346
365
|
return s;
|
|
347
366
|
}
|
|
@@ -29,6 +29,7 @@ class Statistics;
|
|
|
29
29
|
class BlobFileReader {
|
|
30
30
|
public:
|
|
31
31
|
static Status Create(const ImmutableOptions& immutable_options,
|
|
32
|
+
const ReadOptions& read_options,
|
|
32
33
|
const FileOptions& file_options,
|
|
33
34
|
uint32_t column_family_id,
|
|
34
35
|
HistogramImpl* blob_file_read_hist,
|
|
@@ -74,15 +75,18 @@ class BlobFileReader {
|
|
|
74
75
|
std::unique_ptr<RandomAccessFileReader>* file_reader);
|
|
75
76
|
|
|
76
77
|
static Status ReadHeader(const RandomAccessFileReader* file_reader,
|
|
78
|
+
const ReadOptions& read_options,
|
|
77
79
|
uint32_t column_family_id, Statistics* statistics,
|
|
78
80
|
CompressionType* compression_type);
|
|
79
81
|
|
|
80
82
|
static Status ReadFooter(const RandomAccessFileReader* file_reader,
|
|
81
|
-
uint64_t file_size,
|
|
83
|
+
const ReadOptions& read_options, uint64_t file_size,
|
|
84
|
+
Statistics* statistics);
|
|
82
85
|
|
|
83
86
|
using Buffer = std::unique_ptr<char[]>;
|
|
84
87
|
|
|
85
88
|
static Status ReadFromFile(const RandomAccessFileReader* file_reader,
|
|
89
|
+
const ReadOptions& read_options,
|
|
86
90
|
uint64_t read_offset, size_t read_size,
|
|
87
91
|
Statistics* statistics, Slice* slice, Buffer* buf,
|
|
88
92
|
AlignedBuf* aligned_buf,
|
|
@@ -172,12 +172,12 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
172
172
|
|
|
173
173
|
std::unique_ptr<BlobFileReader> reader;
|
|
174
174
|
|
|
175
|
+
ReadOptions read_options;
|
|
175
176
|
ASSERT_OK(BlobFileReader::Create(
|
|
176
|
-
immutable_options, FileOptions(), column_family_id,
|
|
177
|
-
blob_file_number, nullptr /*IOTracer*/, &reader));
|
|
177
|
+
immutable_options, read_options, FileOptions(), column_family_id,
|
|
178
|
+
blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader));
|
|
178
179
|
|
|
179
180
|
// Make sure the blob can be retrieved with and without checksum verification
|
|
180
|
-
ReadOptions read_options;
|
|
181
181
|
read_options.verify_checksums = false;
|
|
182
182
|
|
|
183
183
|
constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
|
|
@@ -479,11 +479,11 @@ TEST_F(BlobFileReaderTest, Malformed) {
|
|
|
479
479
|
constexpr HistogramImpl* blob_file_read_hist = nullptr;
|
|
480
480
|
|
|
481
481
|
std::unique_ptr<BlobFileReader> reader;
|
|
482
|
-
|
|
483
|
-
ASSERT_TRUE(BlobFileReader::Create(immutable_options,
|
|
484
|
-
|
|
485
|
-
blob_file_number,
|
|
486
|
-
&reader)
|
|
482
|
+
const ReadOptions read_options;
|
|
483
|
+
ASSERT_TRUE(BlobFileReader::Create(immutable_options, read_options,
|
|
484
|
+
FileOptions(), column_family_id,
|
|
485
|
+
blob_file_read_hist, blob_file_number,
|
|
486
|
+
nullptr /*IOTracer*/, &reader)
|
|
487
487
|
.IsCorruption());
|
|
488
488
|
}
|
|
489
489
|
|
|
@@ -513,11 +513,11 @@ TEST_F(BlobFileReaderTest, TTL) {
|
|
|
513
513
|
constexpr HistogramImpl* blob_file_read_hist = nullptr;
|
|
514
514
|
|
|
515
515
|
std::unique_ptr<BlobFileReader> reader;
|
|
516
|
-
|
|
517
|
-
ASSERT_TRUE(BlobFileReader::Create(immutable_options,
|
|
518
|
-
|
|
519
|
-
blob_file_number,
|
|
520
|
-
&reader)
|
|
516
|
+
const ReadOptions read_options;
|
|
517
|
+
ASSERT_TRUE(BlobFileReader::Create(immutable_options, read_options,
|
|
518
|
+
FileOptions(), column_family_id,
|
|
519
|
+
blob_file_read_hist, blob_file_number,
|
|
520
|
+
nullptr /*IOTracer*/, &reader)
|
|
521
521
|
.IsCorruption());
|
|
522
522
|
}
|
|
523
523
|
|
|
@@ -552,11 +552,11 @@ TEST_F(BlobFileReaderTest, ExpirationRangeInHeader) {
|
|
|
552
552
|
constexpr HistogramImpl* blob_file_read_hist = nullptr;
|
|
553
553
|
|
|
554
554
|
std::unique_ptr<BlobFileReader> reader;
|
|
555
|
-
|
|
556
|
-
ASSERT_TRUE(BlobFileReader::Create(immutable_options,
|
|
557
|
-
|
|
558
|
-
blob_file_number,
|
|
559
|
-
&reader)
|
|
555
|
+
const ReadOptions read_options;
|
|
556
|
+
ASSERT_TRUE(BlobFileReader::Create(immutable_options, read_options,
|
|
557
|
+
FileOptions(), column_family_id,
|
|
558
|
+
blob_file_read_hist, blob_file_number,
|
|
559
|
+
nullptr /*IOTracer*/, &reader)
|
|
560
560
|
.IsCorruption());
|
|
561
561
|
}
|
|
562
562
|
|
|
@@ -591,11 +591,11 @@ TEST_F(BlobFileReaderTest, ExpirationRangeInFooter) {
|
|
|
591
591
|
constexpr HistogramImpl* blob_file_read_hist = nullptr;
|
|
592
592
|
|
|
593
593
|
std::unique_ptr<BlobFileReader> reader;
|
|
594
|
-
|
|
595
|
-
ASSERT_TRUE(BlobFileReader::Create(immutable_options,
|
|
596
|
-
|
|
597
|
-
blob_file_number,
|
|
598
|
-
&reader)
|
|
594
|
+
const ReadOptions read_options;
|
|
595
|
+
ASSERT_TRUE(BlobFileReader::Create(immutable_options, read_options,
|
|
596
|
+
FileOptions(), column_family_id,
|
|
597
|
+
blob_file_read_hist, blob_file_number,
|
|
598
|
+
nullptr /*IOTracer*/, &reader)
|
|
599
599
|
.IsCorruption());
|
|
600
600
|
}
|
|
601
601
|
|
|
@@ -629,9 +629,9 @@ TEST_F(BlobFileReaderTest, IncorrectColumnFamily) {
|
|
|
629
629
|
std::unique_ptr<BlobFileReader> reader;
|
|
630
630
|
|
|
631
631
|
constexpr uint32_t incorrect_column_family_id = 2;
|
|
632
|
-
|
|
633
|
-
ASSERT_TRUE(BlobFileReader::Create(immutable_options,
|
|
634
|
-
incorrect_column_family_id,
|
|
632
|
+
const ReadOptions read_options;
|
|
633
|
+
ASSERT_TRUE(BlobFileReader::Create(immutable_options, read_options,
|
|
634
|
+
FileOptions(), incorrect_column_family_id,
|
|
635
635
|
blob_file_read_hist, blob_file_number,
|
|
636
636
|
nullptr /*IOTracer*/, &reader)
|
|
637
637
|
.IsCorruption());
|
|
@@ -664,10 +664,10 @@ TEST_F(BlobFileReaderTest, BlobCRCError) {
|
|
|
664
664
|
constexpr HistogramImpl* blob_file_read_hist = nullptr;
|
|
665
665
|
|
|
666
666
|
std::unique_ptr<BlobFileReader> reader;
|
|
667
|
-
|
|
667
|
+
const ReadOptions read_options;
|
|
668
668
|
ASSERT_OK(BlobFileReader::Create(
|
|
669
|
-
immutable_options, FileOptions(), column_family_id,
|
|
670
|
-
blob_file_number, nullptr /*IOTracer*/, &reader));
|
|
669
|
+
immutable_options, read_options, FileOptions(), column_family_id,
|
|
670
|
+
blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader));
|
|
671
671
|
|
|
672
672
|
SyncPoint::GetInstance()->SetCallBack(
|
|
673
673
|
"BlobFileReader::VerifyBlob:CheckBlobCRC", [](void* arg) {
|
|
@@ -728,13 +728,12 @@ TEST_F(BlobFileReaderTest, Compression) {
|
|
|
728
728
|
constexpr HistogramImpl* blob_file_read_hist = nullptr;
|
|
729
729
|
|
|
730
730
|
std::unique_ptr<BlobFileReader> reader;
|
|
731
|
-
|
|
731
|
+
ReadOptions read_options;
|
|
732
732
|
ASSERT_OK(BlobFileReader::Create(
|
|
733
|
-
immutable_options, FileOptions(), column_family_id,
|
|
734
|
-
blob_file_number, nullptr /*IOTracer*/, &reader));
|
|
733
|
+
immutable_options, read_options, FileOptions(), column_family_id,
|
|
734
|
+
blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader));
|
|
735
735
|
|
|
736
736
|
// Make sure the blob can be retrieved with and without checksum verification
|
|
737
|
-
ReadOptions read_options;
|
|
738
737
|
read_options.verify_checksums = false;
|
|
739
738
|
|
|
740
739
|
constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
|
|
@@ -803,10 +802,10 @@ TEST_F(BlobFileReaderTest, UncompressionError) {
|
|
|
803
802
|
constexpr HistogramImpl* blob_file_read_hist = nullptr;
|
|
804
803
|
|
|
805
804
|
std::unique_ptr<BlobFileReader> reader;
|
|
806
|
-
|
|
805
|
+
const ReadOptions read_options;
|
|
807
806
|
ASSERT_OK(BlobFileReader::Create(
|
|
808
|
-
immutable_options, FileOptions(), column_family_id,
|
|
809
|
-
blob_file_number, nullptr /*IOTracer*/, &reader));
|
|
807
|
+
immutable_options, read_options, FileOptions(), column_family_id,
|
|
808
|
+
blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader));
|
|
810
809
|
|
|
811
810
|
SyncPoint::GetInstance()->SetCallBack(
|
|
812
811
|
"BlobFileReader::UncompressBlobIfNeeded:TamperWithResult", [](void* arg) {
|
|
@@ -895,10 +894,10 @@ TEST_P(BlobFileReaderIOErrorTest, IOError) {
|
|
|
895
894
|
constexpr HistogramImpl* blob_file_read_hist = nullptr;
|
|
896
895
|
|
|
897
896
|
std::unique_ptr<BlobFileReader> reader;
|
|
898
|
-
|
|
897
|
+
const ReadOptions read_options;
|
|
899
898
|
const Status s = BlobFileReader::Create(
|
|
900
|
-
immutable_options, FileOptions(), column_family_id,
|
|
901
|
-
blob_file_number, nullptr /*IOTracer*/, &reader);
|
|
899
|
+
immutable_options, read_options, FileOptions(), column_family_id,
|
|
900
|
+
blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader);
|
|
902
901
|
|
|
903
902
|
const bool fail_during_create =
|
|
904
903
|
(sync_point_ != "BlobFileReader::GetBlob:ReadFromFile");
|
|
@@ -983,10 +982,10 @@ TEST_P(BlobFileReaderDecodingErrorTest, DecodingError) {
|
|
|
983
982
|
constexpr HistogramImpl* blob_file_read_hist = nullptr;
|
|
984
983
|
|
|
985
984
|
std::unique_ptr<BlobFileReader> reader;
|
|
986
|
-
|
|
985
|
+
const ReadOptions read_options;
|
|
987
986
|
const Status s = BlobFileReader::Create(
|
|
988
|
-
immutable_options, FileOptions(), column_family_id,
|
|
989
|
-
blob_file_number, nullptr /*IOTracer*/, &reader);
|
|
987
|
+
immutable_options, read_options, FileOptions(), column_family_id,
|
|
988
|
+
blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader);
|
|
990
989
|
|
|
991
990
|
const bool fail_during_create =
|
|
992
991
|
sync_point_ != "BlobFileReader::GetBlob:TamperWithResult";
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
#include "db/blob/blob_log_format.h"
|
|
12
12
|
#include "file/writable_file_writer.h"
|
|
13
|
-
#include "monitoring/
|
|
13
|
+
#include "monitoring/statistics_impl.h"
|
|
14
14
|
#include "rocksdb/system_clock.h"
|
|
15
15
|
#include "test_util/sync_point.h"
|
|
16
16
|
#include "util/coding.h"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
#include "db/blob/blob_contents.h"
|
|
14
14
|
#include "db/blob/blob_file_reader.h"
|
|
15
15
|
#include "db/blob/blob_log_format.h"
|
|
16
|
-
#include "monitoring/
|
|
16
|
+
#include "monitoring/statistics_impl.h"
|
|
17
17
|
#include "options/cf_options.h"
|
|
18
18
|
#include "table/get_context.h"
|
|
19
19
|
#include "table/multiget_context.h"
|
|
@@ -209,7 +209,8 @@ Status BlobSource::GetBlob(const ReadOptions& read_options,
|
|
|
209
209
|
|
|
210
210
|
{
|
|
211
211
|
CacheHandleGuard<BlobFileReader> blob_file_reader;
|
|
212
|
-
s = blob_file_cache_->GetBlobFileReader(file_number,
|
|
212
|
+
s = blob_file_cache_->GetBlobFileReader(read_options, file_number,
|
|
213
|
+
&blob_file_reader);
|
|
213
214
|
if (!s.ok()) {
|
|
214
215
|
return s;
|
|
215
216
|
}
|
|
@@ -372,8 +373,8 @@ void BlobSource::MultiGetBlobFromOneFile(const ReadOptions& read_options,
|
|
|
372
373
|
}
|
|
373
374
|
|
|
374
375
|
CacheHandleGuard<BlobFileReader> blob_file_reader;
|
|
375
|
-
Status s =
|
|
376
|
-
|
|
376
|
+
Status s = blob_file_cache_->GetBlobFileReader(read_options, file_number,
|
|
377
|
+
&blob_file_reader);
|
|
377
378
|
if (!s.ok()) {
|
|
378
379
|
for (size_t i = 0; i < _blob_reqs.size(); ++i) {
|
|
379
380
|
BlobReadRequest* const req = _blob_reqs[i].first;
|
|
@@ -95,9 +95,9 @@ class BlobSource {
|
|
|
95
95
|
uint64_t* bytes_read);
|
|
96
96
|
|
|
97
97
|
inline Status GetBlobFileReader(
|
|
98
|
-
uint64_t blob_file_number,
|
|
98
|
+
const ReadOptions& read_options, uint64_t blob_file_number,
|
|
99
99
|
CacheHandleGuard<BlobFileReader>* blob_file_reader) {
|
|
100
|
-
return blob_file_cache_->GetBlobFileReader(blob_file_number,
|
|
100
|
+
return blob_file_cache_->GetBlobFileReader(read_options, blob_file_number,
|
|
101
101
|
blob_file_reader);
|
|
102
102
|
}
|
|
103
103
|
|
|
@@ -517,7 +517,8 @@ TEST_F(BlobSourceTest, GetCompressedBlobs) {
|
|
|
517
517
|
compression, blob_offsets, blob_sizes);
|
|
518
518
|
|
|
519
519
|
CacheHandleGuard<BlobFileReader> blob_file_reader;
|
|
520
|
-
ASSERT_OK(blob_source.GetBlobFileReader(file_number,
|
|
520
|
+
ASSERT_OK(blob_source.GetBlobFileReader(read_options, file_number,
|
|
521
|
+
&blob_file_reader));
|
|
521
522
|
ASSERT_NE(blob_file_reader.GetValue(), nullptr);
|
|
522
523
|
|
|
523
524
|
const uint64_t file_size = blob_file_reader.GetValue()->GetFileSize();
|
|
@@ -1139,12 +1140,13 @@ TEST_F(BlobSecondaryCacheTest, GetBlobsFromSecondaryCache) {
|
|
|
1139
1140
|
blob_file_cache.get());
|
|
1140
1141
|
|
|
1141
1142
|
CacheHandleGuard<BlobFileReader> file_reader;
|
|
1142
|
-
|
|
1143
|
+
ReadOptions read_options;
|
|
1144
|
+
ASSERT_OK(
|
|
1145
|
+
blob_source.GetBlobFileReader(read_options, file_number, &file_reader));
|
|
1143
1146
|
ASSERT_NE(file_reader.GetValue(), nullptr);
|
|
1144
1147
|
const uint64_t file_size = file_reader.GetValue()->GetFileSize();
|
|
1145
1148
|
ASSERT_EQ(file_reader.GetValue()->GetCompressionType(), kNoCompression);
|
|
1146
1149
|
|
|
1147
|
-
ReadOptions read_options;
|
|
1148
1150
|
read_options.verify_checksums = true;
|
|
1149
1151
|
|
|
1150
1152
|
auto blob_cache = options_.blob_cache;
|
|
@@ -56,8 +56,8 @@ TableBuilder* NewTableBuilder(const TableBuilderOptions& tboptions,
|
|
|
56
56
|
Status BuildTable(
|
|
57
57
|
const std::string& dbname, VersionSet* versions,
|
|
58
58
|
const ImmutableDBOptions& db_options, const TableBuilderOptions& tboptions,
|
|
59
|
-
const FileOptions& file_options,
|
|
60
|
-
InternalIterator* iter,
|
|
59
|
+
const FileOptions& file_options, const ReadOptions& read_options,
|
|
60
|
+
TableCache* table_cache, InternalIterator* iter,
|
|
61
61
|
std::vector<std::unique_ptr<FragmentedRangeTombstoneIterator>>
|
|
62
62
|
range_del_iters,
|
|
63
63
|
FileMetaData* meta, std::vector<BlobFileAddition>* blob_file_additions,
|
|
@@ -255,8 +255,8 @@ Status BuildTable(
|
|
|
255
255
|
SizeApproximationOptions approx_opts;
|
|
256
256
|
approx_opts.files_size_error_margin = 0.1;
|
|
257
257
|
meta->compensated_range_deletion_size += versions->ApproximateSize(
|
|
258
|
-
approx_opts, version, kv.first.Encode(),
|
|
259
|
-
0 /* start_level */, -1 /* end_level */,
|
|
258
|
+
approx_opts, read_options, version, kv.first.Encode(),
|
|
259
|
+
tombstone_end.Encode(), 0 /* start_level */, -1 /* end_level */,
|
|
260
260
|
TableReaderCaller::kFlush);
|
|
261
261
|
}
|
|
262
262
|
last_tombstone_start_user_key = range_del_it->start_key();
|
|
@@ -291,6 +291,7 @@ Status BuildTable(
|
|
|
291
291
|
if (s.ok() && !empty) {
|
|
292
292
|
uint64_t file_size = builder->FileSize();
|
|
293
293
|
meta->fd.file_size = file_size;
|
|
294
|
+
meta->tail_size = builder->GetTailSize();
|
|
294
295
|
meta->marked_for_compaction = builder->NeedCompact();
|
|
295
296
|
assert(meta->fd.GetFileSize() > 0);
|
|
296
297
|
tp = builder
|
|
@@ -369,7 +370,6 @@ Status BuildTable(
|
|
|
369
370
|
// here because this is a special case after we finish the table building.
|
|
370
371
|
// No matter whether use_direct_io_for_flush_and_compaction is true,
|
|
371
372
|
// the goal is to cache it here for further user reads.
|
|
372
|
-
ReadOptions read_options;
|
|
373
373
|
std::unique_ptr<InternalIterator> it(table_cache->NewIterator(
|
|
374
374
|
read_options, file_options, tboptions.internal_comparator, *meta,
|
|
375
375
|
nullptr /* range_del_agg */, mutable_cf_options.prefix_extractor,
|
|
@@ -381,7 +381,8 @@ Status BuildTable(
|
|
|
381
381
|
MaxFileSizeForL0MetaPin(mutable_cf_options),
|
|
382
382
|
/*smallest_compaction_key=*/nullptr,
|
|
383
383
|
/*largest_compaction_key*/ nullptr,
|
|
384
|
-
/*allow_unprepared_value*/ false
|
|
384
|
+
/*allow_unprepared_value*/ false,
|
|
385
|
+
mutable_cf_options.block_protection_bytes_per_key));
|
|
385
386
|
s = it->status();
|
|
386
387
|
if (s.ok() && paranoid_file_checks) {
|
|
387
388
|
OutputValidator file_validator(tboptions.internal_comparator,
|
|
@@ -53,8 +53,8 @@ TableBuilder* NewTableBuilder(const TableBuilderOptions& tboptions,
|
|
|
53
53
|
extern Status BuildTable(
|
|
54
54
|
const std::string& dbname, VersionSet* versions,
|
|
55
55
|
const ImmutableDBOptions& db_options, const TableBuilderOptions& tboptions,
|
|
56
|
-
const FileOptions& file_options,
|
|
57
|
-
InternalIterator* iter,
|
|
56
|
+
const FileOptions& file_options, const ReadOptions& read_options,
|
|
57
|
+
TableCache* table_cache, InternalIterator* iter,
|
|
58
58
|
std::vector<std::unique_ptr<FragmentedRangeTombstoneIterator>>
|
|
59
59
|
range_del_iters,
|
|
60
60
|
FileMetaData* meta, std::vector<BlobFileAddition>* blob_file_additions,
|