@nxtedition/rocksdb 8.2.8 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +0 -21
- package/deps/rocksdb/rocksdb/CMakeLists.txt +20 -10
- package/deps/rocksdb/rocksdb/Makefile +37 -25
- package/deps/rocksdb/rocksdb/README.md +29 -0
- package/deps/rocksdb/rocksdb/TARGETS +25 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +229 -74
- package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -95
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2683 -496
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +580 -159
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +145 -42
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +20 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +391 -17
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +309 -212
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -32
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +439 -12
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +44 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +11 -1
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -3
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
- package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +28 -12
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +20 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +35 -10
- package/deps/rocksdb/rocksdb/db/c.cc +233 -6
- package/deps/rocksdb/rocksdb/db/c_test.c +140 -6
- package/deps/rocksdb/rocksdb/db/column_family.cc +110 -51
- package/deps/rocksdb/rocksdb/db/column_family.h +34 -2
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +314 -7
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +106 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +47 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +10 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +148 -60
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +22 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +33 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +90 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +170 -95
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +32 -58
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +46 -10
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +850 -44
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +275 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +52 -19
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +733 -320
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +155 -66
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +516 -155
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +8 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +17 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +100 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +95 -50
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +136 -79
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +6 -95
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +31 -22
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +85 -57
- package/deps/rocksdb/rocksdb/db/db_iter.h +11 -2
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +193 -7
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +294 -26
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +364 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +13 -3
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +282 -167
- package/deps/rocksdb/rocksdb/db/db_test.cc +180 -49
- package/deps/rocksdb/rocksdb/db/db_test2.cc +84 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +25 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.h +45 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +14 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +245 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +480 -1
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +67 -34
- package/deps/rocksdb/rocksdb/db/error_handler.h +13 -9
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +144 -4
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +105 -17
- package/deps/rocksdb/rocksdb/db/flush_job.h +27 -4
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -12
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
- package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +70 -83
- package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +45 -11
- package/deps/rocksdb/rocksdb/db/memtable_list.h +43 -2
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +91 -5
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
- package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
- package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +5 -2
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +25 -7
- package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +459 -74
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
- package/deps/rocksdb/rocksdb/db/table_cache.cc +76 -54
- package/deps/rocksdb/rocksdb/db/table_cache.h +18 -12
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
- package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
- package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
- package/deps/rocksdb/rocksdb/db/version_edit.h +58 -10
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
- package/deps/rocksdb/rocksdb/db/version_set.cc +207 -110
- package/deps/rocksdb/rocksdb/db/version_set.h +36 -15
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +47 -26
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +55 -20
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +37 -13
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +110 -58
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +68 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +429 -237
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +13 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +21 -14
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +29 -38
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +302 -101
- package/deps/rocksdb/rocksdb/env/env.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +79 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +100 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +64 -18
- package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
- package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1225 -97
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +72 -33
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +40 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +163 -91
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +112 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +108 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +42 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +92 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +34 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +91 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +130 -22
- package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +92 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +37 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +20 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +42 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -2
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +4 -3
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +22 -1
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +6 -1
- package/deps/rocksdb/rocksdb/options/db_options.cc +54 -2
- package/deps/rocksdb/rocksdb/options/db_options.h +4 -0
- package/deps/rocksdb/rocksdb/options/options.cc +15 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +18 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +14 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -1
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/README +10 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +32 -12
- package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
- package/deps/rocksdb/rocksdb/src.mk +10 -1
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
- package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +116 -43
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +9 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +321 -49
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +98 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +233 -98
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +58 -23
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +52 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -18
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +20 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +232 -71
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +36 -19
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +11 -7
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +14 -13
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +9 -2
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/format.cc +175 -33
- package/deps/rocksdb/rocksdb/table/format.h +63 -10
- package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
- package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +22 -2
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +45 -9
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +24 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
- package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +87 -65
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +221 -33
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -11
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
- package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
- package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
- package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
- package/deps/rocksdb/rocksdb/util/cast_util.h +24 -0
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +55 -8
- package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +119 -35
- package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
- package/deps/rocksdb/rocksdb/util/hash.h +7 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
- package/deps/rocksdb/rocksdb/util/math.h +58 -6
- package/deps/rocksdb/rocksdb/util/math128.h +29 -7
- package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
- package/deps/rocksdb/rocksdb/util/overload.h +23 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
- package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +10 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +385 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +192 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +461 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
- package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +71 -26
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +20 -16
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +7 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +12 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +272 -33
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +195 -23
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +19 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +88 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +43 -17
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +73 -24
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +41 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +15 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +59 -28
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +111 -14
- package/deps/rocksdb/rocksdb.gyp +6 -2
- package/index.js +0 -8
- 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/cmake/modules/CxxFlags.cmake +0 -7
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
|
@@ -22,12 +22,37 @@
|
|
|
22
22
|
#include "util/rate_limiter_impl.h"
|
|
23
23
|
|
|
24
24
|
namespace ROCKSDB_NAMESPACE {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
inline Histograms GetFileReadHistograms(Statistics* stats,
|
|
26
|
+
Env::IOActivity io_activity) {
|
|
27
|
+
switch (io_activity) {
|
|
28
|
+
case Env::IOActivity::kFlush:
|
|
29
|
+
return Histograms::FILE_READ_FLUSH_MICROS;
|
|
30
|
+
case Env::IOActivity::kCompaction:
|
|
31
|
+
return Histograms::FILE_READ_COMPACTION_MICROS;
|
|
32
|
+
case Env::IOActivity::kDBOpen:
|
|
33
|
+
return Histograms::FILE_READ_DB_OPEN_MICROS;
|
|
34
|
+
default:
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (stats && stats->get_stats_level() > StatsLevel::kExceptDetailedTimers) {
|
|
39
|
+
switch (io_activity) {
|
|
40
|
+
case Env::IOActivity::kGet:
|
|
41
|
+
return Histograms::FILE_READ_GET_MICROS;
|
|
42
|
+
case Env::IOActivity::kMultiGet:
|
|
43
|
+
return Histograms::FILE_READ_MULTIGET_MICROS;
|
|
44
|
+
case Env::IOActivity::kDBIterator:
|
|
45
|
+
return Histograms::FILE_READ_DB_ITERATOR_MICROS;
|
|
46
|
+
case Env::IOActivity::kVerifyDBChecksum:
|
|
47
|
+
return Histograms::FILE_READ_VERIFY_DB_CHECKSUM_MICROS;
|
|
48
|
+
case Env::IOActivity::kVerifyFileChecksums:
|
|
49
|
+
return Histograms::FILE_READ_VERIFY_FILE_CHECKSUMS_MICROS;
|
|
50
|
+
default:
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return Histograms::HISTOGRAM_ENUM_MAX;
|
|
55
|
+
}
|
|
31
56
|
inline void RecordIOStats(Statistics* stats, Temperature file_temperature,
|
|
32
57
|
bool is_last_level, size_t size) {
|
|
33
58
|
IOSTATS_ADD(bytes_read, size);
|
|
@@ -79,11 +104,11 @@ IOStatus RandomAccessFileReader::Create(
|
|
|
79
104
|
return io_s;
|
|
80
105
|
}
|
|
81
106
|
|
|
82
|
-
IOStatus RandomAccessFileReader::Read(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
Env::IOPriority rate_limiter_priority) const {
|
|
107
|
+
IOStatus RandomAccessFileReader::Read(const IOOptions& opts, uint64_t offset,
|
|
108
|
+
size_t n, Slice* result, char* scratch,
|
|
109
|
+
AlignedBuf* aligned_buf) const {
|
|
86
110
|
(void)aligned_buf;
|
|
111
|
+
const Env::IOPriority rate_limiter_priority = opts.rate_limiter_priority;
|
|
87
112
|
|
|
88
113
|
TEST_SYNC_POINT_CALLBACK("RandomAccessFileReader::Read", nullptr);
|
|
89
114
|
|
|
@@ -97,17 +122,23 @@ IOStatus RandomAccessFileReader::Read(
|
|
|
97
122
|
|
|
98
123
|
IOStatus io_s;
|
|
99
124
|
uint64_t elapsed = 0;
|
|
125
|
+
size_t alignment = file_->GetRequiredBufferAlignment();
|
|
126
|
+
bool is_aligned = false;
|
|
127
|
+
if (scratch != nullptr) {
|
|
128
|
+
// Check if offset, length and buffer are aligned.
|
|
129
|
+
is_aligned = (offset & (alignment - 1)) == 0 &&
|
|
130
|
+
(n & (alignment - 1)) == 0 &&
|
|
131
|
+
(uintptr_t(scratch) & (alignment - 1)) == 0;
|
|
132
|
+
}
|
|
133
|
+
|
|
100
134
|
{
|
|
101
135
|
StopWatch sw(clock_, stats_, hist_type_,
|
|
102
|
-
(opts.io_activity
|
|
103
|
-
? kReadHistograms[(std::size_t)(opts.io_activity)]
|
|
104
|
-
: Histograms::HISTOGRAM_ENUM_MAX,
|
|
136
|
+
GetFileReadHistograms(stats_, opts.io_activity),
|
|
105
137
|
(stats_ != nullptr) ? &elapsed : nullptr, true /*overwrite*/,
|
|
106
138
|
true /*delay_enabled*/);
|
|
107
139
|
auto prev_perf_level = GetPerfLevel();
|
|
108
140
|
IOSTATS_TIMER_GUARD(read_nanos);
|
|
109
|
-
if (use_direct_io()) {
|
|
110
|
-
size_t alignment = file_->GetRequiredBufferAlignment();
|
|
141
|
+
if (use_direct_io() && is_aligned == false) {
|
|
111
142
|
size_t aligned_offset =
|
|
112
143
|
TruncateToPageBoundary(alignment, static_cast<size_t>(offset));
|
|
113
144
|
size_t offset_advance = static_cast<size_t>(offset) - aligned_offset;
|
|
@@ -182,9 +213,9 @@ IOStatus RandomAccessFileReader::Read(
|
|
|
182
213
|
if (rate_limiter_->IsRateLimited(RateLimiter::OpType::kRead)) {
|
|
183
214
|
sw.DelayStart();
|
|
184
215
|
}
|
|
185
|
-
allowed = rate_limiter_->RequestToken(
|
|
186
|
-
|
|
187
|
-
|
|
216
|
+
allowed = rate_limiter_->RequestToken(
|
|
217
|
+
n - pos, (use_direct_io() ? alignment : 0), rate_limiter_priority,
|
|
218
|
+
stats_, RateLimiter::OpType::kRead);
|
|
188
219
|
if (rate_limiter_->IsRateLimited(RateLimiter::OpType::kRead)) {
|
|
189
220
|
sw.DelayStop();
|
|
190
221
|
}
|
|
@@ -240,6 +271,14 @@ IOStatus RandomAccessFileReader::Read(
|
|
|
240
271
|
file_read_hist_->Add(elapsed);
|
|
241
272
|
}
|
|
242
273
|
|
|
274
|
+
#ifndef NDEBUG
|
|
275
|
+
auto pair = std::make_pair(&file_name_, &io_s);
|
|
276
|
+
if (offset == 0) {
|
|
277
|
+
TEST_SYNC_POINT_CALLBACK("RandomAccessFileReader::Read::BeforeReturn",
|
|
278
|
+
&pair);
|
|
279
|
+
}
|
|
280
|
+
TEST_SYNC_POINT_CALLBACK("RandomAccessFileReader::Read::AnyOffset", &pair);
|
|
281
|
+
#endif
|
|
243
282
|
return io_s;
|
|
244
283
|
}
|
|
245
284
|
|
|
@@ -269,9 +308,10 @@ bool TryMerge(FSReadRequest* dest, const FSReadRequest& src) {
|
|
|
269
308
|
return true;
|
|
270
309
|
}
|
|
271
310
|
|
|
272
|
-
IOStatus RandomAccessFileReader::MultiRead(
|
|
273
|
-
|
|
274
|
-
|
|
311
|
+
IOStatus RandomAccessFileReader::MultiRead(const IOOptions& opts,
|
|
312
|
+
FSReadRequest* read_reqs,
|
|
313
|
+
size_t num_reqs,
|
|
314
|
+
AlignedBuf* aligned_buf) const {
|
|
275
315
|
(void)aligned_buf; // suppress warning of unused variable in LITE mode
|
|
276
316
|
assert(num_reqs > 0);
|
|
277
317
|
|
|
@@ -280,6 +320,7 @@ IOStatus RandomAccessFileReader::MultiRead(
|
|
|
280
320
|
assert(read_reqs[i].offset <= read_reqs[i + 1].offset);
|
|
281
321
|
}
|
|
282
322
|
#endif // !NDEBUG
|
|
323
|
+
const Env::IOPriority rate_limiter_priority = opts.rate_limiter_priority;
|
|
283
324
|
|
|
284
325
|
// To be paranoid modify scratch a little bit, so in case underlying
|
|
285
326
|
// FileSystem doesn't fill the buffer but return success and `scratch` returns
|
|
@@ -296,9 +337,7 @@ IOStatus RandomAccessFileReader::MultiRead(
|
|
|
296
337
|
uint64_t elapsed = 0;
|
|
297
338
|
{
|
|
298
339
|
StopWatch sw(clock_, stats_, hist_type_,
|
|
299
|
-
(opts.io_activity
|
|
300
|
-
? kReadHistograms[(std::size_t)(opts.io_activity)]
|
|
301
|
-
: Histograms::HISTOGRAM_ENUM_MAX,
|
|
340
|
+
GetFileReadHistograms(stats_, opts.io_activity),
|
|
302
341
|
(stats_ != nullptr) ? &elapsed : nullptr, true /*overwrite*/,
|
|
303
342
|
true /*delay_enabled*/);
|
|
304
343
|
auto prev_perf_level = GetPerfLevel();
|
|
@@ -314,14 +353,14 @@ IOStatus RandomAccessFileReader::MultiRead(
|
|
|
314
353
|
// Align and merge the read requests.
|
|
315
354
|
size_t alignment = file_->GetRequiredBufferAlignment();
|
|
316
355
|
for (size_t i = 0; i < num_reqs; i++) {
|
|
317
|
-
|
|
356
|
+
FSReadRequest r = Align(read_reqs[i], alignment);
|
|
318
357
|
if (i == 0) {
|
|
319
358
|
// head
|
|
320
|
-
aligned_reqs.push_back(r);
|
|
359
|
+
aligned_reqs.push_back(std::move(r));
|
|
321
360
|
|
|
322
361
|
} else if (!TryMerge(&aligned_reqs.back(), r)) {
|
|
323
362
|
// head + n
|
|
324
|
-
aligned_reqs.push_back(r);
|
|
363
|
+
aligned_reqs.push_back(std::move(r));
|
|
325
364
|
|
|
326
365
|
} else {
|
|
327
366
|
// unused
|
|
@@ -487,16 +526,16 @@ IOStatus RandomAccessFileReader::ReadAsync(
|
|
|
487
526
|
|
|
488
527
|
assert(read_async_info->buf_.CurrentSize() == 0);
|
|
489
528
|
|
|
490
|
-
StopWatch sw(clock_,
|
|
491
|
-
|
|
492
|
-
|
|
529
|
+
StopWatch sw(clock_, stats_, hist_type_,
|
|
530
|
+
GetFileReadHistograms(stats_, opts.io_activity),
|
|
531
|
+
(stats_ != nullptr) ? &elapsed : nullptr, true /*overwrite*/,
|
|
493
532
|
true /*delay_enabled*/);
|
|
494
533
|
s = file_->ReadAsync(aligned_req, opts, read_async_callback,
|
|
495
534
|
read_async_info, io_handle, del_fn, nullptr /*dbg*/);
|
|
496
535
|
} else {
|
|
497
|
-
StopWatch sw(clock_,
|
|
498
|
-
|
|
499
|
-
|
|
536
|
+
StopWatch sw(clock_, stats_, hist_type_,
|
|
537
|
+
GetFileReadHistograms(stats_, opts.io_activity),
|
|
538
|
+
(stats_ != nullptr) ? &elapsed : nullptr, true /*overwrite*/,
|
|
500
539
|
true /*delay_enabled*/);
|
|
501
540
|
s = file_->ReadAsync(req, opts, read_async_callback, read_async_info,
|
|
502
541
|
io_handle, del_fn, nullptr /*dbg*/);
|
|
@@ -164,31 +164,18 @@ class RandomAccessFileReader {
|
|
|
164
164
|
// 2. Otherwise, scratch is not used and can be null, the aligned_buf owns
|
|
165
165
|
// the internally allocated buffer on return, and the result refers to a
|
|
166
166
|
// region in aligned_buf.
|
|
167
|
-
//
|
|
168
|
-
// `rate_limiter_priority` is used to charge the internal rate limiter when
|
|
169
|
-
// enabled. The special value `Env::IO_TOTAL` makes this operation bypass the
|
|
170
|
-
// rate limiter.
|
|
171
167
|
IOStatus Read(const IOOptions& opts, uint64_t offset, size_t n, Slice* result,
|
|
172
|
-
char* scratch, AlignedBuf* aligned_buf
|
|
173
|
-
Env::IOPriority rate_limiter_priority) const;
|
|
168
|
+
char* scratch, AlignedBuf* aligned_buf) const;
|
|
174
169
|
|
|
175
170
|
// REQUIRES:
|
|
176
171
|
// num_reqs > 0, reqs do not overlap, and offsets in reqs are increasing.
|
|
177
172
|
// In non-direct IO mode, aligned_buf should be null;
|
|
178
173
|
// In direct IO mode, aligned_buf stores the aligned buffer allocated inside
|
|
179
174
|
// MultiRead, the result Slices in reqs refer to aligned_buf.
|
|
180
|
-
//
|
|
181
|
-
// `rate_limiter_priority` will be used to charge the internal rate limiter.
|
|
182
|
-
// It is not yet supported so the client must provide the special value
|
|
183
|
-
// `Env::IO_TOTAL` to bypass the rate limiter.
|
|
184
175
|
IOStatus MultiRead(const IOOptions& opts, FSReadRequest* reqs,
|
|
185
|
-
size_t num_reqs, AlignedBuf* aligned_buf
|
|
186
|
-
Env::IOPriority rate_limiter_priority) const;
|
|
176
|
+
size_t num_reqs, AlignedBuf* aligned_buf) const;
|
|
187
177
|
|
|
188
|
-
IOStatus Prefetch(uint64_t offset, size_t n
|
|
189
|
-
const Env::IOPriority rate_limiter_priority) const {
|
|
190
|
-
IOOptions opts;
|
|
191
|
-
opts.rate_limiter_priority = rate_limiter_priority;
|
|
178
|
+
IOStatus Prefetch(const IOOptions& opts, uint64_t offset, size_t n) const {
|
|
192
179
|
return file_->Prefetch(offset, n, opts, nullptr);
|
|
193
180
|
}
|
|
194
181
|
|
|
@@ -83,8 +83,9 @@ TEST_F(RandomAccessFileReaderTest, ReadDirectIO) {
|
|
|
83
83
|
Slice result;
|
|
84
84
|
AlignedBuf buf;
|
|
85
85
|
for (Env::IOPriority rate_limiter_priority : {Env::IO_LOW, Env::IO_TOTAL}) {
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
IOOptions io_opts;
|
|
87
|
+
io_opts.rate_limiter_priority = rate_limiter_priority;
|
|
88
|
+
ASSERT_OK(r->Read(io_opts, offset, len, &result, nullptr, &buf));
|
|
88
89
|
ASSERT_EQ(result.ToString(), content.substr(offset, len));
|
|
89
90
|
}
|
|
90
91
|
}
|
|
@@ -95,7 +96,18 @@ TEST_F(RandomAccessFileReaderTest, MultiReadDirectIO) {
|
|
|
95
96
|
"RandomAccessFileReader::MultiRead:AlignedReqs", [&](void* reqs) {
|
|
96
97
|
// Copy reqs, since it's allocated on stack inside MultiRead, which will
|
|
97
98
|
// be deallocated after MultiRead returns.
|
|
98
|
-
|
|
99
|
+
size_t i = 0;
|
|
100
|
+
aligned_reqs.resize(
|
|
101
|
+
(*reinterpret_cast<std::vector<FSReadRequest>*>(reqs)).size());
|
|
102
|
+
for (auto& req :
|
|
103
|
+
(*reinterpret_cast<std::vector<FSReadRequest>*>(reqs))) {
|
|
104
|
+
aligned_reqs[i].offset = req.offset;
|
|
105
|
+
aligned_reqs[i].len = req.len;
|
|
106
|
+
aligned_reqs[i].result = req.result;
|
|
107
|
+
aligned_reqs[i].status = req.status;
|
|
108
|
+
aligned_reqs[i].scratch = req.scratch;
|
|
109
|
+
i++;
|
|
110
|
+
}
|
|
99
111
|
});
|
|
100
112
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
|
|
101
113
|
|
|
@@ -135,8 +147,8 @@ TEST_F(RandomAccessFileReaderTest, MultiReadDirectIO) {
|
|
|
135
147
|
reqs.push_back(std::move(r0));
|
|
136
148
|
reqs.push_back(std::move(r1));
|
|
137
149
|
AlignedBuf aligned_buf;
|
|
138
|
-
ASSERT_OK(
|
|
139
|
-
|
|
150
|
+
ASSERT_OK(
|
|
151
|
+
r->MultiRead(IOOptions(), reqs.data(), reqs.size(), &aligned_buf));
|
|
140
152
|
|
|
141
153
|
AssertResult(content, reqs);
|
|
142
154
|
|
|
@@ -180,8 +192,8 @@ TEST_F(RandomAccessFileReaderTest, MultiReadDirectIO) {
|
|
|
180
192
|
reqs.push_back(std::move(r1));
|
|
181
193
|
reqs.push_back(std::move(r2));
|
|
182
194
|
AlignedBuf aligned_buf;
|
|
183
|
-
ASSERT_OK(
|
|
184
|
-
|
|
195
|
+
ASSERT_OK(
|
|
196
|
+
r->MultiRead(IOOptions(), reqs.data(), reqs.size(), &aligned_buf));
|
|
185
197
|
|
|
186
198
|
AssertResult(content, reqs);
|
|
187
199
|
|
|
@@ -225,8 +237,8 @@ TEST_F(RandomAccessFileReaderTest, MultiReadDirectIO) {
|
|
|
225
237
|
reqs.push_back(std::move(r1));
|
|
226
238
|
reqs.push_back(std::move(r2));
|
|
227
239
|
AlignedBuf aligned_buf;
|
|
228
|
-
ASSERT_OK(
|
|
229
|
-
|
|
240
|
+
ASSERT_OK(
|
|
241
|
+
r->MultiRead(IOOptions(), reqs.data(), reqs.size(), &aligned_buf));
|
|
230
242
|
|
|
231
243
|
AssertResult(content, reqs);
|
|
232
244
|
|
|
@@ -262,8 +274,8 @@ TEST_F(RandomAccessFileReaderTest, MultiReadDirectIO) {
|
|
|
262
274
|
reqs.push_back(std::move(r0));
|
|
263
275
|
reqs.push_back(std::move(r1));
|
|
264
276
|
AlignedBuf aligned_buf;
|
|
265
|
-
ASSERT_OK(
|
|
266
|
-
|
|
277
|
+
ASSERT_OK(
|
|
278
|
+
r->MultiRead(IOOptions(), reqs.data(), reqs.size(), &aligned_buf));
|
|
267
279
|
|
|
268
280
|
AssertResult(content, reqs);
|
|
269
281
|
|
|
@@ -283,7 +295,6 @@ TEST_F(RandomAccessFileReaderTest, MultiReadDirectIO) {
|
|
|
283
295
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
284
296
|
}
|
|
285
297
|
|
|
286
|
-
|
|
287
298
|
TEST(FSReadRequest, Align) {
|
|
288
299
|
FSReadRequest r;
|
|
289
300
|
r.offset = 2000;
|
|
@@ -99,6 +99,9 @@ class SequentialFileReader {
|
|
|
99
99
|
// when less than n bytes are actually read (e.g. at end of file). To avoid
|
|
100
100
|
// overcharging the rate limiter, the caller can use file size to cap n to
|
|
101
101
|
// read until end of file.
|
|
102
|
+
//
|
|
103
|
+
// TODO(hx235): accept parameter `IOOptions` containing
|
|
104
|
+
// `rate_limiter_priority` like RandomAccessFileReader::Read()
|
|
102
105
|
IOStatus Read(size_t n, Slice* result, char* scratch,
|
|
103
106
|
Env::IOPriority rate_limiter_priority);
|
|
104
107
|
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
#include <string>
|
|
14
14
|
|
|
15
15
|
#include "rocksdb/cache.h"
|
|
16
|
+
#include "rocksdb/compression_type.h"
|
|
16
17
|
#include "rocksdb/memory_allocator.h"
|
|
18
|
+
#include "rocksdb/options.h"
|
|
17
19
|
#include "rocksdb/slice.h"
|
|
18
20
|
#include "rocksdb/status.h"
|
|
19
21
|
|
|
@@ -66,7 +68,7 @@ class Cache {
|
|
|
66
68
|
enum class Priority { HIGH, LOW, BOTTOM };
|
|
67
69
|
|
|
68
70
|
// A set of callbacks to allow objects in the primary block cache to be
|
|
69
|
-
//
|
|
71
|
+
// persisted in a secondary cache. The purpose of the secondary cache
|
|
70
72
|
// is to support other ways of caching the object, such as persistent or
|
|
71
73
|
// compressed data, that may require the object to be parsed and transformed
|
|
72
74
|
// in some way. Since the primary cache holds C++ objects and the secondary
|
|
@@ -109,13 +111,18 @@ class Cache {
|
|
|
109
111
|
// pointer into static data).
|
|
110
112
|
using DeleterFn = void (*)(ObjectPtr obj, MemoryAllocator* allocator);
|
|
111
113
|
|
|
112
|
-
// The CreateCallback is takes in a buffer from the
|
|
113
|
-
// an object using it. The
|
|
114
|
+
// The CreateCallback is takes in a buffer from the secondary cache and
|
|
115
|
+
// constructs an object using it. The buffer could be compressed or
|
|
116
|
+
// uncompressed, as indicated by the type argument. If compressed,
|
|
117
|
+
// the callback is responsible for uncompressing it using information
|
|
118
|
+
// from the context, such as compression dictionary.
|
|
119
|
+
// The callback doesn't have ownership of the buffer and
|
|
114
120
|
// should copy the contents into its own buffer. The CreateContext* is
|
|
115
121
|
// provided by Lookup and may be used to follow DB- or CF-specific settings.
|
|
116
122
|
// In case of some error, non-OK is returned and the caller should ignore
|
|
117
123
|
// any result in out_obj. (The implementation must clean up after itself.)
|
|
118
|
-
using CreateCallback = Status (*)(const Slice& data,
|
|
124
|
+
using CreateCallback = Status (*)(const Slice& data, CompressionType type,
|
|
125
|
+
CacheTier source, CreateContext* context,
|
|
119
126
|
MemoryAllocator* allocator,
|
|
120
127
|
ObjectPtr* out_obj, size_t* out_charge);
|
|
121
128
|
|
|
@@ -242,12 +249,19 @@ class Cache {
|
|
|
242
249
|
// the item is only inserted into the primary cache. It may
|
|
243
250
|
// defer the insertion to the secondary cache as it sees fit.
|
|
244
251
|
//
|
|
252
|
+
// Along with the object pointer, the caller may pass a Slice pointing to
|
|
253
|
+
// the compressed serialized data of the object. If compressed is
|
|
254
|
+
// non-empty, then the caller must pass the type indicating the compression
|
|
255
|
+
// algorithm used. The cache may, optionally, also insert the compressed
|
|
256
|
+
// block into one or more cache tiers.
|
|
257
|
+
//
|
|
245
258
|
// When the inserted entry is no longer needed, it will be destroyed using
|
|
246
259
|
// helper->del_cb (if non-nullptr).
|
|
247
|
-
virtual Status Insert(
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
260
|
+
virtual Status Insert(
|
|
261
|
+
const Slice& key, ObjectPtr obj, const CacheItemHelper* helper,
|
|
262
|
+
size_t charge, Handle** handle = nullptr,
|
|
263
|
+
Priority priority = Priority::LOW, const Slice& compressed = Slice(),
|
|
264
|
+
CompressionType type = CompressionType::kNoCompression) = 0;
|
|
251
265
|
|
|
252
266
|
// Similar to Insert, but used for creating cache entries that cannot
|
|
253
267
|
// be found with Lookup, such as for memory charging purposes. The
|
|
@@ -361,6 +375,14 @@ class Cache {
|
|
|
361
375
|
// Returns the helper for the specified entry.
|
|
362
376
|
virtual const CacheItemHelper* GetCacheItemHelper(Handle* handle) const = 0;
|
|
363
377
|
|
|
378
|
+
virtual Status GetSecondaryCacheCapacity(size_t& /*size*/) const {
|
|
379
|
+
return Status::NotSupported();
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
virtual Status GetSecondaryCachePinnedUsage(size_t& /*size*/) const {
|
|
383
|
+
return Status::NotSupported();
|
|
384
|
+
}
|
|
385
|
+
|
|
364
386
|
// Call this on shutdown if you want to speed it up. Cache will disown
|
|
365
387
|
// any underlying data and will not free it on delete. This call will leak
|
|
366
388
|
// memory - call this only if you're shutting down the process.
|
|
@@ -514,7 +536,8 @@ class Cache {
|
|
|
514
536
|
// returns `true` if it has taken ownership of the Value (object), or
|
|
515
537
|
// `false` if the cache should destroy it as usual. Regardless, Ref() and
|
|
516
538
|
// Release() cannot be called on this Handle that is poised for eviction.
|
|
517
|
-
using EvictionCallback =
|
|
539
|
+
using EvictionCallback =
|
|
540
|
+
std::function<bool(const Slice& key, Handle* h, bool was_hit)>;
|
|
518
541
|
// Sets an eviction callback for this Cache. Not thread safe and only
|
|
519
542
|
// supports being set once, so should only be used during initialization
|
|
520
543
|
// or destruction, guaranteed before or after any thread-shared operations.
|
|
@@ -535,11 +558,14 @@ class CacheWrapper : public Cache {
|
|
|
535
558
|
// Only function that derived class must provide
|
|
536
559
|
// const char* Name() const override { ... }
|
|
537
560
|
|
|
538
|
-
Status Insert(
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
561
|
+
Status Insert(
|
|
562
|
+
const Slice& key, ObjectPtr value, const CacheItemHelper* helper,
|
|
563
|
+
size_t charge, Handle** handle = nullptr,
|
|
564
|
+
Priority priority = Priority::LOW,
|
|
565
|
+
const Slice& compressed_value = Slice(),
|
|
566
|
+
CompressionType type = CompressionType::kNoCompression) override {
|
|
567
|
+
return target_->Insert(key, value, helper, charge, handle, priority,
|
|
568
|
+
compressed_value, type);
|
|
543
569
|
}
|
|
544
570
|
|
|
545
571
|
Handle* CreateStandalone(const Slice& key, ObjectPtr obj,
|