@nxtedition/rocksdb 10.0.13 → 10.0.15
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/.tap/coverage/213879bb-47ae-470e-bb54-f4157d9f60e2.json +162898 -0
- package/.tap/processinfo/{4c642b53-6895-4ef0-9391-7c6b8d484262.json → 213879bb-47ae-470e-bb54-f4157d9f60e2.json} +117 -121
- package/.tap/test-results/node_modules/abstract-level/test/get-test.js.tap +0 -0
- package/.tap/test-results/test/abstract-level-test.js.tap +1705 -0
- package/.tap/test-results/test/batch-test.js.tap +12 -0
- package/.tap/test-results/test/chained-batch-gc-test.js.tap +11 -0
- package/.tap/test-results/test/cleanup-hanging-iterators-test.js.tap +58 -0
- package/.tap/test-results/test/clear-gc-test.js.tap +13 -0
- package/.tap/test-results/test/column-test.js.tap +55 -0
- package/.tap/test-results/test/common.js.tap +0 -0
- package/.tap/test-results/test/compression-test.js.tap +30 -0
- package/.tap/test-results/test/db-identity.js.tap +12 -0
- package/.tap/test-results/test/electron.js.tap +0 -0
- package/.tap/test-results/test/env-cleanup-hook-test.js.tap +2 -0
- package/.tap/test-results/test/env-cleanup-hook.js.tap +0 -0
- package/.tap/test-results/test/gc.js.tap +0 -0
- package/.tap/test-results/test/getproperty-test.js.tap +29 -0
- package/.tap/test-results/test/iterator-gc-test.js.tap +4 -0
- package/.tap/test-results/test/iterator-hwm-test.js.tap +24 -0
- package/.tap/test-results/test/iterator-recursion-test.js.tap +12 -0
- package/.tap/test-results/test/iterator-starvation-test.js.tap +2 -0
- package/.tap/test-results/test/iterator-test.js.tap +0 -0
- package/.tap/test-results/test/leak-tester-batch.js.tap +0 -0
- package/.tap/test-results/test/leak-tester-iterator.js.tap +0 -0
- package/.tap/test-results/test/leak-tester.js.tap +0 -0
- package/.tap/test-results/test/lock-test.js.tap +0 -0
- package/.tap/test-results/test/lock.js.tap +0 -0
- package/.tap/test-results/test/make.js.tap +0 -0
- package/.tap/test-results/test/max-rev-merge.js.tap +0 -12
- package/.tap/test-results/test/merge-operator-test.js.tap +0 -0
- package/.tap/test-results/test/mkdir-test.js.tap +0 -0
- package/.tap/test-results/test/segfault-test.js.tap +0 -0
- package/.tap/test-results/test/stack-blower.js.tap +0 -0
- package/binding.cc +42 -34
- package/deps/rocksdb/rocksdb/CMakeLists.txt +44 -14
- package/deps/rocksdb/rocksdb/Makefile +34 -17
- package/deps/rocksdb/rocksdb/TARGETS +27 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +95 -42
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +381 -393
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +88 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +14 -7
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +1 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +21 -19
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +8 -7
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +1 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +89 -13
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +16 -8
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +6 -6
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +15 -9
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +16 -13
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +306 -23
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +3 -4
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +30 -27
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +8 -10
- package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.cc +20 -0
- package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.h +83 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +19 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +18 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +7 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +56 -27
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +11 -7
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +20 -19
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +106 -31
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +5 -8
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +4 -2
- package/deps/rocksdb/rocksdb/db/builder.cc +89 -44
- package/deps/rocksdb/rocksdb/db/builder.h +4 -6
- package/deps/rocksdb/rocksdb/db/c.cc +205 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +141 -20
- package/deps/rocksdb/rocksdb/db/coalescing_iterator.cc +47 -0
- package/deps/rocksdb/rocksdb/db/coalescing_iterator.h +79 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +100 -36
- package/deps/rocksdb/rocksdb/db/column_family.h +46 -28
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +168 -46
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +51 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +72 -24
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +11 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +7 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +87 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +310 -70
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +78 -62
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +33 -96
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +18 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +42 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +20 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +7 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +18 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +95 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +6 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +213 -34
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +7 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +16 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +75 -142
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +577 -34
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience.cc +1 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +7 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +366 -136
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +9 -10
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +282 -6
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +551 -150
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +41 -13
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +54 -17
- package/deps/rocksdb/rocksdb/db/db_follower_test.cc +527 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -58
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +34 -45
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +699 -580
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +308 -230
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +180 -107
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +10 -6
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +36 -61
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +347 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.h +54 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +206 -155
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +5 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +41 -39
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +26 -22
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +14 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +126 -46
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +21 -9
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +294 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +116 -78
- package/deps/rocksdb/rocksdb/db/db_iter.h +31 -7
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +34 -14
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +69 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +153 -18
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +9 -1
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +6 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +105 -0
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +97 -111
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +12 -3
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +82 -30
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -22
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +74 -0
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +175 -47
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/db_test.cc +133 -109
- package/deps/rocksdb/rocksdb/db/db_test2.cc +227 -139
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.h +67 -24
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +140 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +17 -19
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +332 -87
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +250 -30
- package/deps/rocksdb/rocksdb/db/dbformat.cc +41 -8
- package/deps/rocksdb/rocksdb/db/dbformat.h +100 -17
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +48 -8
- package/deps/rocksdb/rocksdb/db/error_handler.cc +102 -116
- package/deps/rocksdb/rocksdb/db/error_handler.h +28 -6
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +263 -99
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +3 -1
- package/deps/rocksdb/rocksdb/db/experimental.cc +1073 -7
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +261 -111
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +263 -183
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +31 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +698 -7
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +5 -3
- package/deps/rocksdb/rocksdb/db/flush_job.cc +41 -41
- package/deps/rocksdb/rocksdb/db/flush_job.h +11 -8
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -13
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +19 -6
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +12 -12
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +83 -52
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +169 -2
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -6
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -2
- package/deps/rocksdb/rocksdb/db/job_context.h +17 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +44 -20
- package/deps/rocksdb/rocksdb/db/log_reader.h +3 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +81 -17
- package/deps/rocksdb/rocksdb/db/log_writer.cc +135 -92
- package/deps/rocksdb/rocksdb/db/log_writer.h +11 -10
- package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -3
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable.cc +82 -62
- package/deps/rocksdb/rocksdb/db/memtable.h +17 -9
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +19 -13
- package/deps/rocksdb/rocksdb/db/memtable_list.h +3 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +38 -5
- package/deps/rocksdb/rocksdb/db/merge_context.h +3 -0
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +34 -156
- package/deps/rocksdb/rocksdb/db/merge_helper.h +52 -46
- package/deps/rocksdb/rocksdb/db/merge_test.cc +16 -11
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_impl.h +289 -0
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_test.cc +918 -0
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/output_validator.cc +8 -12
- package/deps/rocksdb/rocksdb/db/output_validator.h +1 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +23 -4
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +2 -3
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +2 -2
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +21 -8
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +0 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +0 -1
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +17 -4
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +6 -3
- package/deps/rocksdb/rocksdb/db/repair.cc +35 -29
- package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +428 -156
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +393 -227
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +154 -82
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +2 -2
- package/deps/rocksdb/rocksdb/db/table_cache.cc +9 -11
- package/deps/rocksdb/rocksdb/db/table_cache.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +8 -3
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +27 -26
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +23 -23
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +5 -5
- package/deps/rocksdb/rocksdb/db/version_builder.cc +6 -0
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +62 -29
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +30 -11
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +291 -116
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +54 -11
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/version_set.cc +301 -141
- package/deps/rocksdb/rocksdb/db/version_set.h +90 -33
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +817 -193
- package/deps/rocksdb/rocksdb/db/version_util.h +10 -5
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +15 -11
- package/deps/rocksdb/rocksdb/db/wal_manager.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +10 -9
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +403 -28
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +2 -2
- package/deps/rocksdb/rocksdb/db/write_batch.cc +204 -18
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +4 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +149 -5
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/write_stall_stats.h +7 -7
- package/deps/rocksdb/rocksdb/db/write_thread.cc +86 -47
- package/deps/rocksdb/rocksdb/db/write_thread.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +176 -68
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +337 -125
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +38 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +126 -34
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +2 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +161 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +267 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +13 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +9 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +535 -86
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +27 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +8 -15
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +46 -21
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +74 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +28 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +426 -151
- package/deps/rocksdb/rocksdb/env/composite_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/emulated_clock.h +6 -6
- package/deps/rocksdb/rocksdb/env/env.cc +21 -11
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +9 -9
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +3 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +3 -3
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -2
- package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -10
- package/deps/rocksdb/rocksdb/env/env_test.cc +24 -18
- package/deps/rocksdb/rocksdb/env/file_system.cc +7 -6
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +3 -3
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +3 -3
- package/deps/rocksdb/rocksdb/env/fs_on_demand.cc +331 -0
- package/deps/rocksdb/rocksdb/env/fs_on_demand.h +139 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +14 -15
- package/deps/rocksdb/rocksdb/env/io_posix.cc +15 -10
- package/deps/rocksdb/rocksdb/env/io_posix.h +86 -92
- package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +6 -6
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +8 -6
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +599 -592
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +312 -200
- package/deps/rocksdb/rocksdb/file/file_util.cc +19 -14
- package/deps/rocksdb/rocksdb/file/file_util.h +34 -24
- package/deps/rocksdb/rocksdb/file/filename.cc +32 -17
- package/deps/rocksdb/rocksdb/file/filename.h +51 -53
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +82 -441
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +7 -6
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -5
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +9 -3
- package/deps/rocksdb/rocksdb/file/read_write_util.h +3 -3
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +6 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +9 -4
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +8 -4
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +110 -89
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +34 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +39 -189
- package/deps/rocksdb/rocksdb/include/rocksdb/attribute_groups.h +114 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +91 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +52 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +27 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +146 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +254 -151
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +39 -36
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +431 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +57 -23
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +27 -57
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator_base.h +74 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +146 -71
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +7 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +17 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -19
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +10 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +18 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +12 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +118 -116
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +26 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +18 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +8 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +12 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +5 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +159 -167
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +52 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +3 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/types_util.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +118 -20
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +87 -45
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +26 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +22 -1
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +7 -9
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +5 -6
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +2 -2
- package/deps/rocksdb/rocksdb/logging/env_logger.h +3 -3
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -1
- package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -3
- package/deps/rocksdb/rocksdb/memory/arena.h +11 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +17 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +1 -1
- package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +1 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
- package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +11 -10
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +8 -7
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +3 -3
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +2 -2
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +3 -1
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +20 -10
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +15 -15
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +7 -3
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +14 -14
- package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +4 -0
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +8 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +5 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +64 -58
- package/deps/rocksdb/rocksdb/monitoring/statistics_impl.h +11 -12
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +7 -1
- package/deps/rocksdb/rocksdb/options/cf_options.cc +20 -28
- package/deps/rocksdb/rocksdb/options/cf_options.h +7 -14
- package/deps/rocksdb/rocksdb/options/configurable.cc +20 -12
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +4 -6
- package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -2
- package/deps/rocksdb/rocksdb/options/customizable.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +3 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +22 -48
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -3
- package/deps/rocksdb/rocksdb/options/offpeak_time_info.cc +59 -0
- package/deps/rocksdb/rocksdb/options/offpeak_time_info.h +37 -0
- package/deps/rocksdb/rocksdb/options/options.cc +14 -6
- package/deps/rocksdb/rocksdb/options/options_helper.cc +8 -13
- package/deps/rocksdb/rocksdb/options/options_helper.h +2 -3
- package/deps/rocksdb/rocksdb/options/options_parser.cc +35 -26
- package/deps/rocksdb/rocksdb/options/options_parser.h +4 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -3
- package/deps/rocksdb/rocksdb/options/options_test.cc +30 -23
- package/deps/rocksdb/rocksdb/port/lang.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_example.h +7 -7
- package/deps/rocksdb/rocksdb/port/port_posix.cc +7 -7
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -7
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +85 -24
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +1 -2
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +4 -4
- package/deps/rocksdb/rocksdb/port/win/io_win.h +13 -17
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +3 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +4 -4
- package/deps/rocksdb/rocksdb/src.mk +16 -1
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -7
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +39 -15
- package/deps/rocksdb/rocksdb/table/block_based/block.h +7 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +80 -40
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +20 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +228 -122
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +50 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +82 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +17 -20
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +47 -13
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +163 -50
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +23 -23
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +6 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +32 -27
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +7 -10
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +25 -7
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -5
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +4 -6
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -5
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -5
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +138 -86
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +22 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +26 -13
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +11 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +11 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +10 -5
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +6 -7
- package/deps/rocksdb/rocksdb/table/format.cc +15 -21
- package/deps/rocksdb/rocksdb/table/format.h +8 -0
- package/deps/rocksdb/rocksdb/table/get_context.cc +121 -78
- package/deps/rocksdb/rocksdb/table/get_context.h +11 -6
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +12 -5
- package/deps/rocksdb/rocksdb/table/iterator.cc +4 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -1
- package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +5 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +4 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +15 -11
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +8 -4
- package/deps/rocksdb/rocksdb/table/mock_table.cc +12 -8
- package/deps/rocksdb/rocksdb/table/mock_table.h +1 -3
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +0 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -21
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +4 -14
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +7 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +7 -5
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +15 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +75 -30
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +7 -2
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +76 -11
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +358 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +93 -16
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +12 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +12 -6
- package/deps/rocksdb/rocksdb/table/table_iterator.h +69 -0
- package/deps/rocksdb/rocksdb/table/table_properties.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/table/table_test.cc +732 -121
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +3 -1
- package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/table/unique_id.cc +2 -2
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +2 -2
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +5 -5
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -6
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +2 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +56 -32
- package/deps/rocksdb/rocksdb/test_util/testutil.h +57 -34
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +18 -1
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +210 -112
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +22 -27
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +10 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +328 -59
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +34 -2
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +64 -17
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +8 -1
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +3 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +136 -10
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -2
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +50 -8
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +51 -45
- package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +10 -10
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +14 -4
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +2 -1
- package/deps/rocksdb/rocksdb/unreleased_history/README.txt +2 -2
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +2 -4
- package/deps/rocksdb/rocksdb/util/atomic.h +111 -0
- package/deps/rocksdb/rocksdb/util/autovector.h +5 -1
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +12 -2
- package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
- package/deps/rocksdb/rocksdb/util/coding.h +34 -38
- package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/comparator.cc +18 -5
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +4 -4
- package/deps/rocksdb/rocksdb/util/crc32c.cc +3 -6
- package/deps/rocksdb/rocksdb/util/crc32c.h +3 -3
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +3 -4
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -2
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -4
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -2
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +3 -3
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +83 -59
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/hash.h +4 -4
- package/deps/rocksdb/rocksdb/util/log_write_bench.cc +3 -3
- package/deps/rocksdb/rocksdb/util/murmurhash.cc +1 -1
- package/deps/rocksdb/rocksdb/util/random.cc +3 -4
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +23 -43
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +21 -16
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +44 -24
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +2 -3
- package/deps/rocksdb/rocksdb/util/ribbon_config.cc +2 -10
- package/deps/rocksdb/rocksdb/util/ribbon_impl.h +2 -2
- package/deps/rocksdb/rocksdb/util/slice.cc +4 -5
- package/deps/rocksdb/rocksdb/util/slice_test.cc +70 -4
- package/deps/rocksdb/rocksdb/util/status.cc +1 -1
- package/deps/rocksdb/rocksdb/util/stderr_logger.cc +39 -7
- package/deps/rocksdb/rocksdb/util/stderr_logger.h +12 -2
- package/deps/rocksdb/rocksdb/util/string_util.cc +31 -18
- package/deps/rocksdb/rocksdb/util/string_util.h +9 -9
- package/deps/rocksdb/rocksdb/util/string_util_test.cc +36 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +5 -5
- package/deps/rocksdb/rocksdb/util/thread_local.cc +1 -1
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +3 -4
- package/deps/rocksdb/rocksdb/util/threadpool_imp.h +1 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/vector_iterator.h +12 -16
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +5 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +116 -116
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +33 -31
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -22
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +9 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +3 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +22 -55
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +113 -74
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +36 -24
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +27 -11
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +68 -54
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +16 -16
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +29 -9
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +27 -14
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +8 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +9 -7
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +7 -10
- package/deps/rocksdb/rocksdb/utilities/debug.cc +6 -2
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +18 -11
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +18 -25
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +32 -23
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +51 -48
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +10 -10
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +5 -6
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +5 -6
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -8
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +29 -21
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +14 -15
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -5
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +8 -8
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +6 -9
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +6 -6
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +12 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +17 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +442 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +27 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +28 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +70 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +50 -22
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +64 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +76 -17
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +573 -77
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +65 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +13 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +14 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +37 -24
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +23 -29
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +31 -40
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +8 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +34 -18
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +21 -25
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/types_util.cc +88 -0
- package/deps/rocksdb/rocksdb/utilities/types_util_test.cc +98 -0
- package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +463 -90
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +259 -76
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +70 -14
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +609 -10
- package/deps/rocksdb/rocksdb.gyp +8 -4
- package/index.js +18 -4
- package/max_rev_operator.h +2 -0
- package/package.json +2 -2
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/util.h +29 -5
- package/.tap/coverage/4c642b53-6895-4ef0-9391-7c6b8d484262.json +0 -14334
- package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +0 -57
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#include <mutex>
|
|
14
14
|
|
|
15
15
|
#include "db/version_edit.h"
|
|
16
|
+
#include "file/file_util.h"
|
|
16
17
|
#include "monitoring/histogram.h"
|
|
17
18
|
#include "monitoring/iostats_context_imp.h"
|
|
18
19
|
#include "port/port.h"
|
|
@@ -24,6 +25,24 @@
|
|
|
24
25
|
#include "util/rate_limiter_impl.h"
|
|
25
26
|
|
|
26
27
|
namespace ROCKSDB_NAMESPACE {
|
|
28
|
+
inline Histograms GetFileWriteHistograms(Histograms file_writer_hist,
|
|
29
|
+
Env::IOActivity io_activity) {
|
|
30
|
+
if (file_writer_hist == Histograms::SST_WRITE_MICROS ||
|
|
31
|
+
file_writer_hist == Histograms::BLOB_DB_BLOB_FILE_WRITE_MICROS) {
|
|
32
|
+
switch (io_activity) {
|
|
33
|
+
case Env::IOActivity::kFlush:
|
|
34
|
+
return Histograms::FILE_WRITE_FLUSH_MICROS;
|
|
35
|
+
case Env::IOActivity::kCompaction:
|
|
36
|
+
return Histograms::FILE_WRITE_COMPACTION_MICROS;
|
|
37
|
+
case Env::IOActivity::kDBOpen:
|
|
38
|
+
return Histograms::FILE_WRITE_DB_OPEN_MICROS;
|
|
39
|
+
default:
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return Histograms::HISTOGRAM_ENUM_MAX;
|
|
44
|
+
}
|
|
45
|
+
|
|
27
46
|
IOStatus WritableFileWriter::Create(const std::shared_ptr<FileSystem>& fs,
|
|
28
47
|
const std::string& fname,
|
|
29
48
|
const FileOptions& file_opts,
|
|
@@ -42,12 +61,16 @@ IOStatus WritableFileWriter::Create(const std::shared_ptr<FileSystem>& fs,
|
|
|
42
61
|
return io_s;
|
|
43
62
|
}
|
|
44
63
|
|
|
45
|
-
IOStatus WritableFileWriter::Append(const
|
|
46
|
-
|
|
64
|
+
IOStatus WritableFileWriter::Append(const IOOptions& opts, const Slice& data,
|
|
65
|
+
uint32_t crc32c_checksum) {
|
|
47
66
|
if (seen_error()) {
|
|
48
67
|
return AssertFalseAndGetStatusForPrevError();
|
|
49
68
|
}
|
|
50
69
|
|
|
70
|
+
StopWatch sw(clock_, stats_, hist_type_,
|
|
71
|
+
GetFileWriteHistograms(hist_type_, opts.io_activity));
|
|
72
|
+
|
|
73
|
+
const IOOptions io_options = FinalizeIOOptions(opts);
|
|
51
74
|
const char* src = data.data();
|
|
52
75
|
size_t left = data.size();
|
|
53
76
|
IOStatus s;
|
|
@@ -59,10 +82,6 @@ IOStatus WritableFileWriter::Append(const Slice& data, uint32_t crc32c_checksum,
|
|
|
59
82
|
UpdateFileChecksum(data);
|
|
60
83
|
|
|
61
84
|
{
|
|
62
|
-
IOOptions io_options;
|
|
63
|
-
io_options.rate_limiter_priority =
|
|
64
|
-
WritableFileWriter::DecideRateLimiterPriority(
|
|
65
|
-
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
66
85
|
IOSTATS_TIMER_GUARD(prepare_write_nanos);
|
|
67
86
|
TEST_SYNC_POINT("WritableFileWriter::Append:BeforePrepareWrite");
|
|
68
87
|
writable_file_->PrepareWrite(static_cast<size_t>(GetFileSize()), left,
|
|
@@ -88,7 +107,7 @@ IOStatus WritableFileWriter::Append(const Slice& data, uint32_t crc32c_checksum,
|
|
|
88
107
|
// Flush only when buffered I/O
|
|
89
108
|
if (!use_direct_io() && (buf_.Capacity() - buf_.CurrentSize()) < left) {
|
|
90
109
|
if (buf_.CurrentSize() > 0) {
|
|
91
|
-
s = Flush(
|
|
110
|
+
s = Flush(io_options);
|
|
92
111
|
if (!s.ok()) {
|
|
93
112
|
set_seen_error();
|
|
94
113
|
return s;
|
|
@@ -119,7 +138,7 @@ IOStatus WritableFileWriter::Append(const Slice& data, uint32_t crc32c_checksum,
|
|
|
119
138
|
src += appended;
|
|
120
139
|
|
|
121
140
|
if (left > 0) {
|
|
122
|
-
s = Flush(
|
|
141
|
+
s = Flush(io_options);
|
|
123
142
|
if (!s.ok()) {
|
|
124
143
|
break;
|
|
125
144
|
}
|
|
@@ -129,7 +148,7 @@ IOStatus WritableFileWriter::Append(const Slice& data, uint32_t crc32c_checksum,
|
|
|
129
148
|
} else {
|
|
130
149
|
assert(buf_.CurrentSize() == 0);
|
|
131
150
|
buffered_data_crc32c_checksum_ = crc32c_checksum;
|
|
132
|
-
s = WriteBufferedWithChecksum(src, left
|
|
151
|
+
s = WriteBufferedWithChecksum(io_options, src, left);
|
|
133
152
|
}
|
|
134
153
|
} else {
|
|
135
154
|
// In this case, either we do not need to do the data verification or
|
|
@@ -149,7 +168,7 @@ IOStatus WritableFileWriter::Append(const Slice& data, uint32_t crc32c_checksum,
|
|
|
149
168
|
src += appended;
|
|
150
169
|
|
|
151
170
|
if (left > 0) {
|
|
152
|
-
s = Flush(
|
|
171
|
+
s = Flush(io_options);
|
|
153
172
|
if (!s.ok()) {
|
|
154
173
|
break;
|
|
155
174
|
}
|
|
@@ -160,9 +179,9 @@ IOStatus WritableFileWriter::Append(const Slice& data, uint32_t crc32c_checksum,
|
|
|
160
179
|
assert(buf_.CurrentSize() == 0);
|
|
161
180
|
if (perform_data_verification_ && buffered_data_with_checksum_) {
|
|
162
181
|
buffered_data_crc32c_checksum_ = crc32c::Value(src, left);
|
|
163
|
-
s = WriteBufferedWithChecksum(src, left
|
|
182
|
+
s = WriteBufferedWithChecksum(io_options, src, left);
|
|
164
183
|
} else {
|
|
165
|
-
s = WriteBuffered(src, left
|
|
184
|
+
s = WriteBuffered(io_options, src, left);
|
|
166
185
|
}
|
|
167
186
|
}
|
|
168
187
|
}
|
|
@@ -177,15 +196,15 @@ IOStatus WritableFileWriter::Append(const Slice& data, uint32_t crc32c_checksum,
|
|
|
177
196
|
return s;
|
|
178
197
|
}
|
|
179
198
|
|
|
180
|
-
IOStatus WritableFileWriter::Pad(const
|
|
181
|
-
|
|
199
|
+
IOStatus WritableFileWriter::Pad(const IOOptions& opts,
|
|
200
|
+
const size_t pad_bytes) {
|
|
182
201
|
if (seen_error()) {
|
|
183
202
|
return AssertFalseAndGetStatusForPrevError();
|
|
184
203
|
}
|
|
204
|
+
const IOOptions io_options = FinalizeIOOptions(opts);
|
|
185
205
|
assert(pad_bytes < kDefaultPageSize);
|
|
186
206
|
size_t left = pad_bytes;
|
|
187
207
|
size_t cap = buf_.Capacity() - buf_.CurrentSize();
|
|
188
|
-
size_t pad_start = buf_.CurrentSize();
|
|
189
208
|
|
|
190
209
|
// Assume pad_bytes is small compared to buf_ capacity. So we always
|
|
191
210
|
// use buf_ rather than write directly to file in certain cases like
|
|
@@ -194,8 +213,18 @@ IOStatus WritableFileWriter::Pad(const size_t pad_bytes,
|
|
|
194
213
|
size_t append_bytes = std::min(cap, left);
|
|
195
214
|
buf_.PadWith(append_bytes, 0);
|
|
196
215
|
left -= append_bytes;
|
|
216
|
+
|
|
217
|
+
Slice data(buf_.BufferStart() + buf_.CurrentSize() - append_bytes,
|
|
218
|
+
append_bytes);
|
|
219
|
+
UpdateFileChecksum(data);
|
|
220
|
+
if (perform_data_verification_) {
|
|
221
|
+
buffered_data_crc32c_checksum_ = crc32c::Extend(
|
|
222
|
+
buffered_data_crc32c_checksum_,
|
|
223
|
+
buf_.BufferStart() + buf_.CurrentSize() - append_bytes, append_bytes);
|
|
224
|
+
}
|
|
225
|
+
|
|
197
226
|
if (left > 0) {
|
|
198
|
-
IOStatus s = Flush(
|
|
227
|
+
IOStatus s = Flush(io_options);
|
|
199
228
|
if (!s.ok()) {
|
|
200
229
|
set_seen_error();
|
|
201
230
|
return s;
|
|
@@ -206,19 +235,16 @@ IOStatus WritableFileWriter::Pad(const size_t pad_bytes,
|
|
|
206
235
|
pending_sync_ = true;
|
|
207
236
|
uint64_t cur_size = filesize_.load(std::memory_order_acquire);
|
|
208
237
|
filesize_.store(cur_size + pad_bytes, std::memory_order_release);
|
|
209
|
-
|
|
210
|
-
buffered_data_crc32c_checksum_ =
|
|
211
|
-
crc32c::Extend(buffered_data_crc32c_checksum_,
|
|
212
|
-
buf_.BufferStart() + pad_start, pad_bytes);
|
|
213
|
-
}
|
|
238
|
+
|
|
214
239
|
return IOStatus::OK();
|
|
215
240
|
}
|
|
216
241
|
|
|
217
|
-
IOStatus WritableFileWriter::Close() {
|
|
242
|
+
IOStatus WritableFileWriter::Close(const IOOptions& opts) {
|
|
243
|
+
IOOptions io_options = FinalizeIOOptions(opts);
|
|
218
244
|
if (seen_error()) {
|
|
219
245
|
IOStatus interim;
|
|
220
246
|
if (writable_file_.get() != nullptr) {
|
|
221
|
-
interim = writable_file_->Close(
|
|
247
|
+
interim = writable_file_->Close(io_options, nullptr);
|
|
222
248
|
writable_file_.reset();
|
|
223
249
|
}
|
|
224
250
|
if (interim.ok()) {
|
|
@@ -240,11 +266,9 @@ IOStatus WritableFileWriter::Close() {
|
|
|
240
266
|
}
|
|
241
267
|
|
|
242
268
|
IOStatus s;
|
|
243
|
-
s = Flush(); // flush cache to OS
|
|
269
|
+
s = Flush(io_options); // flush cache to OS
|
|
244
270
|
|
|
245
271
|
IOStatus interim;
|
|
246
|
-
IOOptions io_options;
|
|
247
|
-
io_options.rate_limiter_priority = writable_file_->GetIOPriority();
|
|
248
272
|
// In direct I/O mode we write whole pages so
|
|
249
273
|
// we need to let the file know where data ends.
|
|
250
274
|
if (use_direct_io()) {
|
|
@@ -322,11 +346,13 @@ IOStatus WritableFileWriter::Close() {
|
|
|
322
346
|
|
|
323
347
|
// write out the cached data to the OS cache or storage if direct I/O
|
|
324
348
|
// enabled
|
|
325
|
-
IOStatus WritableFileWriter::Flush(
|
|
349
|
+
IOStatus WritableFileWriter::Flush(const IOOptions& opts) {
|
|
326
350
|
if (seen_error()) {
|
|
327
351
|
return AssertFalseAndGetStatusForPrevError();
|
|
328
352
|
}
|
|
329
353
|
|
|
354
|
+
const IOOptions io_options = FinalizeIOOptions(opts);
|
|
355
|
+
|
|
330
356
|
IOStatus s;
|
|
331
357
|
TEST_KILL_RANDOM_WITH_WEIGHT("WritableFileWriter::Flush:0", REDUCE_ODDS2);
|
|
332
358
|
|
|
@@ -334,18 +360,17 @@ IOStatus WritableFileWriter::Flush(Env::IOPriority op_rate_limiter_priority) {
|
|
|
334
360
|
if (use_direct_io()) {
|
|
335
361
|
if (pending_sync_) {
|
|
336
362
|
if (perform_data_verification_ && buffered_data_with_checksum_) {
|
|
337
|
-
s = WriteDirectWithChecksum(
|
|
363
|
+
s = WriteDirectWithChecksum(io_options);
|
|
338
364
|
} else {
|
|
339
|
-
s = WriteDirect(
|
|
365
|
+
s = WriteDirect(io_options);
|
|
340
366
|
}
|
|
341
367
|
}
|
|
342
368
|
} else {
|
|
343
369
|
if (perform_data_verification_ && buffered_data_with_checksum_) {
|
|
344
|
-
s = WriteBufferedWithChecksum(
|
|
345
|
-
|
|
370
|
+
s = WriteBufferedWithChecksum(io_options, buf_.BufferStart(),
|
|
371
|
+
buf_.CurrentSize());
|
|
346
372
|
} else {
|
|
347
|
-
s = WriteBuffered(buf_.BufferStart(), buf_.CurrentSize()
|
|
348
|
-
op_rate_limiter_priority);
|
|
373
|
+
s = WriteBuffered(io_options, buf_.BufferStart(), buf_.CurrentSize());
|
|
349
374
|
}
|
|
350
375
|
}
|
|
351
376
|
if (!s.ok()) {
|
|
@@ -359,10 +384,6 @@ IOStatus WritableFileWriter::Flush(Env::IOPriority op_rate_limiter_priority) {
|
|
|
359
384
|
if (ShouldNotifyListeners()) {
|
|
360
385
|
start_ts = FileOperationInfo::StartNow();
|
|
361
386
|
}
|
|
362
|
-
IOOptions io_options;
|
|
363
|
-
io_options.rate_limiter_priority =
|
|
364
|
-
WritableFileWriter::DecideRateLimiterPriority(
|
|
365
|
-
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
366
387
|
s = writable_file_->Flush(io_options, nullptr);
|
|
367
388
|
if (ShouldNotifyListeners()) {
|
|
368
389
|
auto finish_ts = std::chrono::steady_clock::now();
|
|
@@ -400,7 +421,8 @@ IOStatus WritableFileWriter::Flush(Env::IOPriority op_rate_limiter_priority) {
|
|
|
400
421
|
assert(offset_sync_to >= last_sync_size_);
|
|
401
422
|
if (offset_sync_to > 0 &&
|
|
402
423
|
offset_sync_to - last_sync_size_ >= bytes_per_sync_) {
|
|
403
|
-
s = RangeSync(
|
|
424
|
+
s = RangeSync(io_options, last_sync_size_,
|
|
425
|
+
offset_sync_to - last_sync_size_);
|
|
404
426
|
if (!s.ok()) {
|
|
405
427
|
set_seen_error();
|
|
406
428
|
}
|
|
@@ -429,19 +451,25 @@ const char* WritableFileWriter::GetFileChecksumFuncName() const {
|
|
|
429
451
|
}
|
|
430
452
|
}
|
|
431
453
|
|
|
432
|
-
IOStatus WritableFileWriter::
|
|
454
|
+
IOStatus WritableFileWriter::PrepareIOOptions(const WriteOptions& wo,
|
|
455
|
+
IOOptions& opts) {
|
|
456
|
+
return PrepareIOFromWriteOptions(wo, opts);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
IOStatus WritableFileWriter::Sync(const IOOptions& opts, bool use_fsync) {
|
|
433
460
|
if (seen_error()) {
|
|
434
461
|
return AssertFalseAndGetStatusForPrevError();
|
|
435
462
|
}
|
|
436
463
|
|
|
437
|
-
|
|
464
|
+
IOOptions io_options = FinalizeIOOptions(opts);
|
|
465
|
+
IOStatus s = Flush(io_options);
|
|
438
466
|
if (!s.ok()) {
|
|
439
467
|
set_seen_error();
|
|
440
468
|
return s;
|
|
441
469
|
}
|
|
442
470
|
TEST_KILL_RANDOM("WritableFileWriter::Sync:0");
|
|
443
471
|
if (!use_direct_io() && pending_sync_) {
|
|
444
|
-
s = SyncInternal(use_fsync);
|
|
472
|
+
s = SyncInternal(io_options, use_fsync);
|
|
445
473
|
if (!s.ok()) {
|
|
446
474
|
set_seen_error();
|
|
447
475
|
return s;
|
|
@@ -452,17 +480,19 @@ IOStatus WritableFileWriter::Sync(bool use_fsync) {
|
|
|
452
480
|
return IOStatus::OK();
|
|
453
481
|
}
|
|
454
482
|
|
|
455
|
-
IOStatus WritableFileWriter::SyncWithoutFlush(
|
|
483
|
+
IOStatus WritableFileWriter::SyncWithoutFlush(const IOOptions& opts,
|
|
484
|
+
bool use_fsync) {
|
|
456
485
|
if (seen_error()) {
|
|
457
486
|
return AssertFalseAndGetStatusForPrevError();
|
|
458
487
|
}
|
|
488
|
+
IOOptions io_options = FinalizeIOOptions(opts);
|
|
459
489
|
if (!writable_file_->IsSyncThreadSafe()) {
|
|
460
490
|
return IOStatus::NotSupported(
|
|
461
491
|
"Can't WritableFileWriter::SyncWithoutFlush() because "
|
|
462
492
|
"WritableFile::IsSyncThreadSafe() is false");
|
|
463
493
|
}
|
|
464
494
|
TEST_SYNC_POINT("WritableFileWriter::SyncWithoutFlush:1");
|
|
465
|
-
IOStatus s = SyncInternal(use_fsync);
|
|
495
|
+
IOStatus s = SyncInternal(io_options, use_fsync);
|
|
466
496
|
TEST_SYNC_POINT("WritableFileWriter::SyncWithoutFlush:2");
|
|
467
497
|
if (!s.ok()) {
|
|
468
498
|
#ifndef NDEBUG
|
|
@@ -473,7 +503,8 @@ IOStatus WritableFileWriter::SyncWithoutFlush(bool use_fsync) {
|
|
|
473
503
|
return s;
|
|
474
504
|
}
|
|
475
505
|
|
|
476
|
-
IOStatus WritableFileWriter::SyncInternal(
|
|
506
|
+
IOStatus WritableFileWriter::SyncInternal(const IOOptions& opts,
|
|
507
|
+
bool use_fsync) {
|
|
477
508
|
// Caller is supposed to check seen_error_
|
|
478
509
|
IOStatus s;
|
|
479
510
|
IOSTATS_TIMER_GUARD(fsync_nanos);
|
|
@@ -487,12 +518,10 @@ IOStatus WritableFileWriter::SyncInternal(bool use_fsync) {
|
|
|
487
518
|
start_ts = FileOperationInfo::StartNow();
|
|
488
519
|
}
|
|
489
520
|
|
|
490
|
-
IOOptions io_options;
|
|
491
|
-
io_options.rate_limiter_priority = writable_file_->GetIOPriority();
|
|
492
521
|
if (use_fsync) {
|
|
493
|
-
s = writable_file_->Fsync(
|
|
522
|
+
s = writable_file_->Fsync(opts, nullptr);
|
|
494
523
|
} else {
|
|
495
|
-
s = writable_file_->Sync(
|
|
524
|
+
s = writable_file_->Sync(opts, nullptr);
|
|
496
525
|
}
|
|
497
526
|
if (ShouldNotifyListeners()) {
|
|
498
527
|
auto finish_ts = std::chrono::steady_clock::now();
|
|
@@ -511,7 +540,8 @@ IOStatus WritableFileWriter::SyncInternal(bool use_fsync) {
|
|
|
511
540
|
return s;
|
|
512
541
|
}
|
|
513
542
|
|
|
514
|
-
IOStatus WritableFileWriter::RangeSync(
|
|
543
|
+
IOStatus WritableFileWriter::RangeSync(const IOOptions& opts, uint64_t offset,
|
|
544
|
+
uint64_t nbytes) {
|
|
515
545
|
if (seen_error()) {
|
|
516
546
|
return AssertFalseAndGetStatusForPrevError();
|
|
517
547
|
}
|
|
@@ -522,9 +552,7 @@ IOStatus WritableFileWriter::RangeSync(uint64_t offset, uint64_t nbytes) {
|
|
|
522
552
|
if (ShouldNotifyListeners()) {
|
|
523
553
|
start_ts = FileOperationInfo::StartNow();
|
|
524
554
|
}
|
|
525
|
-
|
|
526
|
-
io_options.rate_limiter_priority = writable_file_->GetIOPriority();
|
|
527
|
-
IOStatus s = writable_file_->RangeSync(offset, nbytes, io_options, nullptr);
|
|
555
|
+
IOStatus s = writable_file_->RangeSync(offset, nbytes, opts, nullptr);
|
|
528
556
|
if (!s.ok()) {
|
|
529
557
|
set_seen_error();
|
|
530
558
|
}
|
|
@@ -541,8 +569,8 @@ IOStatus WritableFileWriter::RangeSync(uint64_t offset, uint64_t nbytes) {
|
|
|
541
569
|
|
|
542
570
|
// This method writes to disk the specified data and makes use of the rate
|
|
543
571
|
// limiter if available
|
|
544
|
-
IOStatus WritableFileWriter::WriteBuffered(
|
|
545
|
-
|
|
572
|
+
IOStatus WritableFileWriter::WriteBuffered(const IOOptions& opts,
|
|
573
|
+
const char* data, size_t size) {
|
|
546
574
|
if (seen_error()) {
|
|
547
575
|
return AssertFalseAndGetStatusForPrevError();
|
|
548
576
|
}
|
|
@@ -553,11 +581,7 @@ IOStatus WritableFileWriter::WriteBuffered(
|
|
|
553
581
|
size_t left = size;
|
|
554
582
|
DataVerificationInfo v_info;
|
|
555
583
|
char checksum_buf[sizeof(uint32_t)];
|
|
556
|
-
Env::IOPriority rate_limiter_priority_used =
|
|
557
|
-
WritableFileWriter::DecideRateLimiterPriority(
|
|
558
|
-
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
559
|
-
IOOptions io_options;
|
|
560
|
-
io_options.rate_limiter_priority = rate_limiter_priority_used;
|
|
584
|
+
Env::IOPriority rate_limiter_priority_used = opts.rate_limiter_priority;
|
|
561
585
|
|
|
562
586
|
while (left > 0) {
|
|
563
587
|
size_t allowed = left;
|
|
@@ -573,7 +597,7 @@ IOStatus WritableFileWriter::WriteBuffered(
|
|
|
573
597
|
TEST_SYNC_POINT("WritableFileWriter::Flush:BeforeAppend");
|
|
574
598
|
|
|
575
599
|
FileOperationInfo::StartTimePoint start_ts;
|
|
576
|
-
uint64_t old_size = writable_file_->GetFileSize(
|
|
600
|
+
uint64_t old_size = writable_file_->GetFileSize(opts, nullptr);
|
|
577
601
|
if (ShouldNotifyListeners()) {
|
|
578
602
|
start_ts = FileOperationInfo::StartNow();
|
|
579
603
|
old_size = next_write_offset_;
|
|
@@ -585,10 +609,10 @@ IOStatus WritableFileWriter::WriteBuffered(
|
|
|
585
609
|
if (perform_data_verification_) {
|
|
586
610
|
Crc32cHandoffChecksumCalculation(src, allowed, checksum_buf);
|
|
587
611
|
v_info.checksum = Slice(checksum_buf, sizeof(uint32_t));
|
|
588
|
-
s = writable_file_->Append(Slice(src, allowed),
|
|
612
|
+
s = writable_file_->Append(Slice(src, allowed), opts, v_info,
|
|
589
613
|
nullptr);
|
|
590
614
|
} else {
|
|
591
|
-
s = writable_file_->Append(Slice(src, allowed),
|
|
615
|
+
s = writable_file_->Append(Slice(src, allowed), opts, nullptr);
|
|
592
616
|
}
|
|
593
617
|
if (!s.ok()) {
|
|
594
618
|
// If writable_file_->Append() failed, then the data may or may not
|
|
@@ -635,8 +659,9 @@ IOStatus WritableFileWriter::WriteBuffered(
|
|
|
635
659
|
return s;
|
|
636
660
|
}
|
|
637
661
|
|
|
638
|
-
IOStatus WritableFileWriter::WriteBufferedWithChecksum(
|
|
639
|
-
|
|
662
|
+
IOStatus WritableFileWriter::WriteBufferedWithChecksum(const IOOptions& opts,
|
|
663
|
+
const char* data,
|
|
664
|
+
size_t size) {
|
|
640
665
|
if (seen_error()) {
|
|
641
666
|
return AssertFalseAndGetStatusForPrevError();
|
|
642
667
|
}
|
|
@@ -648,11 +673,7 @@ IOStatus WritableFileWriter::WriteBufferedWithChecksum(
|
|
|
648
673
|
size_t left = size;
|
|
649
674
|
DataVerificationInfo v_info;
|
|
650
675
|
char checksum_buf[sizeof(uint32_t)];
|
|
651
|
-
Env::IOPriority rate_limiter_priority_used =
|
|
652
|
-
WritableFileWriter::DecideRateLimiterPriority(
|
|
653
|
-
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
654
|
-
IOOptions io_options;
|
|
655
|
-
io_options.rate_limiter_priority = rate_limiter_priority_used;
|
|
676
|
+
Env::IOPriority rate_limiter_priority_used = opts.rate_limiter_priority;
|
|
656
677
|
// Check how much is allowed. Here, we loop until the rate limiter allows to
|
|
657
678
|
// write the entire buffer.
|
|
658
679
|
// TODO: need to be improved since it sort of defeats the purpose of the rate
|
|
@@ -673,7 +694,7 @@ IOStatus WritableFileWriter::WriteBufferedWithChecksum(
|
|
|
673
694
|
TEST_SYNC_POINT("WritableFileWriter::Flush:BeforeAppend");
|
|
674
695
|
|
|
675
696
|
FileOperationInfo::StartTimePoint start_ts;
|
|
676
|
-
uint64_t old_size = writable_file_->GetFileSize(
|
|
697
|
+
uint64_t old_size = writable_file_->GetFileSize(opts, nullptr);
|
|
677
698
|
if (ShouldNotifyListeners()) {
|
|
678
699
|
start_ts = FileOperationInfo::StartNow();
|
|
679
700
|
old_size = next_write_offset_;
|
|
@@ -685,7 +706,7 @@ IOStatus WritableFileWriter::WriteBufferedWithChecksum(
|
|
|
685
706
|
|
|
686
707
|
EncodeFixed32(checksum_buf, buffered_data_crc32c_checksum_);
|
|
687
708
|
v_info.checksum = Slice(checksum_buf, sizeof(uint32_t));
|
|
688
|
-
s = writable_file_->Append(Slice(src, left),
|
|
709
|
+
s = writable_file_->Append(Slice(src, left), opts, v_info, nullptr);
|
|
689
710
|
SetPerfLevel(prev_perf_level);
|
|
690
711
|
}
|
|
691
712
|
if (ShouldNotifyListeners()) {
|
|
@@ -755,8 +776,7 @@ void WritableFileWriter::Crc32cHandoffChecksumCalculation(const char* data,
|
|
|
755
776
|
// whole number of pages to be written again on the next flush because we can
|
|
756
777
|
// only write on aligned
|
|
757
778
|
// offsets.
|
|
758
|
-
IOStatus WritableFileWriter::WriteDirect(
|
|
759
|
-
Env::IOPriority op_rate_limiter_priority) {
|
|
779
|
+
IOStatus WritableFileWriter::WriteDirect(const IOOptions& opts) {
|
|
760
780
|
if (seen_error()) {
|
|
761
781
|
assert(false);
|
|
762
782
|
|
|
@@ -785,11 +805,7 @@ IOStatus WritableFileWriter::WriteDirect(
|
|
|
785
805
|
size_t left = buf_.CurrentSize();
|
|
786
806
|
DataVerificationInfo v_info;
|
|
787
807
|
char checksum_buf[sizeof(uint32_t)];
|
|
788
|
-
Env::IOPriority rate_limiter_priority_used =
|
|
789
|
-
WritableFileWriter::DecideRateLimiterPriority(
|
|
790
|
-
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
791
|
-
IOOptions io_options;
|
|
792
|
-
io_options.rate_limiter_priority = rate_limiter_priority_used;
|
|
808
|
+
Env::IOPriority rate_limiter_priority_used = opts.rate_limiter_priority;
|
|
793
809
|
|
|
794
810
|
while (left > 0) {
|
|
795
811
|
// Check how much is allowed
|
|
@@ -813,10 +829,10 @@ IOStatus WritableFileWriter::WriteDirect(
|
|
|
813
829
|
Crc32cHandoffChecksumCalculation(src, size, checksum_buf);
|
|
814
830
|
v_info.checksum = Slice(checksum_buf, sizeof(uint32_t));
|
|
815
831
|
s = writable_file_->PositionedAppend(Slice(src, size), write_offset,
|
|
816
|
-
|
|
832
|
+
opts, v_info, nullptr);
|
|
817
833
|
} else {
|
|
818
834
|
s = writable_file_->PositionedAppend(Slice(src, size), write_offset,
|
|
819
|
-
|
|
835
|
+
opts, nullptr);
|
|
820
836
|
}
|
|
821
837
|
|
|
822
838
|
if (ShouldNotifyListeners()) {
|
|
@@ -859,8 +875,7 @@ IOStatus WritableFileWriter::WriteDirect(
|
|
|
859
875
|
return s;
|
|
860
876
|
}
|
|
861
877
|
|
|
862
|
-
IOStatus WritableFileWriter::WriteDirectWithChecksum(
|
|
863
|
-
Env::IOPriority op_rate_limiter_priority) {
|
|
878
|
+
IOStatus WritableFileWriter::WriteDirectWithChecksum(const IOOptions& opts) {
|
|
864
879
|
if (seen_error()) {
|
|
865
880
|
return AssertFalseAndGetStatusForPrevError();
|
|
866
881
|
}
|
|
@@ -895,11 +910,7 @@ IOStatus WritableFileWriter::WriteDirectWithChecksum(
|
|
|
895
910
|
DataVerificationInfo v_info;
|
|
896
911
|
char checksum_buf[sizeof(uint32_t)];
|
|
897
912
|
|
|
898
|
-
Env::IOPriority rate_limiter_priority_used =
|
|
899
|
-
WritableFileWriter::DecideRateLimiterPriority(
|
|
900
|
-
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
901
|
-
IOOptions io_options;
|
|
902
|
-
io_options.rate_limiter_priority = rate_limiter_priority_used;
|
|
913
|
+
Env::IOPriority rate_limiter_priority_used = opts.rate_limiter_priority;
|
|
903
914
|
// Check how much is allowed. Here, we loop until the rate limiter allows to
|
|
904
915
|
// write the entire buffer.
|
|
905
916
|
// TODO: need to be improved since it sort of defeats the purpose of the rate
|
|
@@ -925,8 +936,8 @@ IOStatus WritableFileWriter::WriteDirectWithChecksum(
|
|
|
925
936
|
// direct writes must be positional
|
|
926
937
|
EncodeFixed32(checksum_buf, buffered_data_crc32c_checksum_);
|
|
927
938
|
v_info.checksum = Slice(checksum_buf, sizeof(uint32_t));
|
|
928
|
-
s = writable_file_->PositionedAppend(Slice(src, left), write_offset,
|
|
929
|
-
|
|
939
|
+
s = writable_file_->PositionedAppend(Slice(src, left), write_offset, opts,
|
|
940
|
+
v_info, nullptr);
|
|
930
941
|
|
|
931
942
|
if (ShouldNotifyListeners()) {
|
|
932
943
|
auto finish_ts = std::chrono::steady_clock::now();
|
|
@@ -986,4 +997,14 @@ Env::IOPriority WritableFileWriter::DecideRateLimiterPriority(
|
|
|
986
997
|
}
|
|
987
998
|
}
|
|
988
999
|
|
|
1000
|
+
IOOptions WritableFileWriter::FinalizeIOOptions(const IOOptions& opts) const {
|
|
1001
|
+
Env::IOPriority op_rate_limiter_priority = opts.rate_limiter_priority;
|
|
1002
|
+
IOOptions io_options(opts);
|
|
1003
|
+
if (writable_file_.get() != nullptr) {
|
|
1004
|
+
io_options.rate_limiter_priority =
|
|
1005
|
+
WritableFileWriter::DecideRateLimiterPriority(
|
|
1006
|
+
writable_file_->GetIOPriority(), op_rate_limiter_priority);
|
|
1007
|
+
}
|
|
1008
|
+
return io_options;
|
|
1009
|
+
}
|
|
989
1010
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
#include "db/version_edit.h"
|
|
15
15
|
#include "env/file_system_tracer.h"
|
|
16
|
+
#include "monitoring/thread_status_util.h"
|
|
16
17
|
#include "port/port.h"
|
|
17
18
|
#include "rocksdb/file_checksum.h"
|
|
18
19
|
#include "rocksdb/file_system.h"
|
|
@@ -159,6 +160,7 @@ class WritableFileWriter {
|
|
|
159
160
|
uint64_t bytes_per_sync_;
|
|
160
161
|
RateLimiter* rate_limiter_;
|
|
161
162
|
Statistics* stats_;
|
|
163
|
+
Histograms hist_type_;
|
|
162
164
|
std::vector<std::shared_ptr<EventListener>> listeners_;
|
|
163
165
|
std::unique_ptr<FileChecksumGenerator> checksum_generator_;
|
|
164
166
|
bool checksum_finalized_;
|
|
@@ -173,6 +175,7 @@ class WritableFileWriter {
|
|
|
173
175
|
const FileOptions& options, SystemClock* clock = nullptr,
|
|
174
176
|
const std::shared_ptr<IOTracer>& io_tracer = nullptr,
|
|
175
177
|
Statistics* stats = nullptr,
|
|
178
|
+
Histograms hist_type = Histograms::HISTOGRAM_ENUM_MAX,
|
|
176
179
|
const std::vector<std::shared_ptr<EventListener>>& listeners = {},
|
|
177
180
|
FileChecksumGenFactory* file_checksum_gen_factory = nullptr,
|
|
178
181
|
bool perform_data_verification = false,
|
|
@@ -191,6 +194,7 @@ class WritableFileWriter {
|
|
|
191
194
|
bytes_per_sync_(options.bytes_per_sync),
|
|
192
195
|
rate_limiter_(options.rate_limiter),
|
|
193
196
|
stats_(stats),
|
|
197
|
+
hist_type_(hist_type),
|
|
194
198
|
listeners_(),
|
|
195
199
|
checksum_generator_(nullptr),
|
|
196
200
|
checksum_finalized_(false),
|
|
@@ -222,35 +226,42 @@ class WritableFileWriter {
|
|
|
222
226
|
const std::string& fname, const FileOptions& file_opts,
|
|
223
227
|
std::unique_ptr<WritableFileWriter>* writer,
|
|
224
228
|
IODebugContext* dbg);
|
|
229
|
+
|
|
230
|
+
static IOStatus PrepareIOOptions(const WriteOptions& wo, IOOptions& opts);
|
|
231
|
+
|
|
225
232
|
WritableFileWriter(const WritableFileWriter&) = delete;
|
|
226
233
|
|
|
227
234
|
WritableFileWriter& operator=(const WritableFileWriter&) = delete;
|
|
228
235
|
|
|
229
236
|
~WritableFileWriter() {
|
|
230
|
-
|
|
237
|
+
ThreadStatus::OperationType cur_op_type =
|
|
238
|
+
ThreadStatusUtil::GetThreadOperation();
|
|
239
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
240
|
+
ThreadStatus::OperationType::OP_UNKNOWN);
|
|
241
|
+
auto s = Close(IOOptions());
|
|
231
242
|
s.PermitUncheckedError();
|
|
243
|
+
ThreadStatusUtil::SetThreadOperation(cur_op_type);
|
|
232
244
|
}
|
|
233
245
|
|
|
234
246
|
std::string file_name() const { return file_name_; }
|
|
235
247
|
|
|
236
248
|
// When this Append API is called, if the crc32c_checksum is not provided, we
|
|
237
249
|
// will calculate the checksum internally.
|
|
238
|
-
IOStatus Append(const
|
|
239
|
-
|
|
250
|
+
IOStatus Append(const IOOptions& opts, const Slice& data,
|
|
251
|
+
uint32_t crc32c_checksum = 0);
|
|
240
252
|
|
|
241
|
-
IOStatus Pad(const size_t pad_bytes
|
|
242
|
-
Env::IOPriority op_rate_limiter_priority = Env::IO_TOTAL);
|
|
253
|
+
IOStatus Pad(const IOOptions& opts, const size_t pad_bytes);
|
|
243
254
|
|
|
244
|
-
IOStatus Flush(
|
|
255
|
+
IOStatus Flush(const IOOptions& opts);
|
|
245
256
|
|
|
246
|
-
IOStatus Close();
|
|
257
|
+
IOStatus Close(const IOOptions& opts);
|
|
247
258
|
|
|
248
|
-
IOStatus Sync(bool use_fsync);
|
|
259
|
+
IOStatus Sync(const IOOptions& opts, bool use_fsync);
|
|
249
260
|
|
|
250
261
|
// Sync only the data that was already Flush()ed. Safe to call concurrently
|
|
251
262
|
// with Append() and Flush(). If !writable_file_->IsSyncThreadSafe(),
|
|
252
263
|
// returns NotSupported status.
|
|
253
|
-
IOStatus SyncWithoutFlush(bool use_fsync);
|
|
264
|
+
IOStatus SyncWithoutFlush(const IOOptions& opts, bool use_fsync);
|
|
254
265
|
|
|
255
266
|
uint64_t GetFileSize() const {
|
|
256
267
|
return filesize_.load(std::memory_order_acquire);
|
|
@@ -307,14 +318,20 @@ class WritableFileWriter {
|
|
|
307
318
|
|
|
308
319
|
// Used when os buffering is OFF and we are writing
|
|
309
320
|
// DMA such as in Direct I/O mode
|
|
310
|
-
|
|
311
|
-
IOStatus
|
|
321
|
+
// `opts` should've been called with `FinalizeIOOptions()` before passing in
|
|
322
|
+
IOStatus WriteDirect(const IOOptions& opts);
|
|
323
|
+
// `opts` should've been called with `FinalizeIOOptions()` before passing in
|
|
324
|
+
IOStatus WriteDirectWithChecksum(const IOOptions& opts);
|
|
312
325
|
// Normal write.
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
326
|
+
// `opts` should've been called with `FinalizeIOOptions()` before passing in
|
|
327
|
+
IOStatus WriteBuffered(const IOOptions& opts, const char* data, size_t size);
|
|
328
|
+
// `opts` should've been called with `FinalizeIOOptions()` before passing in
|
|
329
|
+
IOStatus WriteBufferedWithChecksum(const IOOptions& opts, const char* data,
|
|
330
|
+
size_t size);
|
|
331
|
+
// `opts` should've been called with `FinalizeIOOptions()` before passing in
|
|
332
|
+
IOStatus RangeSync(const IOOptions& opts, uint64_t offset, uint64_t nbytes);
|
|
333
|
+
// `opts` should've been called with `FinalizeIOOptions()` before passing in
|
|
334
|
+
IOStatus SyncInternal(const IOOptions& opts, bool use_fsync);
|
|
335
|
+
IOOptions FinalizeIOOptions(const IOOptions& opts) const;
|
|
319
336
|
};
|
|
320
337
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -603,6 +603,14 @@ class CacheWrapper : public Cache {
|
|
|
603
603
|
return target_->HasStrictCapacityLimit();
|
|
604
604
|
}
|
|
605
605
|
|
|
606
|
+
size_t GetOccupancyCount() const override {
|
|
607
|
+
return target_->GetOccupancyCount();
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
size_t GetTableAddressCount() const override {
|
|
611
|
+
return target_->GetTableAddressCount();
|
|
612
|
+
}
|
|
613
|
+
|
|
606
614
|
size_t GetCapacity() const override { return target_->GetCapacity(); }
|
|
607
615
|
|
|
608
616
|
size_t GetUsage() const override { return target_->GetUsage(); }
|
|
@@ -638,6 +646,14 @@ class CacheWrapper : public Cache {
|
|
|
638
646
|
target_->WaitAll(async_handles, count);
|
|
639
647
|
}
|
|
640
648
|
|
|
649
|
+
uint32_t GetHashSeed() const override { return target_->GetHashSeed(); }
|
|
650
|
+
|
|
651
|
+
void ReportProblems(const std::shared_ptr<Logger>& info_log) const override {
|
|
652
|
+
target_->ReportProblems(info_log);
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
const std::shared_ptr<Cache>& GetTarget() { return target_; }
|
|
656
|
+
|
|
641
657
|
protected:
|
|
642
658
|
std::shared_ptr<Cache> target_;
|
|
643
659
|
};
|