@nxtedition/rocksdb 5.2.21 → 5.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +510 -967
- package/binding.gyp +78 -72
- package/chained-batch.js +1 -2
- package/deps/rocksdb/build_version.cc +70 -4
- package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
- package/deps/rocksdb/rocksdb/Makefile +459 -469
- package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
- package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
- package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
- package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
- package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
- package/deps/rocksdb/rocksdb/db/builder.h +16 -37
- package/deps/rocksdb/rocksdb/db/c.cc +413 -208
- package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
- package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
- package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
- package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
- package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
- package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
- package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
- package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
- package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
- package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
- package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
- package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
- package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
- package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
- package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
- package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
- package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
- package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
- package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
- package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
- package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
- package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
- package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
- package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
- package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
- package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
- package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
- package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
- package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
- package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
- package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
- package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
- package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
- package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
- package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
- package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
- package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
- package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
- package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
- package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
- package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
- package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
- package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
- package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
- package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
- package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
- package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
- package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
- package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
- package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
- package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
- package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
- package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
- package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
- package/deps/rocksdb/rocksdb/env/env.cc +632 -42
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
- package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
- package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
- package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
- package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
- package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
- package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
- package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
- package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
- package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
- package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
- package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
- package/deps/rocksdb/rocksdb/file/filename.h +13 -8
- package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
- package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
- package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
- package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
- package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
- package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
- package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
- package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
- package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
- package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
- package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
- package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
- package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
- package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
- package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
- package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
- package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
- package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
- package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
- package/deps/rocksdb/rocksdb/options/options.cc +49 -17
- package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
- package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
- package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
- package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
- package/deps/rocksdb/rocksdb/port/lang.h +52 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
- package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
- package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
- package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
- package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
- package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
- package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
- package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
- package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
- package/deps/rocksdb/rocksdb/python.mk +9 -0
- package/deps/rocksdb/rocksdb/src.mk +82 -34
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
- package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
- package/deps/rocksdb/rocksdb/table/format.cc +258 -104
- package/deps/rocksdb/rocksdb/table/format.h +120 -109
- package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
- package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
- package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
- package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
- package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
- package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
- package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
- package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
- package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
- package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
- package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
- package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
- 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 +9 -3
- package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
- package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
- package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
- package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
- package/deps/rocksdb/rocksdb/util/channel.h +2 -0
- package/deps/rocksdb/rocksdb/util/coding.h +1 -33
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
- package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
- package/deps/rocksdb/rocksdb/util/compression.h +212 -7
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
- package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
- package/deps/rocksdb/rocksdb/util/defer.h +30 -1
- package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
- package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
- package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
- package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
- package/deps/rocksdb/rocksdb/util/hash.h +31 -1
- package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
- package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
- package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
- package/deps/rocksdb/rocksdb/util/heap.h +6 -1
- package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
- package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/util/math.h +74 -7
- package/deps/rocksdb/rocksdb/util/math128.h +13 -1
- package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
- package/deps/rocksdb/rocksdb/util/random.cc +9 -0
- package/deps/rocksdb/rocksdb/util/random.h +6 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
- package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
- package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
- package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
- package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
- package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
- package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
- package/deps/rocksdb/rocksdb/util/status.cc +32 -29
- package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
- package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
- package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
- package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
- package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
- package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
- package/deps/rocksdb/rocksdb/util/timer.h +55 -46
- package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
- package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
- package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
- package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
- package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
- package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
- package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
- package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
- package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
- package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
- package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
- package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
- package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
- package/deps/rocksdb/rocksdb.gyp +425 -446
- package/index.js +5 -87
- package/package-lock.json +23687 -0
- package/package.json +8 -9
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/README.md +0 -32
- package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
- package/deps/rocksdb/rocksdb/hdfs/README +0 -23
- package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
- package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
- package/deps/rocksdb/rocksdb/port/README +0 -10
- package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
- package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
- package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
- package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
- package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
- package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
- package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
- package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
- package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
- package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
- package/deps/snappy/snappy-1.1.7/README.md +0 -149
- package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
|
@@ -8,78 +8,67 @@
|
|
|
8
8
|
#include <iterator>
|
|
9
9
|
#include <limits>
|
|
10
10
|
|
|
11
|
+
#include "db/blob/blob_fetcher.h"
|
|
11
12
|
#include "db/blob/blob_file_builder.h"
|
|
12
13
|
#include "db/blob/blob_index.h"
|
|
14
|
+
#include "db/blob/prefetch_buffer_collection.h"
|
|
13
15
|
#include "db/snapshot_checker.h"
|
|
16
|
+
#include "logging/logging.h"
|
|
14
17
|
#include "port/likely.h"
|
|
15
18
|
#include "rocksdb/listener.h"
|
|
16
19
|
#include "table/internal_iterator.h"
|
|
17
20
|
#include "test_util/sync_point.h"
|
|
18
21
|
|
|
19
|
-
#define DEFINITELY_IN_SNAPSHOT(seq, snapshot) \
|
|
20
|
-
((seq) <= (snapshot) && \
|
|
21
|
-
(snapshot_checker_ == nullptr || \
|
|
22
|
-
LIKELY(snapshot_checker_->CheckInSnapshot((seq), (snapshot)) == \
|
|
23
|
-
SnapshotCheckerResult::kInSnapshot)))
|
|
24
|
-
|
|
25
|
-
#define DEFINITELY_NOT_IN_SNAPSHOT(seq, snapshot) \
|
|
26
|
-
((seq) > (snapshot) || \
|
|
27
|
-
(snapshot_checker_ != nullptr && \
|
|
28
|
-
UNLIKELY(snapshot_checker_->CheckInSnapshot((seq), (snapshot)) == \
|
|
29
|
-
SnapshotCheckerResult::kNotInSnapshot)))
|
|
30
|
-
|
|
31
|
-
#define IN_EARLIEST_SNAPSHOT(seq) \
|
|
32
|
-
((seq) <= earliest_snapshot_ && \
|
|
33
|
-
(snapshot_checker_ == nullptr || LIKELY(IsInEarliestSnapshot(seq))))
|
|
34
|
-
|
|
35
22
|
namespace ROCKSDB_NAMESPACE {
|
|
36
|
-
|
|
37
23
|
CompactionIterator::CompactionIterator(
|
|
38
24
|
InternalIterator* input, const Comparator* cmp, MergeHelper* merge_helper,
|
|
39
25
|
SequenceNumber last_sequence, std::vector<SequenceNumber>* snapshots,
|
|
40
26
|
SequenceNumber earliest_write_conflict_snapshot,
|
|
41
|
-
const SnapshotChecker* snapshot_checker,
|
|
42
|
-
bool report_detailed_time, bool expect_valid_internal_key,
|
|
27
|
+
SequenceNumber job_snapshot, const SnapshotChecker* snapshot_checker,
|
|
28
|
+
Env* env, bool report_detailed_time, bool expect_valid_internal_key,
|
|
43
29
|
CompactionRangeDelAggregator* range_del_agg,
|
|
44
30
|
BlobFileBuilder* blob_file_builder, bool allow_data_in_errors,
|
|
45
31
|
const Compaction* compaction, const CompactionFilter* compaction_filter,
|
|
46
32
|
const std::atomic<bool>* shutting_down,
|
|
47
|
-
const SequenceNumber preserve_deletes_seqnum,
|
|
48
33
|
const std::atomic<int>* manual_compaction_paused,
|
|
34
|
+
const std::atomic<bool>* manual_compaction_canceled,
|
|
49
35
|
const std::shared_ptr<Logger> info_log,
|
|
50
36
|
const std::string* full_history_ts_low)
|
|
51
37
|
: CompactionIterator(
|
|
52
38
|
input, cmp, merge_helper, last_sequence, snapshots,
|
|
53
|
-
earliest_write_conflict_snapshot, snapshot_checker, env,
|
|
39
|
+
earliest_write_conflict_snapshot, job_snapshot, snapshot_checker, env,
|
|
54
40
|
report_detailed_time, expect_valid_internal_key, range_del_agg,
|
|
55
41
|
blob_file_builder, allow_data_in_errors,
|
|
56
42
|
std::unique_ptr<CompactionProxy>(
|
|
57
43
|
compaction ? new RealCompaction(compaction) : nullptr),
|
|
58
|
-
compaction_filter, shutting_down,
|
|
59
|
-
|
|
44
|
+
compaction_filter, shutting_down, manual_compaction_paused,
|
|
45
|
+
manual_compaction_canceled, info_log, full_history_ts_low) {}
|
|
60
46
|
|
|
61
47
|
CompactionIterator::CompactionIterator(
|
|
62
48
|
InternalIterator* input, const Comparator* cmp, MergeHelper* merge_helper,
|
|
63
49
|
SequenceNumber /*last_sequence*/, std::vector<SequenceNumber>* snapshots,
|
|
64
50
|
SequenceNumber earliest_write_conflict_snapshot,
|
|
65
|
-
const SnapshotChecker* snapshot_checker,
|
|
66
|
-
bool report_detailed_time, bool expect_valid_internal_key,
|
|
51
|
+
SequenceNumber job_snapshot, const SnapshotChecker* snapshot_checker,
|
|
52
|
+
Env* env, bool report_detailed_time, bool expect_valid_internal_key,
|
|
67
53
|
CompactionRangeDelAggregator* range_del_agg,
|
|
68
54
|
BlobFileBuilder* blob_file_builder, bool allow_data_in_errors,
|
|
69
55
|
std::unique_ptr<CompactionProxy> compaction,
|
|
70
56
|
const CompactionFilter* compaction_filter,
|
|
71
57
|
const std::atomic<bool>* shutting_down,
|
|
72
|
-
const SequenceNumber preserve_deletes_seqnum,
|
|
73
58
|
const std::atomic<int>* manual_compaction_paused,
|
|
59
|
+
const std::atomic<bool>* manual_compaction_canceled,
|
|
74
60
|
const std::shared_ptr<Logger> info_log,
|
|
75
61
|
const std::string* full_history_ts_low)
|
|
76
|
-
: input_(input
|
|
62
|
+
: input_(input, cmp,
|
|
63
|
+
!compaction || compaction->DoesInputReferenceBlobFiles()),
|
|
77
64
|
cmp_(cmp),
|
|
78
65
|
merge_helper_(merge_helper),
|
|
79
66
|
snapshots_(snapshots),
|
|
80
67
|
earliest_write_conflict_snapshot_(earliest_write_conflict_snapshot),
|
|
68
|
+
job_snapshot_(job_snapshot),
|
|
81
69
|
snapshot_checker_(snapshot_checker),
|
|
82
70
|
env_(env),
|
|
71
|
+
clock_(env_->GetSystemClock().get()),
|
|
83
72
|
report_detailed_time_(report_detailed_time),
|
|
84
73
|
expect_valid_internal_key_(expect_valid_internal_key),
|
|
85
74
|
range_del_agg_(range_del_agg),
|
|
@@ -88,7 +77,7 @@ CompactionIterator::CompactionIterator(
|
|
|
88
77
|
compaction_filter_(compaction_filter),
|
|
89
78
|
shutting_down_(shutting_down),
|
|
90
79
|
manual_compaction_paused_(manual_compaction_paused),
|
|
91
|
-
|
|
80
|
+
manual_compaction_canceled_(manual_compaction_canceled),
|
|
92
81
|
info_log_(info_log),
|
|
93
82
|
allow_data_in_errors_(allow_data_in_errors),
|
|
94
83
|
timestamp_size_(cmp_ ? cmp_->timestamp_size() : 0),
|
|
@@ -98,9 +87,12 @@ CompactionIterator::CompactionIterator(
|
|
|
98
87
|
merge_out_iter_(merge_helper_),
|
|
99
88
|
blob_garbage_collection_cutoff_file_number_(
|
|
100
89
|
ComputeBlobGarbageCollectionCutoffFileNumber(compaction_.get())),
|
|
90
|
+
blob_fetcher_(CreateBlobFetcherIfNeeded(compaction_.get())),
|
|
91
|
+
prefetch_buffers_(
|
|
92
|
+
CreatePrefetchBufferCollectionIfNeeded(compaction_.get())),
|
|
101
93
|
current_key_committed_(false),
|
|
102
|
-
cmp_with_history_ts_low_(0)
|
|
103
|
-
|
|
94
|
+
cmp_with_history_ts_low_(0),
|
|
95
|
+
level_(compaction_ == nullptr ? 0 : compaction_->level()) {
|
|
104
96
|
assert(snapshots_ != nullptr);
|
|
105
97
|
bottommost_level_ = compaction_ == nullptr
|
|
106
98
|
? false
|
|
@@ -129,13 +121,13 @@ CompactionIterator::CompactionIterator(
|
|
|
129
121
|
assert(timestamp_size_ == 0 || !full_history_ts_low_ ||
|
|
130
122
|
timestamp_size_ == full_history_ts_low_->size());
|
|
131
123
|
#endif
|
|
132
|
-
input_
|
|
124
|
+
input_.SetPinnedItersMgr(&pinned_iters_mgr_);
|
|
133
125
|
TEST_SYNC_POINT_CALLBACK("CompactionIterator:AfterInit", compaction_.get());
|
|
134
126
|
}
|
|
135
127
|
|
|
136
128
|
CompactionIterator::~CompactionIterator() {
|
|
137
|
-
// input_
|
|
138
|
-
input_
|
|
129
|
+
// input_ Iterator lifetime is longer than pinned_iters_mgr_ lifetime
|
|
130
|
+
input_.SetPinnedItersMgr(nullptr);
|
|
139
131
|
}
|
|
140
132
|
|
|
141
133
|
void CompactionIterator::ResetRecordCounts() {
|
|
@@ -188,7 +180,7 @@ void CompactionIterator::Next() {
|
|
|
188
180
|
// Only advance the input iterator if there is no merge output and the
|
|
189
181
|
// iterator is not already at the next record.
|
|
190
182
|
if (!at_next_) {
|
|
191
|
-
|
|
183
|
+
AdvanceInputIter();
|
|
192
184
|
}
|
|
193
185
|
NextFromInput();
|
|
194
186
|
}
|
|
@@ -203,82 +195,169 @@ void CompactionIterator::Next() {
|
|
|
203
195
|
|
|
204
196
|
bool CompactionIterator::InvokeFilterIfNeeded(bool* need_skip,
|
|
205
197
|
Slice* skip_until) {
|
|
206
|
-
if (compaction_filter_
|
|
207
|
-
(ikey_.type
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
198
|
+
if (!compaction_filter_ ||
|
|
199
|
+
(ikey_.type != kTypeValue && ikey_.type != kTypeBlobIndex)) {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
bool error = false;
|
|
203
|
+
// If the user has specified a compaction filter and the sequence
|
|
204
|
+
// number is greater than any external snapshot, then invoke the
|
|
205
|
+
// filter. If the return value of the compaction filter is true,
|
|
206
|
+
// replace the entry with a deletion marker.
|
|
207
|
+
CompactionFilter::Decision filter = CompactionFilter::Decision::kUndetermined;
|
|
208
|
+
compaction_filter_value_.clear();
|
|
209
|
+
compaction_filter_skip_until_.Clear();
|
|
210
|
+
CompactionFilter::ValueType value_type =
|
|
211
|
+
ikey_.type == kTypeValue ? CompactionFilter::ValueType::kValue
|
|
212
|
+
: CompactionFilter::ValueType::kBlobIndex;
|
|
213
|
+
// Hack: pass internal key to BlobIndexCompactionFilter since it needs
|
|
214
|
+
// to get sequence number.
|
|
215
|
+
assert(compaction_filter_);
|
|
216
|
+
Slice& filter_key =
|
|
217
|
+
(ikey_.type == kTypeValue ||
|
|
218
|
+
!compaction_filter_->IsStackedBlobDbInternalCompactionFilter())
|
|
219
|
+
? ikey_.user_key
|
|
220
|
+
: key_;
|
|
221
|
+
{
|
|
222
|
+
StopWatchNano timer(clock_, report_detailed_time_);
|
|
223
|
+
if (kTypeBlobIndex == ikey_.type) {
|
|
224
|
+
blob_value_.Reset();
|
|
225
|
+
filter = compaction_filter_->FilterBlobByKey(
|
|
226
|
+
level_, filter_key, &compaction_filter_value_,
|
|
227
|
+
compaction_filter_skip_until_.rep());
|
|
228
|
+
if (CompactionFilter::Decision::kUndetermined == filter &&
|
|
229
|
+
!compaction_filter_->IsStackedBlobDbInternalCompactionFilter()) {
|
|
230
|
+
if (compaction_ == nullptr) {
|
|
231
|
+
status_ =
|
|
232
|
+
Status::Corruption("Unexpected blob index outside of compaction");
|
|
233
|
+
valid_ = false;
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
TEST_SYNC_POINT_CALLBACK(
|
|
238
|
+
"CompactionIterator::InvokeFilterIfNeeded::TamperWithBlobIndex",
|
|
239
|
+
&value_);
|
|
240
|
+
|
|
241
|
+
// For integrated BlobDB impl, CompactionIterator reads blob value.
|
|
242
|
+
// For Stacked BlobDB impl, the corresponding CompactionFilter's
|
|
243
|
+
// FilterV2 method should read the blob value.
|
|
244
|
+
BlobIndex blob_index;
|
|
245
|
+
Status s = blob_index.DecodeFrom(value_);
|
|
246
|
+
if (!s.ok()) {
|
|
247
|
+
status_ = s;
|
|
248
|
+
valid_ = false;
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
FilePrefetchBuffer* prefetch_buffer =
|
|
253
|
+
prefetch_buffers_ ? prefetch_buffers_->GetOrCreatePrefetchBuffer(
|
|
254
|
+
blob_index.file_number())
|
|
255
|
+
: nullptr;
|
|
256
|
+
|
|
257
|
+
uint64_t bytes_read = 0;
|
|
258
|
+
|
|
259
|
+
assert(blob_fetcher_);
|
|
260
|
+
|
|
261
|
+
s = blob_fetcher_->FetchBlob(ikey_.user_key, blob_index,
|
|
262
|
+
prefetch_buffer, &blob_value_,
|
|
263
|
+
&bytes_read);
|
|
264
|
+
if (!s.ok()) {
|
|
265
|
+
status_ = s;
|
|
266
|
+
valid_ = false;
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
++iter_stats_.num_blobs_read;
|
|
271
|
+
iter_stats_.total_blob_bytes_read += bytes_read;
|
|
272
|
+
|
|
273
|
+
value_type = CompactionFilter::ValueType::kValue;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (CompactionFilter::Decision::kUndetermined == filter) {
|
|
223
277
|
filter = compaction_filter_->FilterV2(
|
|
224
|
-
|
|
225
|
-
&compaction_filter_value_,
|
|
226
|
-
|
|
227
|
-
env_ != nullptr && report_detailed_time_ ? timer.ElapsedNanos() : 0;
|
|
278
|
+
level_, filter_key, value_type,
|
|
279
|
+
blob_value_.empty() ? value_ : blob_value_, &compaction_filter_value_,
|
|
280
|
+
compaction_filter_skip_until_.rep());
|
|
228
281
|
}
|
|
282
|
+
iter_stats_.total_filter_time +=
|
|
283
|
+
env_ != nullptr && report_detailed_time_ ? timer.ElapsedNanos() : 0;
|
|
284
|
+
}
|
|
229
285
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
286
|
+
if (CompactionFilter::Decision::kUndetermined == filter) {
|
|
287
|
+
// Should not reach here, since FilterV2 should never return kUndetermined.
|
|
288
|
+
status_ =
|
|
289
|
+
Status::NotSupported("FilterV2() should never return kUndetermined");
|
|
290
|
+
valid_ = false;
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
237
293
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
294
|
+
if (filter == CompactionFilter::Decision::kRemoveAndSkipUntil &&
|
|
295
|
+
cmp_->Compare(*compaction_filter_skip_until_.rep(), ikey_.user_key) <=
|
|
296
|
+
0) {
|
|
297
|
+
// Can't skip to a key smaller than the current one.
|
|
298
|
+
// Keep the key as per FilterV2 documentation.
|
|
299
|
+
filter = CompactionFilter::Decision::kKeep;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (filter == CompactionFilter::Decision::kRemove) {
|
|
303
|
+
// convert the current key to a delete; key_ is pointing into
|
|
304
|
+
// current_key_ at this point, so updating current_key_ updates key()
|
|
305
|
+
ikey_.type = kTypeDeletion;
|
|
306
|
+
current_key_.UpdateInternalKey(ikey_.sequence, kTypeDeletion);
|
|
307
|
+
// no value associated with delete
|
|
308
|
+
value_.clear();
|
|
309
|
+
iter_stats_.num_record_drop_user++;
|
|
310
|
+
} else if (filter == CompactionFilter::Decision::kChangeValue) {
|
|
311
|
+
if (ikey_.type == kTypeBlobIndex) {
|
|
312
|
+
// value transfer from blob file to inlined data
|
|
313
|
+
ikey_.type = kTypeValue;
|
|
314
|
+
current_key_.UpdateInternalKey(ikey_.sequence, ikey_.type);
|
|
315
|
+
}
|
|
316
|
+
value_ = compaction_filter_value_;
|
|
317
|
+
} else if (filter == CompactionFilter::Decision::kRemoveAndSkipUntil) {
|
|
318
|
+
*need_skip = true;
|
|
319
|
+
compaction_filter_skip_until_.ConvertFromUserKey(kMaxSequenceNumber,
|
|
320
|
+
kValueTypeForSeek);
|
|
321
|
+
*skip_until = compaction_filter_skip_until_.Encode();
|
|
322
|
+
} else if (filter == CompactionFilter::Decision::kChangeBlobIndex) {
|
|
323
|
+
// Only the StackableDB-based BlobDB impl's compaction filter should return
|
|
324
|
+
// kChangeBlobIndex. Decision about rewriting blob and changing blob index
|
|
325
|
+
// in the integrated BlobDB impl is made in subsequent call to
|
|
326
|
+
// PrepareOutput() and its callees.
|
|
327
|
+
if (!compaction_filter_->IsStackedBlobDbInternalCompactionFilter()) {
|
|
328
|
+
status_ = Status::NotSupported(
|
|
329
|
+
"Only stacked BlobDB's internal compaction filter can return "
|
|
330
|
+
"kChangeBlobIndex.");
|
|
331
|
+
valid_ = false;
|
|
332
|
+
return false;
|
|
333
|
+
}
|
|
334
|
+
if (ikey_.type == kTypeValue) {
|
|
335
|
+
// value transfer from inlined data to blob file
|
|
336
|
+
ikey_.type = kTypeBlobIndex;
|
|
337
|
+
current_key_.UpdateInternalKey(ikey_.sequence, ikey_.type);
|
|
338
|
+
}
|
|
339
|
+
value_ = compaction_filter_value_;
|
|
340
|
+
} else if (filter == CompactionFilter::Decision::kIOError) {
|
|
341
|
+
if (!compaction_filter_->IsStackedBlobDbInternalCompactionFilter()) {
|
|
342
|
+
status_ = Status::NotSupported(
|
|
343
|
+
"CompactionFilter for integrated BlobDB should not return kIOError");
|
|
344
|
+
valid_ = false;
|
|
268
345
|
return false;
|
|
269
346
|
}
|
|
347
|
+
status_ = Status::IOError("Failed to access blob during compaction filter");
|
|
348
|
+
error = true;
|
|
270
349
|
}
|
|
271
|
-
return
|
|
350
|
+
return !error;
|
|
272
351
|
}
|
|
273
352
|
|
|
274
353
|
void CompactionIterator::NextFromInput() {
|
|
275
354
|
at_next_ = false;
|
|
276
355
|
valid_ = false;
|
|
277
356
|
|
|
278
|
-
while (!valid_ && input_
|
|
357
|
+
while (!valid_ && input_.Valid() && !IsPausingManualCompaction() &&
|
|
279
358
|
!IsShuttingDown()) {
|
|
280
|
-
key_ = input_
|
|
281
|
-
value_ = input_
|
|
359
|
+
key_ = input_.key();
|
|
360
|
+
value_ = input_.value();
|
|
282
361
|
iter_stats_.num_input_records++;
|
|
283
362
|
|
|
284
363
|
Status pik_status = ParseInternalKey(key_, &ikey_, allow_data_in_errors_);
|
|
@@ -315,13 +394,11 @@ void CompactionIterator::NextFromInput() {
|
|
|
315
394
|
// merge_helper_->compaction_filter_skip_until_.
|
|
316
395
|
Slice skip_until;
|
|
317
396
|
|
|
318
|
-
|
|
397
|
+
bool user_key_equal_without_ts = false;
|
|
319
398
|
int cmp_ts = 0;
|
|
320
399
|
if (has_current_user_key_) {
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
? cmp_->CompareWithoutTimestamp(ikey_.user_key, current_user_key_)
|
|
324
|
-
: cmp_->Compare(ikey_.user_key, current_user_key_);
|
|
400
|
+
user_key_equal_without_ts =
|
|
401
|
+
cmp_->EqualWithoutTimestamp(ikey_.user_key, current_user_key_);
|
|
325
402
|
// if timestamp_size_ > 0, then curr_ts_ has been initialized by a
|
|
326
403
|
// previous key.
|
|
327
404
|
cmp_ts = timestamp_size_ ? cmp_->CompareTimestamp(
|
|
@@ -334,11 +411,17 @@ void CompactionIterator::NextFromInput() {
|
|
|
334
411
|
// Check whether the user key changed. After this if statement current_key_
|
|
335
412
|
// is a copy of the current input key (maybe converted to a delete by the
|
|
336
413
|
// compaction filter). ikey_.user_key is pointing to the copy.
|
|
337
|
-
if (!has_current_user_key_ ||
|
|
414
|
+
if (!has_current_user_key_ || !user_key_equal_without_ts || cmp_ts != 0) {
|
|
338
415
|
// First occurrence of this user key
|
|
339
416
|
// Copy key for output
|
|
340
417
|
key_ = current_key_.SetInternalKey(key_, &ikey_);
|
|
341
418
|
|
|
419
|
+
int prev_cmp_with_ts_low =
|
|
420
|
+
!full_history_ts_low_ ? 0
|
|
421
|
+
: curr_ts_.empty()
|
|
422
|
+
? 0
|
|
423
|
+
: cmp_->CompareTimestamp(curr_ts_, *full_history_ts_low_);
|
|
424
|
+
|
|
342
425
|
// If timestamp_size_ > 0, then copy from ikey_ to curr_ts_ for the use
|
|
343
426
|
// in next iteration to compare with the timestamp of next key.
|
|
344
427
|
UpdateTimestampAndCompareWithFullHistoryLow();
|
|
@@ -348,14 +431,16 @@ void CompactionIterator::NextFromInput() {
|
|
|
348
431
|
// (2) timestamp is disabled, OR
|
|
349
432
|
// (3) all history will be preserved, OR
|
|
350
433
|
// (4) user key (excluding timestamp) is different from previous key, OR
|
|
351
|
-
// (5) timestamp is NO older than *full_history_ts_low_
|
|
434
|
+
// (5) timestamp is NO older than *full_history_ts_low_, OR
|
|
435
|
+
// (6) timestamp is the largest one older than full_history_ts_low_,
|
|
352
436
|
// then current_user_key_ must be treated as a different user key.
|
|
353
437
|
// This means, if a user key (excluding ts) is the same as the previous
|
|
354
438
|
// user key, and its ts is older than *full_history_ts_low_, then we
|
|
355
439
|
// consider this key for GC, e.g. it may be dropped if certain conditions
|
|
356
440
|
// match.
|
|
357
441
|
if (!has_current_user_key_ || !timestamp_size_ || !full_history_ts_low_ ||
|
|
358
|
-
|
|
442
|
+
!user_key_equal_without_ts || cmp_with_history_ts_low_ >= 0 ||
|
|
443
|
+
prev_cmp_with_ts_low >= 0) {
|
|
359
444
|
// Initialize for future comparison for rule (A) and etc.
|
|
360
445
|
current_user_key_sequence_ = kMaxSequenceNumber;
|
|
361
446
|
current_user_key_snapshot_ = 0;
|
|
@@ -365,6 +450,8 @@ void CompactionIterator::NextFromInput() {
|
|
|
365
450
|
|
|
366
451
|
has_outputted_key_ = false;
|
|
367
452
|
|
|
453
|
+
last_key_seq_zeroed_ = false;
|
|
454
|
+
|
|
368
455
|
current_key_committed_ = KeyCommitted(ikey_.sequence);
|
|
369
456
|
|
|
370
457
|
// Apply the compaction filter to the first committed version of the user
|
|
@@ -422,20 +509,25 @@ void CompactionIterator::NextFromInput() {
|
|
|
422
509
|
// In the previous iteration we encountered a single delete that we could
|
|
423
510
|
// not compact out. We will keep this Put, but can drop it's data.
|
|
424
511
|
// (See Optimization 3, below.)
|
|
425
|
-
assert(ikey_.type == kTypeValue);
|
|
426
|
-
if (ikey_.type != kTypeValue) {
|
|
512
|
+
assert(ikey_.type == kTypeValue || ikey_.type == kTypeBlobIndex);
|
|
513
|
+
if (ikey_.type != kTypeValue && ikey_.type != kTypeBlobIndex) {
|
|
427
514
|
ROCKS_LOG_FATAL(info_log_,
|
|
428
515
|
"Unexpected key type %d for compaction output",
|
|
429
516
|
ikey_.type);
|
|
430
517
|
}
|
|
431
|
-
assert(current_user_key_snapshot_
|
|
432
|
-
if (current_user_key_snapshot_
|
|
518
|
+
assert(current_user_key_snapshot_ >= last_snapshot);
|
|
519
|
+
if (current_user_key_snapshot_ < last_snapshot) {
|
|
433
520
|
ROCKS_LOG_FATAL(info_log_,
|
|
434
521
|
"current_user_key_snapshot_ (%" PRIu64
|
|
435
|
-
")
|
|
522
|
+
") < last_snapshot (%" PRIu64 ")",
|
|
436
523
|
current_user_key_snapshot_, last_snapshot);
|
|
437
524
|
}
|
|
438
525
|
|
|
526
|
+
if (ikey_.type == kTypeBlobIndex) {
|
|
527
|
+
ikey_.type = kTypeValue;
|
|
528
|
+
current_key_.UpdateInternalKey(ikey_.sequence, ikey_.type);
|
|
529
|
+
}
|
|
530
|
+
|
|
439
531
|
value_.clear();
|
|
440
532
|
valid_ = true;
|
|
441
533
|
clear_and_output_next_key_ = false;
|
|
@@ -447,6 +539,25 @@ void CompactionIterator::NextFromInput() {
|
|
|
447
539
|
// 2) We've already returned a record in this snapshot -OR-
|
|
448
540
|
// there are no earlier earliest_write_conflict_snapshot.
|
|
449
541
|
//
|
|
542
|
+
// A note about 2) above:
|
|
543
|
+
// we try to determine whether there is any earlier write conflict
|
|
544
|
+
// checking snapshot by calling DefinitelyInSnapshot() with seq and
|
|
545
|
+
// earliest_write_conflict_snapshot as arguments. For write-prepared
|
|
546
|
+
// and write-unprepared transactions, if earliest_write_conflict_snapshot
|
|
547
|
+
// is evicted from WritePreparedTxnDB::commit_cache, then
|
|
548
|
+
// DefinitelyInSnapshot(seq, earliest_write_conflict_snapshot) returns
|
|
549
|
+
// false, even if the seq is actually visible within
|
|
550
|
+
// earliest_write_conflict_snapshot. Consequently, CompactionIterator
|
|
551
|
+
// may try to zero out its sequence number, thus hitting assertion error
|
|
552
|
+
// in debug mode or cause incorrect DBIter return result.
|
|
553
|
+
// We observe that earliest_write_conflict_snapshot >= earliest_snapshot,
|
|
554
|
+
// and the seq zeroing logic depends on
|
|
555
|
+
// DefinitelyInSnapshot(seq, earliest_snapshot). Therefore, if we cannot
|
|
556
|
+
// determine whether seq is **definitely** in
|
|
557
|
+
// earliest_write_conflict_snapshot, then we can additionally check if
|
|
558
|
+
// seq is definitely in earliest_snapshot. If the latter holds, then the
|
|
559
|
+
// former holds too.
|
|
560
|
+
//
|
|
450
561
|
// Rule 1 is needed for SingleDelete correctness. Rule 2 is needed to
|
|
451
562
|
// allow Transactions to do write-conflict checking (if we compacted away
|
|
452
563
|
// all keys, then we wouldn't know that a write happened in this
|
|
@@ -471,35 +582,78 @@ void CompactionIterator::NextFromInput() {
|
|
|
471
582
|
// we can choose how to handle such a combinations of operations. We will
|
|
472
583
|
// try to compact out as much as we can in these cases.
|
|
473
584
|
// We will report counts on these anomalous cases.
|
|
585
|
+
//
|
|
586
|
+
// Note: If timestamp is enabled, then record will be eligible for
|
|
587
|
+
// deletion, only if, along with above conditions (Rule 1 and Rule 2)
|
|
588
|
+
// full_history_ts_low_ is specified and timestamp for that key is less
|
|
589
|
+
// than *full_history_ts_low_. If it's not eligible for deletion, then we
|
|
590
|
+
// will output the SingleDelete. For Optimization 3 also, if
|
|
591
|
+
// full_history_ts_low_ is specified and timestamp for the key is less
|
|
592
|
+
// than *full_history_ts_low_ then only optimization will be applied.
|
|
474
593
|
|
|
475
594
|
// The easiest way to process a SingleDelete during iteration is to peek
|
|
476
595
|
// ahead at the next key.
|
|
596
|
+
const bool is_timestamp_eligible_for_gc =
|
|
597
|
+
(timestamp_size_ == 0 ||
|
|
598
|
+
(full_history_ts_low_ && cmp_with_history_ts_low_ < 0));
|
|
599
|
+
|
|
477
600
|
ParsedInternalKey next_ikey;
|
|
478
|
-
|
|
601
|
+
AdvanceInputIter();
|
|
479
602
|
|
|
480
603
|
// Check whether the next key exists, is not corrupt, and is the same key
|
|
481
604
|
// as the single delete.
|
|
482
|
-
if (input_
|
|
483
|
-
ParseInternalKey(input_
|
|
605
|
+
if (input_.Valid() &&
|
|
606
|
+
ParseInternalKey(input_.key(), &next_ikey, allow_data_in_errors_)
|
|
484
607
|
.ok() &&
|
|
485
|
-
cmp_->
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
608
|
+
cmp_->EqualWithoutTimestamp(ikey_.user_key, next_ikey.user_key)) {
|
|
609
|
+
#ifndef NDEBUG
|
|
610
|
+
const Compaction* c =
|
|
611
|
+
compaction_ ? compaction_->real_compaction() : nullptr;
|
|
612
|
+
#endif
|
|
613
|
+
TEST_SYNC_POINT_CALLBACK(
|
|
614
|
+
"CompactionIterator::NextFromInput:SingleDelete:1",
|
|
615
|
+
const_cast<Compaction*>(c));
|
|
616
|
+
if (last_key_seq_zeroed_) {
|
|
617
|
+
++iter_stats_.num_record_drop_hidden;
|
|
618
|
+
++iter_stats_.num_record_drop_obsolete;
|
|
619
|
+
assert(bottommost_level_);
|
|
620
|
+
AdvanceInputIter();
|
|
621
|
+
} else if (prev_snapshot == 0 ||
|
|
622
|
+
DefinitelyNotInSnapshot(next_ikey.sequence, prev_snapshot)) {
|
|
623
|
+
// Check whether the next key belongs to the same snapshot as the
|
|
624
|
+
// SingleDelete.
|
|
625
|
+
|
|
626
|
+
TEST_SYNC_POINT_CALLBACK(
|
|
627
|
+
"CompactionIterator::NextFromInput:SingleDelete:2", nullptr);
|
|
628
|
+
if (next_ikey.type == kTypeSingleDeletion ||
|
|
629
|
+
next_ikey.type == kTypeDeletion) {
|
|
630
|
+
// We encountered two SingleDeletes for same key in a row. This
|
|
631
|
+
// could be due to unexpected user input. If write-(un)prepared
|
|
632
|
+
// transaction is used, this could also be due to releasing an old
|
|
633
|
+
// snapshot between a Put and its matching SingleDelete.
|
|
634
|
+
// Furthermore, if write-(un)prepared transaction is rolled back
|
|
635
|
+
// after prepare, we will write a Delete to cancel a prior Put. If
|
|
636
|
+
// old snapshot is released between a later Put and its matching
|
|
637
|
+
// SingleDelete, we will end up with a Delete followed by
|
|
638
|
+
// SingleDelete.
|
|
639
|
+
// Skip the first SingleDelete and let the next iteration decide
|
|
640
|
+
// how to handle the second SingleDelete or Delete.
|
|
495
641
|
|
|
496
642
|
// First SingleDelete has been skipped since we already called
|
|
497
|
-
// input_
|
|
643
|
+
// input_.Next().
|
|
498
644
|
++iter_stats_.num_record_drop_obsolete;
|
|
499
645
|
++iter_stats_.num_single_del_mismatch;
|
|
646
|
+
} else if (!is_timestamp_eligible_for_gc) {
|
|
647
|
+
// We cannot drop the SingleDelete as timestamp is enabled, and
|
|
648
|
+
// timestamp of this key is greater than or equal to
|
|
649
|
+
// *full_history_ts_low_. We will output the SingleDelete.
|
|
650
|
+
valid_ = true;
|
|
500
651
|
} else if (has_outputted_key_ ||
|
|
501
|
-
|
|
502
|
-
|
|
652
|
+
DefinitelyInSnapshot(ikey_.sequence,
|
|
653
|
+
earliest_write_conflict_snapshot_) ||
|
|
654
|
+
(earliest_snapshot_ < earliest_write_conflict_snapshot_ &&
|
|
655
|
+
DefinitelyInSnapshot(ikey_.sequence,
|
|
656
|
+
earliest_snapshot_))) {
|
|
503
657
|
// Found a matching value, we can drop the single delete and the
|
|
504
658
|
// value. It is safe to drop both records since we've already
|
|
505
659
|
// outputted a key in this snapshot, or there is no earlier
|
|
@@ -516,9 +670,9 @@ void CompactionIterator::NextFromInput() {
|
|
|
516
670
|
|
|
517
671
|
++iter_stats_.num_record_drop_hidden;
|
|
518
672
|
++iter_stats_.num_record_drop_obsolete;
|
|
519
|
-
// Already called input_
|
|
673
|
+
// Already called input_.Next() once. Call it a second time to
|
|
520
674
|
// skip past the second key.
|
|
521
|
-
|
|
675
|
+
AdvanceInputIter();
|
|
522
676
|
} else {
|
|
523
677
|
// Found a matching value, but we cannot drop both keys since
|
|
524
678
|
// there is an earlier snapshot and we need to leave behind a record
|
|
@@ -532,11 +686,17 @@ void CompactionIterator::NextFromInput() {
|
|
|
532
686
|
// Set up the Put to be outputted in the next iteration.
|
|
533
687
|
// (Optimization 3).
|
|
534
688
|
clear_and_output_next_key_ = true;
|
|
689
|
+
TEST_SYNC_POINT_CALLBACK(
|
|
690
|
+
"CompactionIterator::NextFromInput:KeepSDForWW",
|
|
691
|
+
/*arg=*/nullptr);
|
|
535
692
|
}
|
|
536
693
|
} else {
|
|
537
694
|
// We hit the next snapshot without hitting a put, so the iterator
|
|
538
695
|
// returns the single delete.
|
|
539
696
|
valid_ = true;
|
|
697
|
+
TEST_SYNC_POINT_CALLBACK(
|
|
698
|
+
"CompactionIterator::NextFromInput:SingleDelete:3",
|
|
699
|
+
const_cast<Compaction*>(c));
|
|
540
700
|
}
|
|
541
701
|
} else {
|
|
542
702
|
// We are at the end of the input, could not parse the next key, or hit
|
|
@@ -547,9 +707,11 @@ void CompactionIterator::NextFromInput() {
|
|
|
547
707
|
// iteration. If the next key is corrupt, we return before the
|
|
548
708
|
// comparison, so the value of has_current_user_key does not matter.
|
|
549
709
|
has_current_user_key_ = false;
|
|
550
|
-
if (compaction_ != nullptr &&
|
|
710
|
+
if (compaction_ != nullptr &&
|
|
711
|
+
DefinitelyInSnapshot(ikey_.sequence, earliest_snapshot_) &&
|
|
551
712
|
compaction_->KeyNotExistsBeyondOutputLevel(ikey_.user_key,
|
|
552
|
-
&level_ptrs_)
|
|
713
|
+
&level_ptrs_) &&
|
|
714
|
+
is_timestamp_eligible_for_gc) {
|
|
553
715
|
// Key doesn't exist outside of this range.
|
|
554
716
|
// Can compact out this SingleDelete.
|
|
555
717
|
++iter_stats_.num_record_drop_obsolete;
|
|
@@ -557,6 +719,11 @@ void CompactionIterator::NextFromInput() {
|
|
|
557
719
|
if (!bottommost_level_) {
|
|
558
720
|
++iter_stats_.num_optimized_del_drop_obsolete;
|
|
559
721
|
}
|
|
722
|
+
} else if (last_key_seq_zeroed_) {
|
|
723
|
+
// Skip.
|
|
724
|
+
++iter_stats_.num_record_drop_hidden;
|
|
725
|
+
++iter_stats_.num_record_drop_obsolete;
|
|
726
|
+
assert(bottommost_level_);
|
|
560
727
|
} else {
|
|
561
728
|
// Output SingleDelete
|
|
562
729
|
valid_ = true;
|
|
@@ -586,13 +753,12 @@ void CompactionIterator::NextFromInput() {
|
|
|
586
753
|
}
|
|
587
754
|
|
|
588
755
|
++iter_stats_.num_record_drop_hidden; // rule (A)
|
|
589
|
-
|
|
756
|
+
AdvanceInputIter();
|
|
590
757
|
} else if (compaction_ != nullptr &&
|
|
591
758
|
(ikey_.type == kTypeDeletion ||
|
|
592
759
|
(ikey_.type == kTypeDeletionWithTimestamp &&
|
|
593
760
|
cmp_with_history_ts_low_ < 0)) &&
|
|
594
|
-
|
|
595
|
-
ikeyNotNeededForIncrementalSnapshot() &&
|
|
761
|
+
DefinitelyInSnapshot(ikey_.sequence, earliest_snapshot_) &&
|
|
596
762
|
compaction_->KeyNotExistsBeyondOutputLevel(ikey_.user_key,
|
|
597
763
|
&level_ptrs_)) {
|
|
598
764
|
// TODO(noetzli): This is the only place where we use compaction_
|
|
@@ -622,18 +788,25 @@ void CompactionIterator::NextFromInput() {
|
|
|
622
788
|
if (!bottommost_level_) {
|
|
623
789
|
++iter_stats_.num_optimized_del_drop_obsolete;
|
|
624
790
|
}
|
|
625
|
-
|
|
791
|
+
AdvanceInputIter();
|
|
626
792
|
} else if ((ikey_.type == kTypeDeletion ||
|
|
627
793
|
(ikey_.type == kTypeDeletionWithTimestamp &&
|
|
628
794
|
cmp_with_history_ts_low_ < 0)) &&
|
|
629
|
-
bottommost_level_
|
|
795
|
+
bottommost_level_) {
|
|
630
796
|
// Handle the case where we have a delete key at the bottom most level
|
|
631
797
|
// We can skip outputting the key iff there are no subsequent puts for this
|
|
632
798
|
// key
|
|
633
799
|
assert(!compaction_ || compaction_->KeyNotExistsBeyondOutputLevel(
|
|
634
800
|
ikey_.user_key, &level_ptrs_));
|
|
635
801
|
ParsedInternalKey next_ikey;
|
|
636
|
-
|
|
802
|
+
AdvanceInputIter();
|
|
803
|
+
#ifndef NDEBUG
|
|
804
|
+
const Compaction* c =
|
|
805
|
+
compaction_ ? compaction_->real_compaction() : nullptr;
|
|
806
|
+
#endif
|
|
807
|
+
TEST_SYNC_POINT_CALLBACK(
|
|
808
|
+
"CompactionIterator::NextFromInput:BottommostDelete:1",
|
|
809
|
+
const_cast<Compaction*>(c));
|
|
637
810
|
// Skip over all versions of this key that happen to occur in the same
|
|
638
811
|
// snapshot range as the delete.
|
|
639
812
|
//
|
|
@@ -641,22 +814,20 @@ void CompactionIterator::NextFromInput() {
|
|
|
641
814
|
// considered to have a different user key unless the timestamp is older
|
|
642
815
|
// than *full_history_ts_low_.
|
|
643
816
|
while (!IsPausingManualCompaction() && !IsShuttingDown() &&
|
|
644
|
-
input_
|
|
645
|
-
(ParseInternalKey(input_
|
|
817
|
+
input_.Valid() &&
|
|
818
|
+
(ParseInternalKey(input_.key(), &next_ikey, allow_data_in_errors_)
|
|
646
819
|
.ok()) &&
|
|
647
|
-
|
|
648
|
-
next_ikey.user_key) &&
|
|
820
|
+
cmp_->EqualWithoutTimestamp(ikey_.user_key, next_ikey.user_key) &&
|
|
649
821
|
(prev_snapshot == 0 ||
|
|
650
|
-
|
|
651
|
-
|
|
822
|
+
DefinitelyNotInSnapshot(next_ikey.sequence, prev_snapshot))) {
|
|
823
|
+
AdvanceInputIter();
|
|
652
824
|
}
|
|
653
825
|
// If you find you still need to output a row with this key, we need to output the
|
|
654
826
|
// delete too
|
|
655
|
-
if (input_
|
|
656
|
-
(ParseInternalKey(input_
|
|
827
|
+
if (input_.Valid() &&
|
|
828
|
+
(ParseInternalKey(input_.key(), &next_ikey, allow_data_in_errors_)
|
|
657
829
|
.ok()) &&
|
|
658
|
-
|
|
659
|
-
next_ikey.user_key)) {
|
|
830
|
+
cmp_->EqualWithoutTimestamp(ikey_.user_key, next_ikey.user_key)) {
|
|
660
831
|
valid_ = true;
|
|
661
832
|
at_next_ = true;
|
|
662
833
|
}
|
|
@@ -668,13 +839,15 @@ void CompactionIterator::NextFromInput() {
|
|
|
668
839
|
}
|
|
669
840
|
|
|
670
841
|
pinned_iters_mgr_.StartPinning();
|
|
842
|
+
|
|
671
843
|
// We know the merge type entry is not hidden, otherwise we would
|
|
672
844
|
// have hit (A)
|
|
673
845
|
// We encapsulate the merge related state machine in a different
|
|
674
846
|
// object to minimize change to the existing flow.
|
|
675
|
-
Status s =
|
|
676
|
-
|
|
677
|
-
|
|
847
|
+
Status s = merge_helper_->MergeUntil(
|
|
848
|
+
&input_, range_del_agg_, prev_snapshot, bottommost_level_,
|
|
849
|
+
allow_data_in_errors_, blob_fetcher_.get(), prefetch_buffers_.get(),
|
|
850
|
+
&iter_stats_);
|
|
678
851
|
merge_out_iter_.SeekToFirst();
|
|
679
852
|
|
|
680
853
|
if (!s.ok() && !s.IsMergeInProgress()) {
|
|
@@ -717,14 +890,14 @@ void CompactionIterator::NextFromInput() {
|
|
|
717
890
|
if (should_delete) {
|
|
718
891
|
++iter_stats_.num_record_drop_hidden;
|
|
719
892
|
++iter_stats_.num_record_drop_range_del;
|
|
720
|
-
|
|
893
|
+
AdvanceInputIter();
|
|
721
894
|
} else {
|
|
722
895
|
valid_ = true;
|
|
723
896
|
}
|
|
724
897
|
}
|
|
725
898
|
|
|
726
899
|
if (need_skip) {
|
|
727
|
-
|
|
900
|
+
SkipUntil(skip_until);
|
|
728
901
|
}
|
|
729
902
|
}
|
|
730
903
|
|
|
@@ -781,6 +954,10 @@ void CompactionIterator::GarbageCollectBlobIfNeeded() {
|
|
|
781
954
|
|
|
782
955
|
// GC for integrated BlobDB
|
|
783
956
|
if (compaction_->enable_blob_garbage_collection()) {
|
|
957
|
+
TEST_SYNC_POINT_CALLBACK(
|
|
958
|
+
"CompactionIterator::GarbageCollectBlobIfNeeded::TamperWithBlobIndex",
|
|
959
|
+
&value_);
|
|
960
|
+
|
|
784
961
|
BlobIndex blob_index;
|
|
785
962
|
|
|
786
963
|
{
|
|
@@ -794,24 +971,23 @@ void CompactionIterator::GarbageCollectBlobIfNeeded() {
|
|
|
794
971
|
}
|
|
795
972
|
}
|
|
796
973
|
|
|
797
|
-
if (blob_index.IsInlined() || blob_index.HasTTL()) {
|
|
798
|
-
status_ = Status::Corruption("Unexpected TTL/inlined blob index");
|
|
799
|
-
valid_ = false;
|
|
800
|
-
|
|
801
|
-
return;
|
|
802
|
-
}
|
|
803
|
-
|
|
804
974
|
if (blob_index.file_number() >=
|
|
805
975
|
blob_garbage_collection_cutoff_file_number_) {
|
|
806
976
|
return;
|
|
807
977
|
}
|
|
808
978
|
|
|
809
|
-
|
|
810
|
-
|
|
979
|
+
FilePrefetchBuffer* prefetch_buffer =
|
|
980
|
+
prefetch_buffers_ ? prefetch_buffers_->GetOrCreatePrefetchBuffer(
|
|
981
|
+
blob_index.file_number())
|
|
982
|
+
: nullptr;
|
|
983
|
+
|
|
984
|
+
uint64_t bytes_read = 0;
|
|
811
985
|
|
|
812
986
|
{
|
|
813
|
-
|
|
814
|
-
|
|
987
|
+
assert(blob_fetcher_);
|
|
988
|
+
|
|
989
|
+
const Status s = blob_fetcher_->FetchBlob(
|
|
990
|
+
user_key(), blob_index, prefetch_buffer, &blob_value_, &bytes_read);
|
|
815
991
|
|
|
816
992
|
if (!s.ok()) {
|
|
817
993
|
status_ = s;
|
|
@@ -821,6 +997,12 @@ void CompactionIterator::GarbageCollectBlobIfNeeded() {
|
|
|
821
997
|
}
|
|
822
998
|
}
|
|
823
999
|
|
|
1000
|
+
++iter_stats_.num_blobs_read;
|
|
1001
|
+
iter_stats_.total_blob_bytes_read += bytes_read;
|
|
1002
|
+
|
|
1003
|
+
++iter_stats_.num_blobs_relocated;
|
|
1004
|
+
iter_stats_.total_blob_bytes_relocated += blob_index.size();
|
|
1005
|
+
|
|
824
1006
|
value_ = blob_value_;
|
|
825
1007
|
|
|
826
1008
|
if (ExtractLargeValueIfNeededImpl()) {
|
|
@@ -834,7 +1016,8 @@ void CompactionIterator::GarbageCollectBlobIfNeeded() {
|
|
|
834
1016
|
}
|
|
835
1017
|
|
|
836
1018
|
// GC for stacked BlobDB
|
|
837
|
-
if (compaction_filter_
|
|
1019
|
+
if (compaction_filter_ &&
|
|
1020
|
+
compaction_filter_->IsStackedBlobDbInternalCompactionFilter()) {
|
|
838
1021
|
const auto blob_decision = compaction_filter_->PrepareBlobOutput(
|
|
839
1022
|
user_key(), value_, &compaction_filter_value_);
|
|
840
1023
|
|
|
@@ -881,16 +1064,23 @@ void CompactionIterator::PrepareOutput() {
|
|
|
881
1064
|
// Can we do the same for levels above bottom level as long as
|
|
882
1065
|
// KeyNotExistsBeyondOutputLevel() return true?
|
|
883
1066
|
if (valid_ && compaction_ != nullptr &&
|
|
884
|
-
!compaction_->allow_ingest_behind() &&
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
assert(ikey_.type != kTypeDeletion
|
|
888
|
-
|
|
1067
|
+
!compaction_->allow_ingest_behind() && bottommost_level_ &&
|
|
1068
|
+
DefinitelyInSnapshot(ikey_.sequence, earliest_snapshot_) &&
|
|
1069
|
+
ikey_.type != kTypeMerge && current_key_committed_) {
|
|
1070
|
+
assert(ikey_.type != kTypeDeletion);
|
|
1071
|
+
assert(ikey_.type != kTypeSingleDeletion ||
|
|
1072
|
+
(timestamp_size_ || full_history_ts_low_));
|
|
1073
|
+
if (ikey_.type == kTypeDeletion ||
|
|
1074
|
+
(ikey_.type == kTypeSingleDeletion &&
|
|
1075
|
+
(!timestamp_size_ || !full_history_ts_low_))) {
|
|
889
1076
|
ROCKS_LOG_FATAL(info_log_,
|
|
890
1077
|
"Unexpected key type %d for seq-zero optimization",
|
|
891
1078
|
ikey_.type);
|
|
892
1079
|
}
|
|
893
1080
|
ikey_.sequence = 0;
|
|
1081
|
+
last_key_seq_zeroed_ = true;
|
|
1082
|
+
TEST_SYNC_POINT_CALLBACK("CompactionIterator::PrepareOutput:ZeroingSeq",
|
|
1083
|
+
&ikey_);
|
|
894
1084
|
if (!timestamp_size_) {
|
|
895
1085
|
current_key_.UpdateInternalKey(0, ikey_.type);
|
|
896
1086
|
} else if (full_history_ts_low_ && cmp_with_history_ts_low_ < 0) {
|
|
@@ -952,48 +1142,6 @@ inline SequenceNumber CompactionIterator::findEarliestVisibleSnapshot(
|
|
|
952
1142
|
return kMaxSequenceNumber;
|
|
953
1143
|
}
|
|
954
1144
|
|
|
955
|
-
// used in 2 places - prevents deletion markers to be dropped if they may be
|
|
956
|
-
// needed and disables seqnum zero-out in PrepareOutput for recent keys.
|
|
957
|
-
inline bool CompactionIterator::ikeyNotNeededForIncrementalSnapshot() {
|
|
958
|
-
return (!compaction_->preserve_deletes()) ||
|
|
959
|
-
(ikey_.sequence < preserve_deletes_seqnum_);
|
|
960
|
-
}
|
|
961
|
-
|
|
962
|
-
bool CompactionIterator::IsInEarliestSnapshot(SequenceNumber sequence) {
|
|
963
|
-
assert(snapshot_checker_ != nullptr);
|
|
964
|
-
bool pre_condition = (earliest_snapshot_ == kMaxSequenceNumber ||
|
|
965
|
-
(earliest_snapshot_iter_ != snapshots_->end() &&
|
|
966
|
-
*earliest_snapshot_iter_ == earliest_snapshot_));
|
|
967
|
-
assert(pre_condition);
|
|
968
|
-
if (!pre_condition) {
|
|
969
|
-
ROCKS_LOG_FATAL(info_log_,
|
|
970
|
-
"Pre-Condition is not hold in IsInEarliestSnapshot");
|
|
971
|
-
}
|
|
972
|
-
auto in_snapshot =
|
|
973
|
-
snapshot_checker_->CheckInSnapshot(sequence, earliest_snapshot_);
|
|
974
|
-
while (UNLIKELY(in_snapshot == SnapshotCheckerResult::kSnapshotReleased)) {
|
|
975
|
-
// Avoid the the current earliest_snapshot_ being return as
|
|
976
|
-
// earliest visible snapshot for the next value. So if a value's sequence
|
|
977
|
-
// is zero-ed out by PrepareOutput(), the next value will be compact out.
|
|
978
|
-
released_snapshots_.insert(earliest_snapshot_);
|
|
979
|
-
earliest_snapshot_iter_++;
|
|
980
|
-
|
|
981
|
-
if (earliest_snapshot_iter_ == snapshots_->end()) {
|
|
982
|
-
earliest_snapshot_ = kMaxSequenceNumber;
|
|
983
|
-
} else {
|
|
984
|
-
earliest_snapshot_ = *earliest_snapshot_iter_;
|
|
985
|
-
}
|
|
986
|
-
in_snapshot =
|
|
987
|
-
snapshot_checker_->CheckInSnapshot(sequence, earliest_snapshot_);
|
|
988
|
-
}
|
|
989
|
-
assert(in_snapshot != SnapshotCheckerResult::kSnapshotReleased);
|
|
990
|
-
if (in_snapshot == SnapshotCheckerResult::kSnapshotReleased) {
|
|
991
|
-
ROCKS_LOG_FATAL(info_log_,
|
|
992
|
-
"Unexpected released snapshot in IsInEarliestSnapshot");
|
|
993
|
-
}
|
|
994
|
-
return in_snapshot == SnapshotCheckerResult::kInSnapshot;
|
|
995
|
-
}
|
|
996
|
-
|
|
997
1145
|
uint64_t CompactionIterator::ComputeBlobGarbageCollectionCutoffFileNumber(
|
|
998
1146
|
const CompactionProxy* compaction) {
|
|
999
1147
|
if (!compaction) {
|
|
@@ -1004,7 +1152,7 @@ uint64_t CompactionIterator::ComputeBlobGarbageCollectionCutoffFileNumber(
|
|
|
1004
1152
|
return 0;
|
|
1005
1153
|
}
|
|
1006
1154
|
|
|
1007
|
-
Version* const version = compaction->input_version();
|
|
1155
|
+
const Version* const version = compaction->input_version();
|
|
1008
1156
|
assert(version);
|
|
1009
1157
|
|
|
1010
1158
|
const VersionStorageInfo* const storage_info = version->storage_info();
|
|
@@ -1012,12 +1160,55 @@ uint64_t CompactionIterator::ComputeBlobGarbageCollectionCutoffFileNumber(
|
|
|
1012
1160
|
|
|
1013
1161
|
const auto& blob_files = storage_info->GetBlobFiles();
|
|
1014
1162
|
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1163
|
+
const size_t cutoff_index = static_cast<size_t>(
|
|
1164
|
+
compaction->blob_garbage_collection_age_cutoff() * blob_files.size());
|
|
1165
|
+
|
|
1166
|
+
if (cutoff_index >= blob_files.size()) {
|
|
1167
|
+
return std::numeric_limits<uint64_t>::max();
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
const auto& meta = blob_files[cutoff_index];
|
|
1171
|
+
assert(meta);
|
|
1172
|
+
|
|
1173
|
+
return meta->GetBlobFileNumber();
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
std::unique_ptr<BlobFetcher> CompactionIterator::CreateBlobFetcherIfNeeded(
|
|
1177
|
+
const CompactionProxy* compaction) {
|
|
1178
|
+
if (!compaction) {
|
|
1179
|
+
return nullptr;
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
const Version* const version = compaction->input_version();
|
|
1183
|
+
if (!version) {
|
|
1184
|
+
return nullptr;
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
return std::unique_ptr<BlobFetcher>(new BlobFetcher(version, ReadOptions()));
|
|
1188
|
+
}
|
|
1189
|
+
|
|
1190
|
+
std::unique_ptr<PrefetchBufferCollection>
|
|
1191
|
+
CompactionIterator::CreatePrefetchBufferCollectionIfNeeded(
|
|
1192
|
+
const CompactionProxy* compaction) {
|
|
1193
|
+
if (!compaction) {
|
|
1194
|
+
return nullptr;
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
if (!compaction->input_version()) {
|
|
1198
|
+
return nullptr;
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
if (compaction->allow_mmap_reads()) {
|
|
1202
|
+
return nullptr;
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
const uint64_t readahead_size = compaction->blob_compaction_readahead_size();
|
|
1206
|
+
if (!readahead_size) {
|
|
1207
|
+
return nullptr;
|
|
1208
|
+
}
|
|
1018
1209
|
|
|
1019
|
-
return
|
|
1020
|
-
|
|
1210
|
+
return std::unique_ptr<PrefetchBufferCollection>(
|
|
1211
|
+
new PrefetchBufferCollection(readahead_size));
|
|
1021
1212
|
}
|
|
1022
1213
|
|
|
1023
1214
|
} // namespace ROCKSDB_NAMESPACE
|