@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
|
@@ -34,8 +34,8 @@ class CompactFilesTest : public testing::Test {
|
|
|
34
34
|
// A class which remembers the name of each flushed file.
|
|
35
35
|
class FlushedFileCollector : public EventListener {
|
|
36
36
|
public:
|
|
37
|
-
FlushedFileCollector()
|
|
38
|
-
~FlushedFileCollector() override
|
|
37
|
+
FlushedFileCollector() = default;
|
|
38
|
+
~FlushedFileCollector() override = default;
|
|
39
39
|
|
|
40
40
|
void OnFlushCompleted(DB* /*db*/, const FlushJobInfo& info) override {
|
|
41
41
|
std::lock_guard<std::mutex> lock(mutex_);
|
|
@@ -45,7 +45,7 @@ class FlushedFileCollector : public EventListener {
|
|
|
45
45
|
std::vector<std::string> GetFlushedFiles() {
|
|
46
46
|
std::lock_guard<std::mutex> lock(mutex_);
|
|
47
47
|
std::vector<std::string> result;
|
|
48
|
-
for (auto fname : flushed_files_) {
|
|
48
|
+
for (const auto& fname : flushed_files_) {
|
|
49
49
|
result.push_back(fname);
|
|
50
50
|
}
|
|
51
51
|
return result;
|
|
@@ -159,7 +159,9 @@ TEST_F(CompactFilesTest, MultipleLevel) {
|
|
|
159
159
|
// Compact files except the file in L3
|
|
160
160
|
std::vector<std::string> files;
|
|
161
161
|
for (int i = 0; i < 6; ++i) {
|
|
162
|
-
if (i == 3)
|
|
162
|
+
if (i == 3) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
163
165
|
for (auto& file : meta.levels[i].files) {
|
|
164
166
|
files.push_back(file.db_path + "/" + file.name);
|
|
165
167
|
}
|
|
@@ -228,7 +230,7 @@ TEST_F(CompactFilesTest, ObsoleteFiles) {
|
|
|
228
230
|
ASSERT_OK(static_cast_with_check<DBImpl>(db)->TEST_WaitForCompact());
|
|
229
231
|
|
|
230
232
|
// verify all compaction input files are deleted
|
|
231
|
-
for (auto fname : l0_files) {
|
|
233
|
+
for (const auto& fname : l0_files) {
|
|
232
234
|
ASSERT_EQ(Status::NotFound(), env_->FileExists(fname));
|
|
233
235
|
}
|
|
234
236
|
delete db;
|
|
@@ -439,6 +441,50 @@ TEST_F(CompactFilesTest, SentinelCompressionType) {
|
|
|
439
441
|
}
|
|
440
442
|
}
|
|
441
443
|
|
|
444
|
+
TEST_F(CompactFilesTest, CompressionWithBlockAlign) {
|
|
445
|
+
Options options;
|
|
446
|
+
options.compression = CompressionType::kNoCompression;
|
|
447
|
+
options.create_if_missing = true;
|
|
448
|
+
options.disable_auto_compactions = true;
|
|
449
|
+
|
|
450
|
+
std::shared_ptr<FlushedFileCollector> collector =
|
|
451
|
+
std::make_shared<FlushedFileCollector>();
|
|
452
|
+
options.listeners.push_back(collector);
|
|
453
|
+
|
|
454
|
+
{
|
|
455
|
+
BlockBasedTableOptions bbto;
|
|
456
|
+
bbto.block_align = true;
|
|
457
|
+
options.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
std::unique_ptr<DB> db;
|
|
461
|
+
{
|
|
462
|
+
DB* _db = nullptr;
|
|
463
|
+
ASSERT_OK(DB::Open(options, db_name_, &_db));
|
|
464
|
+
db.reset(_db);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
ASSERT_OK(db->Put(WriteOptions(), "key", "val"));
|
|
468
|
+
ASSERT_OK(db->Flush(FlushOptions()));
|
|
469
|
+
|
|
470
|
+
// Ensure background work is fully finished including listener callbacks
|
|
471
|
+
// before accessing listener state.
|
|
472
|
+
ASSERT_OK(
|
|
473
|
+
static_cast_with_check<DBImpl>(db.get())->TEST_WaitForBackgroundWork());
|
|
474
|
+
auto l0_files = collector->GetFlushedFiles();
|
|
475
|
+
ASSERT_EQ(1, l0_files.size());
|
|
476
|
+
|
|
477
|
+
// We can run this test even without Snappy support because we expect the
|
|
478
|
+
// `CompactFiles()` to fail before actually invoking Snappy compression.
|
|
479
|
+
CompactionOptions compaction_opts;
|
|
480
|
+
compaction_opts.compression = CompressionType::kSnappyCompression;
|
|
481
|
+
ASSERT_TRUE(db->CompactFiles(compaction_opts, l0_files, 1 /* output_level */)
|
|
482
|
+
.IsInvalidArgument());
|
|
483
|
+
|
|
484
|
+
compaction_opts.compression = CompressionType::kDisableCompressionOption;
|
|
485
|
+
ASSERT_OK(db->CompactFiles(compaction_opts, l0_files, 1 /* output_level */));
|
|
486
|
+
}
|
|
487
|
+
|
|
442
488
|
TEST_F(CompactFilesTest, GetCompactionJobInfo) {
|
|
443
489
|
Options options;
|
|
444
490
|
options.create_if_missing = true;
|
|
@@ -492,4 +538,3 @@ int main(int argc, char** argv) {
|
|
|
492
538
|
::testing::InitGoogleTest(&argc, argv);
|
|
493
539
|
return RUN_ALL_TESTS();
|
|
494
540
|
}
|
|
495
|
-
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#include <vector>
|
|
14
14
|
|
|
15
15
|
#include "db/column_family.h"
|
|
16
|
+
#include "db/dbformat.h"
|
|
16
17
|
#include "logging/logging.h"
|
|
17
18
|
#include "rocksdb/compaction_filter.h"
|
|
18
19
|
#include "rocksdb/sst_partitioner.h"
|
|
@@ -21,9 +22,6 @@
|
|
|
21
22
|
|
|
22
23
|
namespace ROCKSDB_NAMESPACE {
|
|
23
24
|
|
|
24
|
-
const uint64_t kRangeTombstoneSentinel =
|
|
25
|
-
PackSequenceAndType(kMaxSequenceNumber, kTypeRangeDeletion);
|
|
26
|
-
|
|
27
25
|
int sstableKeyCompare(const Comparator* uc, const Slice& a, const Slice& b) {
|
|
28
26
|
auto c = uc->CompareWithoutTimestamp(ExtractUserKey(a), ExtractUserKey(b));
|
|
29
27
|
if (c != 0) {
|
|
@@ -115,6 +113,42 @@ void Compaction::GetBoundaryKeys(
|
|
|
115
113
|
}
|
|
116
114
|
}
|
|
117
115
|
|
|
116
|
+
void Compaction::GetBoundaryInternalKeys(
|
|
117
|
+
VersionStorageInfo* vstorage,
|
|
118
|
+
const std::vector<CompactionInputFiles>& inputs, InternalKey* smallest_key,
|
|
119
|
+
InternalKey* largest_key, int exclude_level) {
|
|
120
|
+
bool initialized = false;
|
|
121
|
+
const InternalKeyComparator* icmp = vstorage->InternalComparator();
|
|
122
|
+
for (size_t i = 0; i < inputs.size(); ++i) {
|
|
123
|
+
if (inputs[i].files.empty() || inputs[i].level == exclude_level) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (inputs[i].level == 0) {
|
|
127
|
+
// we need to consider all files on level 0
|
|
128
|
+
for (const auto* f : inputs[i].files) {
|
|
129
|
+
if (!initialized || icmp->Compare(f->smallest, *smallest_key) < 0) {
|
|
130
|
+
*smallest_key = f->smallest;
|
|
131
|
+
}
|
|
132
|
+
if (!initialized || icmp->Compare(f->largest, *largest_key) > 0) {
|
|
133
|
+
*largest_key = f->largest;
|
|
134
|
+
}
|
|
135
|
+
initialized = true;
|
|
136
|
+
}
|
|
137
|
+
} else {
|
|
138
|
+
// we only need to consider the first and last file
|
|
139
|
+
if (!initialized ||
|
|
140
|
+
icmp->Compare(inputs[i].files[0]->smallest, *smallest_key) < 0) {
|
|
141
|
+
*smallest_key = inputs[i].files[0]->smallest;
|
|
142
|
+
}
|
|
143
|
+
if (!initialized ||
|
|
144
|
+
icmp->Compare(inputs[i].files.back()->largest, *largest_key) > 0) {
|
|
145
|
+
*largest_key = inputs[i].files.back()->largest;
|
|
146
|
+
}
|
|
147
|
+
initialized = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
118
152
|
std::vector<CompactionInputFiles> Compaction::PopulateWithAtomicBoundaries(
|
|
119
153
|
VersionStorageInfo* vstorage, std::vector<CompactionInputFiles> inputs) {
|
|
120
154
|
const Comparator* ucmp = vstorage->InternalComparator()->user_comparator();
|
|
@@ -126,7 +160,9 @@ std::vector<CompactionInputFiles> Compaction::PopulateWithAtomicBoundaries(
|
|
|
126
160
|
AtomicCompactionUnitBoundary cur_boundary;
|
|
127
161
|
size_t first_atomic_idx = 0;
|
|
128
162
|
auto add_unit_boundary = [&](size_t to) {
|
|
129
|
-
if (first_atomic_idx == to)
|
|
163
|
+
if (first_atomic_idx == to) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
130
166
|
for (size_t k = first_atomic_idx; k < to; k++) {
|
|
131
167
|
inputs[i].atomic_compaction_unit_boundaries.push_back(cur_boundary);
|
|
132
168
|
}
|
|
@@ -316,11 +352,9 @@ Compaction::Compaction(
|
|
|
316
352
|
|
|
317
353
|
// for the non-bottommost levels, it tries to build files match the target
|
|
318
354
|
// file size, but not guaranteed. It could be 2x the size of the target size.
|
|
319
|
-
max_output_file_size_ =
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
? target_output_file_size_
|
|
323
|
-
: 2 * target_output_file_size_;
|
|
355
|
+
max_output_file_size_ = bottommost_level_ || grandparents_.empty()
|
|
356
|
+
? target_output_file_size_
|
|
357
|
+
: 2 * target_output_file_size_;
|
|
324
358
|
|
|
325
359
|
#ifndef NDEBUG
|
|
326
360
|
for (size_t i = 1; i < inputs_.size(); ++i) {
|
|
@@ -399,9 +433,14 @@ void Compaction::PopulatePenultimateLevelOutputRange() {
|
|
|
399
433
|
}
|
|
400
434
|
}
|
|
401
435
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
436
|
+
// FIXME: should make use of `penultimate_output_range_type_`.
|
|
437
|
+
// FIXME: when last level's input range does not overlap with
|
|
438
|
+
// penultimate level, and penultimate level input is empty,
|
|
439
|
+
// this call will not set penultimate_level_smallest_ or
|
|
440
|
+
// penultimate_level_largest_. No keys will be compacted up.
|
|
441
|
+
GetBoundaryInternalKeys(input_vstorage_, inputs_,
|
|
442
|
+
&penultimate_level_smallest_,
|
|
443
|
+
&penultimate_level_largest_, exclude_level);
|
|
405
444
|
}
|
|
406
445
|
|
|
407
446
|
Compaction::~Compaction() {
|
|
@@ -426,33 +465,40 @@ bool Compaction::OverlapPenultimateLevelOutputRange(
|
|
|
426
465
|
if (!SupportsPerKeyPlacement()) {
|
|
427
466
|
return false;
|
|
428
467
|
}
|
|
468
|
+
|
|
469
|
+
// See FIXME in Compaction::PopulatePenultimateLevelOutputRange().
|
|
470
|
+
// We do not compact any key up in this case.
|
|
471
|
+
if (penultimate_level_smallest_.size() == 0 ||
|
|
472
|
+
penultimate_level_largest_.size() == 0) {
|
|
473
|
+
return false;
|
|
474
|
+
}
|
|
475
|
+
|
|
429
476
|
const Comparator* ucmp =
|
|
430
477
|
input_vstorage_->InternalComparator()->user_comparator();
|
|
431
478
|
|
|
432
479
|
return ucmp->CompareWithoutTimestamp(
|
|
433
|
-
smallest_key,
|
|
480
|
+
smallest_key, penultimate_level_largest_.user_key()) <= 0 &&
|
|
434
481
|
ucmp->CompareWithoutTimestamp(
|
|
435
|
-
largest_key,
|
|
482
|
+
largest_key, penultimate_level_smallest_.user_key()) >= 0;
|
|
436
483
|
}
|
|
437
484
|
|
|
438
485
|
// key includes timestamp if user-defined timestamp is enabled.
|
|
439
|
-
bool Compaction::WithinPenultimateLevelOutputRange(
|
|
486
|
+
bool Compaction::WithinPenultimateLevelOutputRange(
|
|
487
|
+
const ParsedInternalKey& ikey) const {
|
|
440
488
|
if (!SupportsPerKeyPlacement()) {
|
|
441
489
|
return false;
|
|
442
490
|
}
|
|
443
491
|
|
|
444
|
-
if (
|
|
445
|
-
|
|
492
|
+
if (penultimate_level_smallest_.size() == 0 ||
|
|
493
|
+
penultimate_level_largest_.size() == 0) {
|
|
446
494
|
return false;
|
|
447
495
|
}
|
|
448
496
|
|
|
449
|
-
const
|
|
450
|
-
input_vstorage_->InternalComparator()->user_comparator();
|
|
497
|
+
const InternalKeyComparator* icmp = input_vstorage_->InternalComparator();
|
|
451
498
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
key, penultimate_level_largest_user_key_) <= 0;
|
|
499
|
+
// op_type of a key can change during compaction, e.g. Merge -> Put.
|
|
500
|
+
return icmp->CompareKeySeq(ikey, penultimate_level_smallest_.Encode()) >= 0 &&
|
|
501
|
+
icmp->CompareKeySeq(ikey, penultimate_level_largest_.Encode()) <= 0;
|
|
456
502
|
}
|
|
457
503
|
|
|
458
504
|
bool Compaction::InputCompressionMatchesOutput() const {
|
|
@@ -709,7 +755,9 @@ int InputSummary(const std::vector<FileMetaData*>& files, char* output,
|
|
|
709
755
|
AppendHumanBytes(files.at(i)->fd.GetFileSize(), sztxt, 16);
|
|
710
756
|
ret = snprintf(output + write, sz, "%" PRIu64 "(%s) ",
|
|
711
757
|
files.at(i)->fd.GetNumber(), sztxt);
|
|
712
|
-
if (ret < 0 || ret >= sz)
|
|
758
|
+
if (ret < 0 || ret >= sz) {
|
|
759
|
+
break;
|
|
760
|
+
}
|
|
713
761
|
write += ret;
|
|
714
762
|
}
|
|
715
763
|
// if files.size() is non-zero, overwrite the last space
|
|
@@ -353,14 +353,6 @@ class Compaction {
|
|
|
353
353
|
|
|
354
354
|
Slice GetLargestUserKey() const { return largest_user_key_; }
|
|
355
355
|
|
|
356
|
-
Slice GetPenultimateLevelSmallestUserKey() const {
|
|
357
|
-
return penultimate_level_smallest_user_key_;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
Slice GetPenultimateLevelLargestUserKey() const {
|
|
361
|
-
return penultimate_level_largest_user_key_;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
356
|
PenultimateOutputRangeType GetPenultimateOutputRangeType() const {
|
|
365
357
|
return penultimate_output_range_type_;
|
|
366
358
|
}
|
|
@@ -383,10 +375,8 @@ class Compaction {
|
|
|
383
375
|
// per_key_placement feature, which is safe to place the key to the
|
|
384
376
|
// penultimate level. different compaction strategy has different rules.
|
|
385
377
|
// If per_key_placement is not supported, always return false.
|
|
386
|
-
// TODO: currently it doesn't support moving data from the last level to the
|
|
387
|
-
// penultimate level
|
|
388
378
|
// key includes timestamp if user-defined timestamp is enabled.
|
|
389
|
-
bool WithinPenultimateLevelOutputRange(const
|
|
379
|
+
bool WithinPenultimateLevelOutputRange(const ParsedInternalKey& ikey) const;
|
|
390
380
|
|
|
391
381
|
CompactionReason compaction_reason() const { return compaction_reason_; }
|
|
392
382
|
|
|
@@ -456,6 +446,13 @@ class Compaction {
|
|
|
456
446
|
Slice* smallest_key, Slice* largest_key,
|
|
457
447
|
int exclude_level = -1);
|
|
458
448
|
|
|
449
|
+
// get the smallest and largest internal key present in files to be compacted
|
|
450
|
+
static void GetBoundaryInternalKeys(
|
|
451
|
+
VersionStorageInfo* vstorage,
|
|
452
|
+
const std::vector<CompactionInputFiles>& inputs,
|
|
453
|
+
InternalKey* smallest_key, InternalKey* largest_key,
|
|
454
|
+
int exclude_level = -1);
|
|
455
|
+
|
|
459
456
|
// populate penultimate level output range, which will be used to determine if
|
|
460
457
|
// a key is safe to output to the penultimate level (details see
|
|
461
458
|
// `Compaction::WithinPenultimateLevelOutputRange()`.
|
|
@@ -568,8 +565,8 @@ class Compaction {
|
|
|
568
565
|
// Key range for penultimate level output
|
|
569
566
|
// includes timestamp if user-defined timestamp is enabled.
|
|
570
567
|
// penultimate_output_range_type_ shows the range type
|
|
571
|
-
|
|
572
|
-
|
|
568
|
+
InternalKey penultimate_level_smallest_;
|
|
569
|
+
InternalKey penultimate_level_largest_;
|
|
573
570
|
PenultimateOutputRangeType penultimate_output_range_type_ =
|
|
574
571
|
PenultimateOutputRangeType::kNotSupported;
|
|
575
572
|
};
|
|
@@ -598,6 +595,6 @@ struct PerKeyPlacementContext {
|
|
|
598
595
|
#endif /* !NDEBUG */
|
|
599
596
|
|
|
600
597
|
// Return sum of sizes of all files in `files`.
|
|
601
|
-
|
|
598
|
+
uint64_t TotalFileSize(const std::vector<FileMetaData*>& files);
|
|
602
599
|
|
|
603
600
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -44,6 +44,13 @@ struct CompactionIterationStats {
|
|
|
44
44
|
uint64_t total_blob_bytes_read = 0;
|
|
45
45
|
uint64_t num_blobs_relocated = 0;
|
|
46
46
|
uint64_t total_blob_bytes_relocated = 0;
|
|
47
|
+
|
|
48
|
+
// TimedPut diagnostics
|
|
49
|
+
// Total number of kTypeValuePreferredSeqno records encountered.
|
|
50
|
+
uint64_t num_input_timed_put_records = 0;
|
|
51
|
+
// Number of kTypeValuePreferredSeqno records we ended up swapping in
|
|
52
|
+
// preferred seqno.
|
|
53
|
+
uint64_t num_timed_put_swap_preferred_seqno = 0;
|
|
47
54
|
};
|
|
48
55
|
|
|
49
56
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -491,6 +491,8 @@ void CompactionIterator::NextFromInput() {
|
|
|
491
491
|
if (ikey_.type == kTypeDeletion || ikey_.type == kTypeSingleDeletion ||
|
|
492
492
|
ikey_.type == kTypeDeletionWithTimestamp) {
|
|
493
493
|
iter_stats_.num_input_deletion_records++;
|
|
494
|
+
} else if (ikey_.type == kTypeValuePreferredSeqno) {
|
|
495
|
+
iter_stats_.num_input_timed_put_records++;
|
|
494
496
|
}
|
|
495
497
|
iter_stats_.total_input_raw_key_bytes += key_.size();
|
|
496
498
|
iter_stats_.total_input_raw_value_bytes += value_.size();
|
|
@@ -618,7 +620,8 @@ void CompactionIterator::NextFromInput() {
|
|
|
618
620
|
// not compact out. We will keep this Put, but can drop it's data.
|
|
619
621
|
// (See Optimization 3, below.)
|
|
620
622
|
if (ikey_.type != kTypeValue && ikey_.type != kTypeBlobIndex &&
|
|
621
|
-
ikey_.type != kTypeWideColumnEntity
|
|
623
|
+
ikey_.type != kTypeWideColumnEntity &&
|
|
624
|
+
ikey_.type != kTypeValuePreferredSeqno) {
|
|
622
625
|
ROCKS_LOG_FATAL(info_log_, "Unexpected key %s for compaction output",
|
|
623
626
|
ikey_.DebugString(allow_data_in_errors_, true).c_str());
|
|
624
627
|
assert(false);
|
|
@@ -632,7 +635,8 @@ void CompactionIterator::NextFromInput() {
|
|
|
632
635
|
assert(false);
|
|
633
636
|
}
|
|
634
637
|
|
|
635
|
-
if (ikey_.type == kTypeBlobIndex || ikey_.type == kTypeWideColumnEntity
|
|
638
|
+
if (ikey_.type == kTypeBlobIndex || ikey_.type == kTypeWideColumnEntity ||
|
|
639
|
+
ikey_.type == kTypeValuePreferredSeqno) {
|
|
636
640
|
ikey_.type = kTypeValue;
|
|
637
641
|
current_key_.UpdateInternalKey(ikey_.sequence, ikey_.type);
|
|
638
642
|
}
|
|
@@ -798,7 +802,8 @@ void CompactionIterator::NextFromInput() {
|
|
|
798
802
|
// happened
|
|
799
803
|
if (next_ikey.type != kTypeValue &&
|
|
800
804
|
next_ikey.type != kTypeBlobIndex &&
|
|
801
|
-
next_ikey.type != kTypeWideColumnEntity
|
|
805
|
+
next_ikey.type != kTypeWideColumnEntity &&
|
|
806
|
+
next_ikey.type != kTypeValuePreferredSeqno) {
|
|
802
807
|
++iter_stats_.num_single_del_mismatch;
|
|
803
808
|
}
|
|
804
809
|
|
|
@@ -968,6 +973,62 @@ void CompactionIterator::NextFromInput() {
|
|
|
968
973
|
validity_info_.SetValid(ValidContext::kKeepDel);
|
|
969
974
|
at_next_ = true;
|
|
970
975
|
}
|
|
976
|
+
} else if (ikey_.type == kTypeValuePreferredSeqno &&
|
|
977
|
+
DefinitelyInSnapshot(ikey_.sequence, earliest_snapshot_) &&
|
|
978
|
+
(bottommost_level_ ||
|
|
979
|
+
(compaction_ != nullptr &&
|
|
980
|
+
compaction_->KeyNotExistsBeyondOutputLevel(ikey_.user_key,
|
|
981
|
+
&level_ptrs_)))) {
|
|
982
|
+
// This section that attempts to swap preferred sequence number will not
|
|
983
|
+
// be invoked if this is a CompactionIterator created for flush, since
|
|
984
|
+
// `compaction_` will be nullptr and it's not bottommost either.
|
|
985
|
+
//
|
|
986
|
+
// The entries with the same user key and smaller sequence numbers are
|
|
987
|
+
// all in this earliest snapshot range to be iterated. Since those entries
|
|
988
|
+
// will be hidden by this entry [rule A], it's safe to swap in the
|
|
989
|
+
// preferred seqno now.
|
|
990
|
+
//
|
|
991
|
+
// It's otherwise not safe to swap in the preferred seqno since it's
|
|
992
|
+
// possible for entries in earlier snapshots to have sequence number that
|
|
993
|
+
// is smaller than this entry's sequence number but bigger than this
|
|
994
|
+
// entry's preferred sequence number. Swapping in the preferred sequence
|
|
995
|
+
// number will break the internal key ordering invariant for this key.
|
|
996
|
+
//
|
|
997
|
+
// A special case involving range deletion is handled separately below.
|
|
998
|
+
auto [unpacked_value, preferred_seqno] =
|
|
999
|
+
ParsePackedValueWithSeqno(value_);
|
|
1000
|
+
assert(preferred_seqno < ikey_.sequence || ikey_.sequence == 0);
|
|
1001
|
+
if (range_del_agg_->ShouldDelete(
|
|
1002
|
+
key_, RangeDelPositioningMode::kForwardTraversal)) {
|
|
1003
|
+
++iter_stats_.num_record_drop_hidden;
|
|
1004
|
+
++iter_stats_.num_record_drop_range_del;
|
|
1005
|
+
AdvanceInputIter();
|
|
1006
|
+
} else {
|
|
1007
|
+
InternalKey ikey_after_swap(ikey_.user_key,
|
|
1008
|
+
std::min(preferred_seqno, ikey_.sequence),
|
|
1009
|
+
kTypeValue);
|
|
1010
|
+
Slice ikey_after_swap_slice(*ikey_after_swap.rep());
|
|
1011
|
+
if (range_del_agg_->ShouldDelete(
|
|
1012
|
+
ikey_after_swap_slice,
|
|
1013
|
+
RangeDelPositioningMode::kForwardTraversal)) {
|
|
1014
|
+
// A range tombstone that doesn't cover this kTypeValuePreferredSeqno
|
|
1015
|
+
// entry will end up covering the entry, so it's not safe to swap
|
|
1016
|
+
// preferred sequence number. In this case, we output the entry as is.
|
|
1017
|
+
validity_info_.SetValid(ValidContext::kNewUserKey);
|
|
1018
|
+
} else {
|
|
1019
|
+
if (ikey_.sequence != 0) {
|
|
1020
|
+
iter_stats_.num_timed_put_swap_preferred_seqno++;
|
|
1021
|
+
saved_seq_for_penul_check_ = ikey_.sequence;
|
|
1022
|
+
ikey_.sequence = preferred_seqno;
|
|
1023
|
+
}
|
|
1024
|
+
ikey_.type = kTypeValue;
|
|
1025
|
+
current_key_.UpdateInternalKey(ikey_.sequence, ikey_.type);
|
|
1026
|
+
key_ = current_key_.GetInternalKey();
|
|
1027
|
+
ikey_.user_key = current_key_.GetUserKey();
|
|
1028
|
+
value_ = unpacked_value;
|
|
1029
|
+
validity_info_.SetValid(ValidContext::kSwapPreferredSeqno);
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
971
1032
|
} else if (ikey_.type == kTypeMerge) {
|
|
972
1033
|
if (!merge_helper_->HasOperator()) {
|
|
973
1034
|
status_ = Status::InvalidArgument(
|
|
@@ -1219,6 +1280,21 @@ void CompactionIterator::DecideOutputLevel() {
|
|
|
1219
1280
|
}
|
|
1220
1281
|
#endif // NDEBUG
|
|
1221
1282
|
|
|
1283
|
+
// saved_seq_for_penul_check_ is populated in `NextFromInput` when the
|
|
1284
|
+
// entry's sequence number is non zero and validity context for output this
|
|
1285
|
+
// entry is kSwapPreferredSeqno for use in `DecideOutputLevel`. It should be
|
|
1286
|
+
// cleared out here unconditionally. Otherwise, it may end up getting consumed
|
|
1287
|
+
// incorrectly by a different entry.
|
|
1288
|
+
SequenceNumber seq_for_range_check =
|
|
1289
|
+
(saved_seq_for_penul_check_.has_value() &&
|
|
1290
|
+
saved_seq_for_penul_check_.value() != kMaxSequenceNumber)
|
|
1291
|
+
? saved_seq_for_penul_check_.value()
|
|
1292
|
+
: ikey_.sequence;
|
|
1293
|
+
saved_seq_for_penul_check_ = std::nullopt;
|
|
1294
|
+
ParsedInternalKey ikey_for_range_check = ikey_;
|
|
1295
|
+
if (seq_for_range_check != ikey_.sequence) {
|
|
1296
|
+
ikey_for_range_check.sequence = seq_for_range_check;
|
|
1297
|
+
}
|
|
1222
1298
|
if (output_to_penultimate_level_) {
|
|
1223
1299
|
// If it's decided to output to the penultimate level, but unsafe to do so,
|
|
1224
1300
|
// still output to the last level. For example, moving the data from a lower
|
|
@@ -1227,7 +1303,7 @@ void CompactionIterator::DecideOutputLevel() {
|
|
|
1227
1303
|
// not from this compaction.
|
|
1228
1304
|
// TODO: add statistic for declined output_to_penultimate_level
|
|
1229
1305
|
bool safe_to_penultimate_level =
|
|
1230
|
-
compaction_->WithinPenultimateLevelOutputRange(
|
|
1306
|
+
compaction_->WithinPenultimateLevelOutputRange(ikey_for_range_check);
|
|
1231
1307
|
if (!safe_to_penultimate_level) {
|
|
1232
1308
|
output_to_penultimate_level_ = false;
|
|
1233
1309
|
// It could happen when disable/enable `last_level_temperature` while
|
|
@@ -1239,7 +1315,7 @@ void CompactionIterator::DecideOutputLevel() {
|
|
|
1239
1315
|
// snapshot is released before enabling `last_level_temperature` feature
|
|
1240
1316
|
// We will migrate the feature to `last_level_temperature` and maybe make
|
|
1241
1317
|
// it not dynamically changeable.
|
|
1242
|
-
if (
|
|
1318
|
+
if (seq_for_range_check > earliest_snapshot_) {
|
|
1243
1319
|
status_ = Status::Corruption(
|
|
1244
1320
|
"Unsafe to store Seq later than snapshot in the last level if "
|
|
1245
1321
|
"per_key_placement is enabled");
|
|
@@ -1256,10 +1332,13 @@ void CompactionIterator::PrepareOutput() {
|
|
|
1256
1332
|
} else if (ikey_.type == kTypeBlobIndex) {
|
|
1257
1333
|
GarbageCollectBlobIfNeeded();
|
|
1258
1334
|
}
|
|
1259
|
-
}
|
|
1260
1335
|
|
|
1261
|
-
|
|
1262
|
-
|
|
1336
|
+
// For range del sentinel, we don't use it to cut files for bottommost
|
|
1337
|
+
// compaction. So it should not make a difference which output level we
|
|
1338
|
+
// decide.
|
|
1339
|
+
if (compaction_ != nullptr && compaction_->SupportsPerKeyPlacement()) {
|
|
1340
|
+
DecideOutputLevel();
|
|
1341
|
+
}
|
|
1263
1342
|
}
|
|
1264
1343
|
|
|
1265
1344
|
// Zeroing out the sequence number leads to better compression.
|
|
@@ -119,7 +119,8 @@ class CompactionIterator {
|
|
|
119
119
|
virtual bool SupportsPerKeyPlacement() const = 0;
|
|
120
120
|
|
|
121
121
|
// `key` includes timestamp if user-defined timestamp is enabled.
|
|
122
|
-
virtual bool WithinPenultimateLevelOutputRange(
|
|
122
|
+
virtual bool WithinPenultimateLevelOutputRange(
|
|
123
|
+
const ParsedInternalKey&) const = 0;
|
|
123
124
|
};
|
|
124
125
|
|
|
125
126
|
class RealCompaction : public CompactionProxy {
|
|
@@ -186,8 +187,9 @@ class CompactionIterator {
|
|
|
186
187
|
// Check if key is within penultimate level output range, to see if it's
|
|
187
188
|
// safe to output to the penultimate level for per_key_placement feature.
|
|
188
189
|
// `key` includes timestamp if user-defined timestamp is enabled.
|
|
189
|
-
bool WithinPenultimateLevelOutputRange(
|
|
190
|
-
|
|
190
|
+
bool WithinPenultimateLevelOutputRange(
|
|
191
|
+
const ParsedInternalKey& ikey) const override {
|
|
192
|
+
return compaction_->WithinPenultimateLevelOutputRange(ikey);
|
|
191
193
|
}
|
|
192
194
|
|
|
193
195
|
private:
|
|
@@ -408,6 +410,7 @@ class CompactionIterator {
|
|
|
408
410
|
kKeepDel = 9,
|
|
409
411
|
kNewUserKey = 10,
|
|
410
412
|
kRangeDeletion = 11,
|
|
413
|
+
kSwapPreferredSeqno = 12,
|
|
411
414
|
};
|
|
412
415
|
|
|
413
416
|
struct ValidityInfo {
|
|
@@ -434,6 +437,17 @@ class CompactionIterator {
|
|
|
434
437
|
// iterator output (or current key in the underlying iterator during
|
|
435
438
|
// NextFromInput()).
|
|
436
439
|
ParsedInternalKey ikey_;
|
|
440
|
+
|
|
441
|
+
// When a kTypeValuePreferredSeqno entry's preferred seqno is safely swapped
|
|
442
|
+
// in in this compaction, this field saves its original sequence number for
|
|
443
|
+
// range checking whether it's safe to be placed on the penultimate level.
|
|
444
|
+
// This is to ensure when such an entry happens to be the right boundary of
|
|
445
|
+
// penultimate safe range, it won't get excluded because with the preferred
|
|
446
|
+
// seqno swapped in, it's now larger than the right boundary (itself before
|
|
447
|
+
// the swap). This is safe to do, because preferred seqno is swapped in only
|
|
448
|
+
// when no entries with the same user key exist on lower levels and this entry
|
|
449
|
+
// is already visible in the earliest snapshot.
|
|
450
|
+
std::optional<SequenceNumber> saved_seq_for_penul_check_ = kMaxSequenceNumber;
|
|
437
451
|
// Stores whether ikey_.user_key is valid. If set to false, the user key is
|
|
438
452
|
// not compared against the current key in the underlying iterator.
|
|
439
453
|
bool has_current_user_key_ = false;
|