@nxtedition/rocksdb 5.2.21 → 5.2.26
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 +216 -252
- package/binding.gyp +78 -72
- 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/README.md +4 -4
- 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/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/README.md +60 -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/plugin/README.md +43 -0
- 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/package.json +8 -8
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x86/node.napi.node +0 -0
- package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
- 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/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/prebuilds/linux-x64/node.napi.glibc.node +0 -0
|
@@ -34,68 +34,62 @@
|
|
|
34
34
|
|
|
35
35
|
namespace ROCKSDB_NAMESPACE {
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
// Break ties by file number
|
|
45
|
-
return a->fd.GetNumber() > b->fd.GetNumber();
|
|
46
|
-
}
|
|
37
|
+
class VersionBuilder::Rep {
|
|
38
|
+
class NewestFirstBySeqNo {
|
|
39
|
+
public:
|
|
40
|
+
bool operator()(const FileMetaData* lhs, const FileMetaData* rhs) const {
|
|
41
|
+
assert(lhs);
|
|
42
|
+
assert(rhs);
|
|
47
43
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
int r = cmp->Compare(a->smallest, b->smallest);
|
|
52
|
-
if (r != 0) {
|
|
53
|
-
return (r < 0);
|
|
54
|
-
}
|
|
55
|
-
// Break ties by file number
|
|
56
|
-
return (a->fd.GetNumber() < b->fd.GetNumber());
|
|
57
|
-
}
|
|
58
|
-
} // namespace
|
|
44
|
+
if (lhs->fd.largest_seqno != rhs->fd.largest_seqno) {
|
|
45
|
+
return lhs->fd.largest_seqno > rhs->fd.largest_seqno;
|
|
46
|
+
}
|
|
59
47
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
// Helper to sort files_ in v
|
|
63
|
-
// kLevel0 -- NewestFirstBySeqNo
|
|
64
|
-
// kLevelNon0 -- BySmallestKey
|
|
65
|
-
struct FileComparator {
|
|
66
|
-
enum SortMethod { kLevel0 = 0, kLevelNon0 = 1, } sort_method;
|
|
67
|
-
const InternalKeyComparator* internal_comparator;
|
|
68
|
-
|
|
69
|
-
FileComparator() : internal_comparator(nullptr) {}
|
|
70
|
-
|
|
71
|
-
bool operator()(FileMetaData* f1, FileMetaData* f2) const {
|
|
72
|
-
switch (sort_method) {
|
|
73
|
-
case kLevel0:
|
|
74
|
-
return NewestFirstBySeqNo(f1, f2);
|
|
75
|
-
case kLevelNon0:
|
|
76
|
-
return BySmallestKey(f1, f2, internal_comparator);
|
|
48
|
+
if (lhs->fd.smallest_seqno != rhs->fd.smallest_seqno) {
|
|
49
|
+
return lhs->fd.smallest_seqno > rhs->fd.smallest_seqno;
|
|
77
50
|
}
|
|
78
|
-
|
|
79
|
-
|
|
51
|
+
|
|
52
|
+
// Break ties by file number
|
|
53
|
+
return lhs->fd.GetNumber() > rhs->fd.GetNumber();
|
|
80
54
|
}
|
|
81
55
|
};
|
|
82
56
|
|
|
57
|
+
class BySmallestKey {
|
|
58
|
+
public:
|
|
59
|
+
explicit BySmallestKey(const InternalKeyComparator* cmp) : cmp_(cmp) {}
|
|
60
|
+
|
|
61
|
+
bool operator()(const FileMetaData* lhs, const FileMetaData* rhs) const {
|
|
62
|
+
assert(lhs);
|
|
63
|
+
assert(rhs);
|
|
64
|
+
assert(cmp_);
|
|
65
|
+
|
|
66
|
+
const int r = cmp_->Compare(lhs->smallest, rhs->smallest);
|
|
67
|
+
if (r != 0) {
|
|
68
|
+
return (r < 0);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Break ties by file number
|
|
72
|
+
return (lhs->fd.GetNumber() < rhs->fd.GetNumber());
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
private:
|
|
76
|
+
const InternalKeyComparator* cmp_;
|
|
77
|
+
};
|
|
78
|
+
|
|
83
79
|
struct LevelState {
|
|
84
80
|
std::unordered_set<uint64_t> deleted_files;
|
|
85
81
|
// Map from file number to file meta data.
|
|
86
82
|
std::unordered_map<uint64_t, FileMetaData*> added_files;
|
|
87
83
|
};
|
|
88
84
|
|
|
85
|
+
// A class that represents the accumulated changes (like additional garbage or
|
|
86
|
+
// newly linked/unlinked SST files) for a given blob file after applying a
|
|
87
|
+
// series of VersionEdits.
|
|
89
88
|
class BlobFileMetaDataDelta {
|
|
90
89
|
public:
|
|
91
90
|
bool IsEmpty() const {
|
|
92
|
-
return !
|
|
93
|
-
|
|
94
|
-
newly_unlinked_ssts_.empty();
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
std::shared_ptr<SharedBlobFileMetaData> GetSharedMeta() const {
|
|
98
|
-
return shared_meta_;
|
|
91
|
+
return !additional_garbage_count_ && !additional_garbage_bytes_ &&
|
|
92
|
+
newly_linked_ssts_.empty() && newly_unlinked_ssts_.empty();
|
|
99
93
|
}
|
|
100
94
|
|
|
101
95
|
uint64_t GetAdditionalGarbageCount() const {
|
|
@@ -114,13 +108,6 @@ class VersionBuilder::Rep {
|
|
|
114
108
|
return newly_unlinked_ssts_;
|
|
115
109
|
}
|
|
116
110
|
|
|
117
|
-
void SetSharedMeta(std::shared_ptr<SharedBlobFileMetaData> shared_meta) {
|
|
118
|
-
assert(!shared_meta_);
|
|
119
|
-
assert(shared_meta);
|
|
120
|
-
|
|
121
|
-
shared_meta_ = std::move(shared_meta);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
111
|
void AddGarbage(uint64_t count, uint64_t bytes) {
|
|
125
112
|
additional_garbage_count_ += count;
|
|
126
113
|
additional_garbage_bytes_ += bytes;
|
|
@@ -159,13 +146,91 @@ class VersionBuilder::Rep {
|
|
|
159
146
|
}
|
|
160
147
|
|
|
161
148
|
private:
|
|
162
|
-
std::shared_ptr<SharedBlobFileMetaData> shared_meta_;
|
|
163
149
|
uint64_t additional_garbage_count_ = 0;
|
|
164
150
|
uint64_t additional_garbage_bytes_ = 0;
|
|
165
151
|
std::unordered_set<uint64_t> newly_linked_ssts_;
|
|
166
152
|
std::unordered_set<uint64_t> newly_unlinked_ssts_;
|
|
167
153
|
};
|
|
168
154
|
|
|
155
|
+
// A class that represents the state of a blob file after applying a series of
|
|
156
|
+
// VersionEdits. In addition to the resulting state, it also contains the
|
|
157
|
+
// delta (see BlobFileMetaDataDelta above). The resulting state can be used to
|
|
158
|
+
// identify obsolete blob files, while the delta makes it possible to
|
|
159
|
+
// efficiently detect trivial moves.
|
|
160
|
+
class MutableBlobFileMetaData {
|
|
161
|
+
public:
|
|
162
|
+
// To be used for brand new blob files
|
|
163
|
+
explicit MutableBlobFileMetaData(
|
|
164
|
+
std::shared_ptr<SharedBlobFileMetaData>&& shared_meta)
|
|
165
|
+
: shared_meta_(std::move(shared_meta)) {}
|
|
166
|
+
|
|
167
|
+
// To be used for pre-existing blob files
|
|
168
|
+
explicit MutableBlobFileMetaData(
|
|
169
|
+
const std::shared_ptr<BlobFileMetaData>& meta)
|
|
170
|
+
: shared_meta_(meta->GetSharedMeta()),
|
|
171
|
+
linked_ssts_(meta->GetLinkedSsts()),
|
|
172
|
+
garbage_blob_count_(meta->GetGarbageBlobCount()),
|
|
173
|
+
garbage_blob_bytes_(meta->GetGarbageBlobBytes()) {}
|
|
174
|
+
|
|
175
|
+
const std::shared_ptr<SharedBlobFileMetaData>& GetSharedMeta() const {
|
|
176
|
+
return shared_meta_;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
uint64_t GetBlobFileNumber() const {
|
|
180
|
+
assert(shared_meta_);
|
|
181
|
+
return shared_meta_->GetBlobFileNumber();
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
bool HasDelta() const { return !delta_.IsEmpty(); }
|
|
185
|
+
|
|
186
|
+
const std::unordered_set<uint64_t>& GetLinkedSsts() const {
|
|
187
|
+
return linked_ssts_;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
uint64_t GetGarbageBlobCount() const { return garbage_blob_count_; }
|
|
191
|
+
|
|
192
|
+
uint64_t GetGarbageBlobBytes() const { return garbage_blob_bytes_; }
|
|
193
|
+
|
|
194
|
+
bool AddGarbage(uint64_t count, uint64_t bytes) {
|
|
195
|
+
assert(shared_meta_);
|
|
196
|
+
|
|
197
|
+
if (garbage_blob_count_ + count > shared_meta_->GetTotalBlobCount() ||
|
|
198
|
+
garbage_blob_bytes_ + bytes > shared_meta_->GetTotalBlobBytes()) {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
delta_.AddGarbage(count, bytes);
|
|
203
|
+
|
|
204
|
+
garbage_blob_count_ += count;
|
|
205
|
+
garbage_blob_bytes_ += bytes;
|
|
206
|
+
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
void LinkSst(uint64_t sst_file_number) {
|
|
211
|
+
delta_.LinkSst(sst_file_number);
|
|
212
|
+
|
|
213
|
+
assert(linked_ssts_.find(sst_file_number) == linked_ssts_.end());
|
|
214
|
+
linked_ssts_.emplace(sst_file_number);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
void UnlinkSst(uint64_t sst_file_number) {
|
|
218
|
+
delta_.UnlinkSst(sst_file_number);
|
|
219
|
+
|
|
220
|
+
assert(linked_ssts_.find(sst_file_number) != linked_ssts_.end());
|
|
221
|
+
linked_ssts_.erase(sst_file_number);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
private:
|
|
225
|
+
std::shared_ptr<SharedBlobFileMetaData> shared_meta_;
|
|
226
|
+
// Accumulated changes
|
|
227
|
+
BlobFileMetaDataDelta delta_;
|
|
228
|
+
// Resulting state after applying the changes
|
|
229
|
+
BlobFileMetaData::LinkedSsts linked_ssts_;
|
|
230
|
+
uint64_t garbage_blob_count_ = 0;
|
|
231
|
+
uint64_t garbage_blob_bytes_ = 0;
|
|
232
|
+
};
|
|
233
|
+
|
|
169
234
|
const FileOptions& file_options_;
|
|
170
235
|
const ImmutableCFOptions* const ioptions_;
|
|
171
236
|
TableCache* table_cache_;
|
|
@@ -183,11 +248,12 @@ class VersionBuilder::Rep {
|
|
|
183
248
|
bool has_invalid_levels_;
|
|
184
249
|
// Current levels of table files affected by additions/deletions.
|
|
185
250
|
std::unordered_map<uint64_t, int> table_file_levels_;
|
|
186
|
-
|
|
187
|
-
|
|
251
|
+
NewestFirstBySeqNo level_zero_cmp_;
|
|
252
|
+
BySmallestKey level_nonzero_cmp_;
|
|
188
253
|
|
|
189
|
-
//
|
|
190
|
-
|
|
254
|
+
// Mutable metadata objects for all blob files affected by the series of
|
|
255
|
+
// version edits.
|
|
256
|
+
std::map<uint64_t, MutableBlobFileMetaData> mutable_blob_file_metas_;
|
|
191
257
|
|
|
192
258
|
public:
|
|
193
259
|
Rep(const FileOptions& file_options, const ImmutableCFOptions* ioptions,
|
|
@@ -199,14 +265,11 @@ class VersionBuilder::Rep {
|
|
|
199
265
|
base_vstorage_(base_vstorage),
|
|
200
266
|
version_set_(version_set),
|
|
201
267
|
num_levels_(base_vstorage->num_levels()),
|
|
202
|
-
has_invalid_levels_(false)
|
|
268
|
+
has_invalid_levels_(false),
|
|
269
|
+
level_nonzero_cmp_(base_vstorage_->InternalComparator()) {
|
|
203
270
|
assert(ioptions_);
|
|
204
271
|
|
|
205
272
|
levels_ = new LevelState[num_levels_];
|
|
206
|
-
level_zero_cmp_.sort_method = FileComparator::kLevel0;
|
|
207
|
-
level_nonzero_cmp_.sort_method = FileComparator::kLevelNon0;
|
|
208
|
-
level_nonzero_cmp_.internal_comparator =
|
|
209
|
-
base_vstorage_->InternalComparator();
|
|
210
273
|
}
|
|
211
274
|
|
|
212
275
|
~Rep() {
|
|
@@ -232,29 +295,10 @@ class VersionBuilder::Rep {
|
|
|
232
295
|
}
|
|
233
296
|
}
|
|
234
297
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
return true;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
assert(base_vstorage_);
|
|
244
|
-
|
|
245
|
-
const auto& base_blob_files = base_vstorage_->GetBlobFiles();
|
|
246
|
-
|
|
247
|
-
auto base_it = base_blob_files.find(blob_file_number);
|
|
248
|
-
if (base_it != base_blob_files.end()) {
|
|
249
|
-
assert(base_it->second);
|
|
250
|
-
assert(base_it->second->GetSharedMeta());
|
|
251
|
-
|
|
252
|
-
return true;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
return false;
|
|
256
|
-
}
|
|
257
|
-
|
|
298
|
+
// Mapping used for checking the consistency of links between SST files and
|
|
299
|
+
// blob files. It is built using the forward links (table file -> blob file),
|
|
300
|
+
// and is subsequently compared with the inverse mapping stored in the
|
|
301
|
+
// BlobFileMetaData objects.
|
|
258
302
|
using ExpectedLinkedSsts =
|
|
259
303
|
std::unordered_map<uint64_t, BlobFileMetaData::LinkedSsts>;
|
|
260
304
|
|
|
@@ -270,99 +314,161 @@ class VersionBuilder::Rep {
|
|
|
270
314
|
(*expected_linked_ssts)[blob_file_number].emplace(table_file_number);
|
|
271
315
|
}
|
|
272
316
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
317
|
+
template <typename Checker>
|
|
318
|
+
Status CheckConsistencyDetailsForLevel(
|
|
319
|
+
const VersionStorageInfo* vstorage, int level, Checker checker,
|
|
320
|
+
const std::string& sync_point,
|
|
321
|
+
ExpectedLinkedSsts* expected_linked_ssts) const {
|
|
322
|
+
#ifdef NDEBUG
|
|
323
|
+
(void)sync_point;
|
|
324
|
+
#endif
|
|
280
325
|
|
|
281
|
-
|
|
282
|
-
|
|
326
|
+
assert(vstorage);
|
|
327
|
+
assert(level >= 0 && level < num_levels_);
|
|
328
|
+
assert(expected_linked_ssts);
|
|
283
329
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
330
|
+
const auto& level_files = vstorage->LevelFiles(level);
|
|
331
|
+
|
|
332
|
+
if (level_files.empty()) {
|
|
333
|
+
return Status::OK();
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
assert(level_files[0]);
|
|
337
|
+
UpdateExpectedLinkedSsts(level_files[0]->fd.GetNumber(),
|
|
338
|
+
level_files[0]->oldest_blob_file_number,
|
|
339
|
+
expected_linked_ssts);
|
|
340
|
+
|
|
341
|
+
for (size_t i = 1; i < level_files.size(); ++i) {
|
|
342
|
+
assert(level_files[i]);
|
|
343
|
+
UpdateExpectedLinkedSsts(level_files[i]->fd.GetNumber(),
|
|
344
|
+
level_files[i]->oldest_blob_file_number,
|
|
345
|
+
expected_linked_ssts);
|
|
346
|
+
|
|
347
|
+
auto lhs = level_files[i - 1];
|
|
348
|
+
auto rhs = level_files[i];
|
|
287
349
|
|
|
288
|
-
assert(level_files[0]);
|
|
289
|
-
UpdateExpectedLinkedSsts(level_files[0]->fd.GetNumber(),
|
|
290
|
-
level_files[0]->oldest_blob_file_number,
|
|
291
|
-
&expected_linked_ssts);
|
|
292
|
-
for (size_t i = 1; i < level_files.size(); i++) {
|
|
293
|
-
assert(level_files[i]);
|
|
294
|
-
UpdateExpectedLinkedSsts(level_files[i]->fd.GetNumber(),
|
|
295
|
-
level_files[i]->oldest_blob_file_number,
|
|
296
|
-
&expected_linked_ssts);
|
|
297
|
-
|
|
298
|
-
auto f1 = level_files[i - 1];
|
|
299
|
-
auto f2 = level_files[i];
|
|
300
|
-
if (level == 0) {
|
|
301
350
|
#ifndef NDEBUG
|
|
302
|
-
|
|
303
|
-
|
|
351
|
+
auto pair = std::make_pair(&lhs, &rhs);
|
|
352
|
+
TEST_SYNC_POINT_CALLBACK(sync_point, &pair);
|
|
304
353
|
#endif
|
|
305
|
-
|
|
306
|
-
|
|
354
|
+
|
|
355
|
+
const Status s = checker(lhs, rhs);
|
|
356
|
+
if (!s.ok()) {
|
|
357
|
+
return s;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
return Status::OK();
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// Make sure table files are sorted correctly and that the links between
|
|
365
|
+
// table files and blob files are consistent.
|
|
366
|
+
Status CheckConsistencyDetails(const VersionStorageInfo* vstorage) const {
|
|
367
|
+
assert(vstorage);
|
|
368
|
+
|
|
369
|
+
ExpectedLinkedSsts expected_linked_ssts;
|
|
370
|
+
|
|
371
|
+
if (num_levels_ > 0) {
|
|
372
|
+
// Check L0
|
|
373
|
+
{
|
|
374
|
+
auto l0_checker = [this](const FileMetaData* lhs,
|
|
375
|
+
const FileMetaData* rhs) {
|
|
376
|
+
assert(lhs);
|
|
377
|
+
assert(rhs);
|
|
378
|
+
|
|
379
|
+
if (!level_zero_cmp_(lhs, rhs)) {
|
|
380
|
+
std::ostringstream oss;
|
|
381
|
+
oss << "L0 files are not sorted properly: files #"
|
|
382
|
+
<< lhs->fd.GetNumber() << ", #" << rhs->fd.GetNumber();
|
|
383
|
+
|
|
384
|
+
return Status::Corruption("VersionBuilder", oss.str());
|
|
307
385
|
}
|
|
308
386
|
|
|
309
|
-
if (
|
|
387
|
+
if (rhs->fd.smallest_seqno == rhs->fd.largest_seqno) {
|
|
310
388
|
// This is an external file that we ingested
|
|
311
|
-
SequenceNumber external_file_seqno =
|
|
312
|
-
|
|
389
|
+
const SequenceNumber external_file_seqno = rhs->fd.smallest_seqno;
|
|
390
|
+
|
|
391
|
+
if (!(external_file_seqno < lhs->fd.largest_seqno ||
|
|
313
392
|
external_file_seqno == 0)) {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
"
|
|
319
|
-
|
|
320
|
-
|
|
393
|
+
std::ostringstream oss;
|
|
394
|
+
oss << "L0 file #" << lhs->fd.GetNumber() << " with seqno "
|
|
395
|
+
<< lhs->fd.smallest_seqno << ' ' << lhs->fd.largest_seqno
|
|
396
|
+
<< " vs. file #" << rhs->fd.GetNumber()
|
|
397
|
+
<< " with global_seqno " << external_file_seqno;
|
|
398
|
+
|
|
399
|
+
return Status::Corruption("VersionBuilder", oss.str());
|
|
321
400
|
}
|
|
322
|
-
} else if (
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
401
|
+
} else if (lhs->fd.smallest_seqno <= rhs->fd.smallest_seqno) {
|
|
402
|
+
std::ostringstream oss;
|
|
403
|
+
oss << "L0 file #" << lhs->fd.GetNumber() << " with seqno "
|
|
404
|
+
<< lhs->fd.smallest_seqno << ' ' << lhs->fd.largest_seqno
|
|
405
|
+
<< " vs. file #" << rhs->fd.GetNumber() << " with seqno "
|
|
406
|
+
<< rhs->fd.smallest_seqno << ' ' << rhs->fd.largest_seqno;
|
|
407
|
+
|
|
408
|
+
return Status::Corruption("VersionBuilder", oss.str());
|
|
330
409
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
410
|
+
|
|
411
|
+
return Status::OK();
|
|
412
|
+
};
|
|
413
|
+
|
|
414
|
+
const Status s = CheckConsistencyDetailsForLevel(
|
|
415
|
+
vstorage, /* level */ 0, l0_checker,
|
|
416
|
+
"VersionBuilder::CheckConsistency0", &expected_linked_ssts);
|
|
417
|
+
if (!s.ok()) {
|
|
418
|
+
return s;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
// Check L1 and up
|
|
423
|
+
const InternalKeyComparator* const icmp = vstorage->InternalComparator();
|
|
424
|
+
assert(icmp);
|
|
425
|
+
|
|
426
|
+
for (int level = 1; level < num_levels_; ++level) {
|
|
427
|
+
auto checker = [this, level, icmp](const FileMetaData* lhs,
|
|
428
|
+
const FileMetaData* rhs) {
|
|
429
|
+
assert(lhs);
|
|
430
|
+
assert(rhs);
|
|
431
|
+
|
|
432
|
+
if (!level_nonzero_cmp_(lhs, rhs)) {
|
|
433
|
+
std::ostringstream oss;
|
|
434
|
+
oss << 'L' << level << " files are not sorted properly: files #"
|
|
435
|
+
<< lhs->fd.GetNumber() << ", #" << rhs->fd.GetNumber();
|
|
436
|
+
|
|
437
|
+
return Status::Corruption("VersionBuilder", oss.str());
|
|
342
438
|
}
|
|
343
439
|
|
|
344
|
-
// Make sure there is no overlap in
|
|
345
|
-
if (
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
"
|
|
350
|
-
|
|
351
|
-
"
|
|
352
|
-
|
|
353
|
-
|
|
440
|
+
// Make sure there is no overlap in level
|
|
441
|
+
if (icmp->Compare(lhs->largest, rhs->smallest) >= 0) {
|
|
442
|
+
std::ostringstream oss;
|
|
443
|
+
oss << 'L' << level << " has overlapping ranges: file #"
|
|
444
|
+
<< lhs->fd.GetNumber()
|
|
445
|
+
<< " largest key: " << lhs->largest.DebugString(true)
|
|
446
|
+
<< " vs. file #" << rhs->fd.GetNumber()
|
|
447
|
+
<< " smallest key: " << rhs->smallest.DebugString(true);
|
|
448
|
+
|
|
449
|
+
return Status::Corruption("VersionBuilder", oss.str());
|
|
354
450
|
}
|
|
451
|
+
|
|
452
|
+
return Status::OK();
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
const Status s = CheckConsistencyDetailsForLevel(
|
|
456
|
+
vstorage, level, checker, "VersionBuilder::CheckConsistency1",
|
|
457
|
+
&expected_linked_ssts);
|
|
458
|
+
if (!s.ok()) {
|
|
459
|
+
return s;
|
|
355
460
|
}
|
|
356
461
|
}
|
|
357
462
|
}
|
|
358
463
|
|
|
359
|
-
// Make sure that all blob files in the version have non-garbage data
|
|
464
|
+
// Make sure that all blob files in the version have non-garbage data and
|
|
465
|
+
// the links between them and the table files are consistent.
|
|
360
466
|
const auto& blob_files = vstorage->GetBlobFiles();
|
|
361
|
-
for (const auto&
|
|
362
|
-
const uint64_t blob_file_number = pair.first;
|
|
363
|
-
const auto& blob_file_meta = pair.second;
|
|
467
|
+
for (const auto& blob_file_meta : blob_files) {
|
|
364
468
|
assert(blob_file_meta);
|
|
365
469
|
|
|
470
|
+
const uint64_t blob_file_number = blob_file_meta->GetBlobFileNumber();
|
|
471
|
+
|
|
366
472
|
if (blob_file_meta->GetGarbageBlobCount() >=
|
|
367
473
|
blob_file_meta->GetTotalBlobCount()) {
|
|
368
474
|
std::ostringstream oss;
|
|
@@ -388,7 +494,9 @@ class VersionBuilder::Rep {
|
|
|
388
494
|
return ret_s;
|
|
389
495
|
}
|
|
390
496
|
|
|
391
|
-
Status CheckConsistency(VersionStorageInfo* vstorage) {
|
|
497
|
+
Status CheckConsistency(const VersionStorageInfo* vstorage) const {
|
|
498
|
+
assert(vstorage);
|
|
499
|
+
|
|
392
500
|
// Always run consistency checks in debug build
|
|
393
501
|
#ifdef NDEBUG
|
|
394
502
|
if (!vstorage->force_consistency_checks()) {
|
|
@@ -428,6 +536,38 @@ class VersionBuilder::Rep {
|
|
|
428
536
|
return true;
|
|
429
537
|
}
|
|
430
538
|
|
|
539
|
+
bool IsBlobFileInVersion(uint64_t blob_file_number) const {
|
|
540
|
+
auto mutable_it = mutable_blob_file_metas_.find(blob_file_number);
|
|
541
|
+
if (mutable_it != mutable_blob_file_metas_.end()) {
|
|
542
|
+
return true;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
assert(base_vstorage_);
|
|
546
|
+
const auto meta = base_vstorage_->GetBlobFileMetaData(blob_file_number);
|
|
547
|
+
|
|
548
|
+
return !!meta;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
MutableBlobFileMetaData* GetOrCreateMutableBlobFileMetaData(
|
|
552
|
+
uint64_t blob_file_number) {
|
|
553
|
+
auto mutable_it = mutable_blob_file_metas_.find(blob_file_number);
|
|
554
|
+
if (mutable_it != mutable_blob_file_metas_.end()) {
|
|
555
|
+
return &mutable_it->second;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
assert(base_vstorage_);
|
|
559
|
+
const auto meta = base_vstorage_->GetBlobFileMetaData(blob_file_number);
|
|
560
|
+
|
|
561
|
+
if (meta) {
|
|
562
|
+
mutable_it = mutable_blob_file_metas_
|
|
563
|
+
.emplace(blob_file_number, MutableBlobFileMetaData(meta))
|
|
564
|
+
.first;
|
|
565
|
+
return &mutable_it->second;
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
return nullptr;
|
|
569
|
+
}
|
|
570
|
+
|
|
431
571
|
Status ApplyBlobFileAddition(const BlobFileAddition& blob_file_addition) {
|
|
432
572
|
const uint64_t blob_file_number = blob_file_addition.GetBlobFileNumber();
|
|
433
573
|
|
|
@@ -462,8 +602,8 @@ class VersionBuilder::Rep {
|
|
|
462
602
|
blob_file_addition.GetChecksumMethod(),
|
|
463
603
|
blob_file_addition.GetChecksumValue(), deleter);
|
|
464
604
|
|
|
465
|
-
|
|
466
|
-
std::move(shared_meta));
|
|
605
|
+
mutable_blob_file_metas_.emplace(
|
|
606
|
+
blob_file_number, MutableBlobFileMetaData(std::move(shared_meta)));
|
|
467
607
|
|
|
468
608
|
return Status::OK();
|
|
469
609
|
}
|
|
@@ -471,16 +611,22 @@ class VersionBuilder::Rep {
|
|
|
471
611
|
Status ApplyBlobFileGarbage(const BlobFileGarbage& blob_file_garbage) {
|
|
472
612
|
const uint64_t blob_file_number = blob_file_garbage.GetBlobFileNumber();
|
|
473
613
|
|
|
474
|
-
|
|
614
|
+
MutableBlobFileMetaData* const mutable_meta =
|
|
615
|
+
GetOrCreateMutableBlobFileMetaData(blob_file_number);
|
|
616
|
+
|
|
617
|
+
if (!mutable_meta) {
|
|
475
618
|
std::ostringstream oss;
|
|
476
619
|
oss << "Blob file #" << blob_file_number << " not found";
|
|
477
620
|
|
|
478
621
|
return Status::Corruption("VersionBuilder", oss.str());
|
|
479
622
|
}
|
|
480
623
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
624
|
+
if (!mutable_meta->AddGarbage(blob_file_garbage.GetGarbageBlobCount(),
|
|
625
|
+
blob_file_garbage.GetGarbageBlobBytes())) {
|
|
626
|
+
std::ostringstream oss;
|
|
627
|
+
oss << "Garbage overflow for blob file #" << blob_file_number;
|
|
628
|
+
return Status::Corruption("VersionBuilder", oss.str());
|
|
629
|
+
}
|
|
484
630
|
|
|
485
631
|
return Status::OK();
|
|
486
632
|
}
|
|
@@ -553,9 +699,12 @@ class VersionBuilder::Rep {
|
|
|
553
699
|
const uint64_t blob_file_number =
|
|
554
700
|
GetOldestBlobFileNumberForTableFile(level, file_number);
|
|
555
701
|
|
|
556
|
-
if (blob_file_number != kInvalidBlobFileNumber
|
|
557
|
-
|
|
558
|
-
|
|
702
|
+
if (blob_file_number != kInvalidBlobFileNumber) {
|
|
703
|
+
MutableBlobFileMetaData* const mutable_meta =
|
|
704
|
+
GetOrCreateMutableBlobFileMetaData(blob_file_number);
|
|
705
|
+
if (mutable_meta) {
|
|
706
|
+
mutable_meta->UnlinkSst(file_number);
|
|
707
|
+
}
|
|
559
708
|
}
|
|
560
709
|
|
|
561
710
|
auto& level_state = levels_[level];
|
|
@@ -620,9 +769,12 @@ class VersionBuilder::Rep {
|
|
|
620
769
|
|
|
621
770
|
const uint64_t blob_file_number = f->oldest_blob_file_number;
|
|
622
771
|
|
|
623
|
-
if (blob_file_number != kInvalidBlobFileNumber
|
|
624
|
-
|
|
625
|
-
|
|
772
|
+
if (blob_file_number != kInvalidBlobFileNumber) {
|
|
773
|
+
MutableBlobFileMetaData* const mutable_meta =
|
|
774
|
+
GetOrCreateMutableBlobFileMetaData(blob_file_number);
|
|
775
|
+
if (mutable_meta) {
|
|
776
|
+
mutable_meta->LinkSst(file_number);
|
|
777
|
+
}
|
|
626
778
|
}
|
|
627
779
|
|
|
628
780
|
table_file_levels_[file_number] = level;
|
|
@@ -631,7 +783,7 @@ class VersionBuilder::Rep {
|
|
|
631
783
|
}
|
|
632
784
|
|
|
633
785
|
// Apply all of the edits in *edit to the current state.
|
|
634
|
-
Status Apply(VersionEdit* edit) {
|
|
786
|
+
Status Apply(const VersionEdit* edit) {
|
|
635
787
|
{
|
|
636
788
|
const Status s = CheckConsistency(base_vstorage_);
|
|
637
789
|
if (!s.ok()) {
|
|
@@ -684,158 +836,287 @@ class VersionBuilder::Rep {
|
|
|
684
836
|
return Status::OK();
|
|
685
837
|
}
|
|
686
838
|
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
839
|
+
// Helper function template for merging the blob file metadata from the base
|
|
840
|
+
// version with the mutable metadata representing the state after applying the
|
|
841
|
+
// edits. The function objects process_base and process_mutable are
|
|
842
|
+
// respectively called to handle a base version object when there is no
|
|
843
|
+
// matching mutable object, and a mutable object when there is no matching
|
|
844
|
+
// base version object. process_both is called to perform the merge when a
|
|
845
|
+
// given blob file appears both in the base version and the mutable list. The
|
|
846
|
+
// helper stops processing objects if a function object returns false. Blob
|
|
847
|
+
// files with a file number below first_blob_file are not processed.
|
|
848
|
+
template <typename ProcessBase, typename ProcessMutable, typename ProcessBoth>
|
|
849
|
+
void MergeBlobFileMetas(uint64_t first_blob_file, ProcessBase process_base,
|
|
850
|
+
ProcessMutable process_mutable,
|
|
851
|
+
ProcessBoth process_both) const {
|
|
852
|
+
assert(base_vstorage_);
|
|
853
|
+
|
|
854
|
+
auto base_it = base_vstorage_->GetBlobFileMetaDataLB(first_blob_file);
|
|
855
|
+
const auto base_it_end = base_vstorage_->GetBlobFiles().end();
|
|
692
856
|
|
|
693
|
-
|
|
694
|
-
|
|
857
|
+
auto mutable_it = mutable_blob_file_metas_.lower_bound(first_blob_file);
|
|
858
|
+
const auto mutable_it_end = mutable_blob_file_metas_.end();
|
|
859
|
+
|
|
860
|
+
while (base_it != base_it_end && mutable_it != mutable_it_end) {
|
|
861
|
+
const auto& base_meta = *base_it;
|
|
862
|
+
assert(base_meta);
|
|
863
|
+
|
|
864
|
+
const uint64_t base_blob_file_number = base_meta->GetBlobFileNumber();
|
|
865
|
+
const uint64_t mutable_blob_file_number = mutable_it->first;
|
|
866
|
+
|
|
867
|
+
if (base_blob_file_number < mutable_blob_file_number) {
|
|
868
|
+
if (!process_base(base_meta)) {
|
|
869
|
+
return;
|
|
870
|
+
}
|
|
695
871
|
|
|
696
|
-
|
|
872
|
+
++base_it;
|
|
873
|
+
} else if (mutable_blob_file_number < base_blob_file_number) {
|
|
874
|
+
const auto& mutable_meta = mutable_it->second;
|
|
875
|
+
|
|
876
|
+
if (!process_mutable(mutable_meta)) {
|
|
877
|
+
return;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
++mutable_it;
|
|
881
|
+
} else {
|
|
882
|
+
assert(base_blob_file_number == mutable_blob_file_number);
|
|
883
|
+
|
|
884
|
+
const auto& mutable_meta = mutable_it->second;
|
|
885
|
+
|
|
886
|
+
if (!process_both(base_meta, mutable_meta)) {
|
|
887
|
+
return;
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
++base_it;
|
|
891
|
+
++mutable_it;
|
|
892
|
+
}
|
|
697
893
|
}
|
|
698
894
|
|
|
699
|
-
|
|
700
|
-
|
|
895
|
+
while (base_it != base_it_end) {
|
|
896
|
+
const auto& base_meta = *base_it;
|
|
897
|
+
|
|
898
|
+
if (!process_base(base_meta)) {
|
|
899
|
+
return;
|
|
900
|
+
}
|
|
701
901
|
|
|
702
|
-
|
|
902
|
+
++base_it;
|
|
703
903
|
}
|
|
704
904
|
|
|
705
|
-
|
|
905
|
+
while (mutable_it != mutable_it_end) {
|
|
906
|
+
const auto& mutable_meta = mutable_it->second;
|
|
907
|
+
|
|
908
|
+
if (!process_mutable(mutable_meta)) {
|
|
909
|
+
return;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
++mutable_it;
|
|
913
|
+
}
|
|
706
914
|
}
|
|
707
915
|
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
916
|
+
// Helper function template for finding the first blob file that has linked
|
|
917
|
+
// SSTs.
|
|
918
|
+
template <typename Meta>
|
|
919
|
+
static bool CheckLinkedSsts(const Meta& meta,
|
|
920
|
+
uint64_t* min_oldest_blob_file_num) {
|
|
921
|
+
assert(min_oldest_blob_file_num);
|
|
712
922
|
|
|
713
|
-
|
|
923
|
+
if (!meta.GetLinkedSsts().empty()) {
|
|
924
|
+
assert(*min_oldest_blob_file_num == kInvalidBlobFileNumber);
|
|
714
925
|
|
|
715
|
-
|
|
716
|
-
std::move(shared_meta), delta.GetNewlyLinkedSsts(),
|
|
717
|
-
delta.GetAdditionalGarbageCount(), delta.GetAdditionalGarbageBytes());
|
|
926
|
+
*min_oldest_blob_file_num = meta.GetBlobFileNumber();
|
|
718
927
|
|
|
719
|
-
|
|
928
|
+
return false;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
return true;
|
|
720
932
|
}
|
|
721
933
|
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
const BlobFileMetaDataDelta& delta) {
|
|
726
|
-
assert(base_meta);
|
|
727
|
-
assert(!delta.GetSharedMeta());
|
|
934
|
+
// Find the oldest blob file that has linked SSTs.
|
|
935
|
+
uint64_t GetMinOldestBlobFileNumber() const {
|
|
936
|
+
uint64_t min_oldest_blob_file_num = kInvalidBlobFileNumber;
|
|
728
937
|
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
938
|
+
auto process_base =
|
|
939
|
+
[&min_oldest_blob_file_num](
|
|
940
|
+
const std::shared_ptr<BlobFileMetaData>& base_meta) {
|
|
941
|
+
assert(base_meta);
|
|
732
942
|
|
|
733
|
-
|
|
734
|
-
|
|
943
|
+
return CheckLinkedSsts(*base_meta, &min_oldest_blob_file_num);
|
|
944
|
+
};
|
|
735
945
|
|
|
736
|
-
auto
|
|
737
|
-
|
|
738
|
-
|
|
946
|
+
auto process_mutable = [&min_oldest_blob_file_num](
|
|
947
|
+
const MutableBlobFileMetaData& mutable_meta) {
|
|
948
|
+
return CheckLinkedSsts(mutable_meta, &min_oldest_blob_file_num);
|
|
949
|
+
};
|
|
739
950
|
|
|
740
|
-
auto
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
951
|
+
auto process_both = [&min_oldest_blob_file_num](
|
|
952
|
+
const std::shared_ptr<BlobFileMetaData>& base_meta,
|
|
953
|
+
const MutableBlobFileMetaData& mutable_meta) {
|
|
954
|
+
#ifndef NDEBUG
|
|
955
|
+
assert(base_meta);
|
|
956
|
+
assert(base_meta->GetSharedMeta() == mutable_meta.GetSharedMeta());
|
|
957
|
+
#else
|
|
958
|
+
(void)base_meta;
|
|
959
|
+
#endif
|
|
960
|
+
|
|
961
|
+
// Look at mutable_meta since it supersedes *base_meta
|
|
962
|
+
return CheckLinkedSsts(mutable_meta, &min_oldest_blob_file_num);
|
|
963
|
+
};
|
|
964
|
+
|
|
965
|
+
MergeBlobFileMetas(kInvalidBlobFileNumber, process_base, process_mutable,
|
|
966
|
+
process_both);
|
|
967
|
+
|
|
968
|
+
return min_oldest_blob_file_num;
|
|
969
|
+
}
|
|
744
970
|
|
|
745
|
-
|
|
971
|
+
static std::shared_ptr<BlobFileMetaData> CreateBlobFileMetaData(
|
|
972
|
+
const MutableBlobFileMetaData& mutable_meta) {
|
|
973
|
+
return BlobFileMetaData::Create(
|
|
974
|
+
mutable_meta.GetSharedMeta(), mutable_meta.GetLinkedSsts(),
|
|
975
|
+
mutable_meta.GetGarbageBlobCount(), mutable_meta.GetGarbageBlobBytes());
|
|
746
976
|
}
|
|
747
977
|
|
|
748
978
|
// Add the blob file specified by meta to *vstorage if it is determined to
|
|
749
|
-
// contain valid data (blobs).
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
// flag *found_first_non_empty.
|
|
753
|
-
void AddBlobFileIfNeeded(VersionStorageInfo* vstorage,
|
|
754
|
-
const std::shared_ptr<BlobFileMetaData>& meta,
|
|
755
|
-
bool* found_first_non_empty) const {
|
|
979
|
+
// contain valid data (blobs).
|
|
980
|
+
template <typename Meta>
|
|
981
|
+
static void AddBlobFileIfNeeded(VersionStorageInfo* vstorage, Meta&& meta) {
|
|
756
982
|
assert(vstorage);
|
|
757
983
|
assert(meta);
|
|
758
|
-
assert(found_first_non_empty);
|
|
759
984
|
|
|
760
|
-
if (
|
|
761
|
-
|
|
762
|
-
} else if (!(*found_first_non_empty) ||
|
|
763
|
-
meta->GetGarbageBlobCount() >= meta->GetTotalBlobCount()) {
|
|
985
|
+
if (meta->GetLinkedSsts().empty() &&
|
|
986
|
+
meta->GetGarbageBlobCount() >= meta->GetTotalBlobCount()) {
|
|
764
987
|
return;
|
|
765
988
|
}
|
|
766
989
|
|
|
767
|
-
vstorage->AddBlobFile(meta);
|
|
990
|
+
vstorage->AddBlobFile(std::forward<Meta>(meta));
|
|
768
991
|
}
|
|
769
992
|
|
|
770
993
|
// Merge the blob file metadata from the base version with the changes (edits)
|
|
771
994
|
// applied, and save the result into *vstorage.
|
|
772
995
|
void SaveBlobFilesTo(VersionStorageInfo* vstorage) const {
|
|
773
|
-
assert(base_vstorage_);
|
|
774
996
|
assert(vstorage);
|
|
775
997
|
|
|
776
|
-
|
|
998
|
+
assert(base_vstorage_);
|
|
999
|
+
vstorage->ReserveBlob(base_vstorage_->GetBlobFiles().size() +
|
|
1000
|
+
mutable_blob_file_metas_.size());
|
|
777
1001
|
|
|
778
|
-
const
|
|
779
|
-
|
|
780
|
-
const auto base_it_end = base_blob_files.end();
|
|
1002
|
+
const uint64_t oldest_blob_file_with_linked_ssts =
|
|
1003
|
+
GetMinOldestBlobFileNumber();
|
|
781
1004
|
|
|
782
|
-
auto
|
|
783
|
-
|
|
1005
|
+
auto process_base =
|
|
1006
|
+
[vstorage](const std::shared_ptr<BlobFileMetaData>& base_meta) {
|
|
1007
|
+
assert(base_meta);
|
|
784
1008
|
|
|
785
|
-
|
|
786
|
-
const uint64_t base_blob_file_number = base_it->first;
|
|
787
|
-
const uint64_t delta_blob_file_number = delta_it->first;
|
|
1009
|
+
AddBlobFileIfNeeded(vstorage, base_meta);
|
|
788
1010
|
|
|
789
|
-
|
|
790
|
-
|
|
1011
|
+
return true;
|
|
1012
|
+
};
|
|
791
1013
|
|
|
792
|
-
|
|
1014
|
+
auto process_mutable =
|
|
1015
|
+
[vstorage](const MutableBlobFileMetaData& mutable_meta) {
|
|
1016
|
+
AddBlobFileIfNeeded(vstorage, CreateBlobFileMetaData(mutable_meta));
|
|
793
1017
|
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
const auto& delta = delta_it->second;
|
|
1018
|
+
return true;
|
|
1019
|
+
};
|
|
797
1020
|
|
|
798
|
-
|
|
1021
|
+
auto process_both = [vstorage](
|
|
1022
|
+
const std::shared_ptr<BlobFileMetaData>& base_meta,
|
|
1023
|
+
const MutableBlobFileMetaData& mutable_meta) {
|
|
1024
|
+
assert(base_meta);
|
|
1025
|
+
assert(base_meta->GetSharedMeta() == mutable_meta.GetSharedMeta());
|
|
799
1026
|
|
|
800
|
-
|
|
1027
|
+
if (!mutable_meta.HasDelta()) {
|
|
1028
|
+
assert(base_meta->GetGarbageBlobCount() ==
|
|
1029
|
+
mutable_meta.GetGarbageBlobCount());
|
|
1030
|
+
assert(base_meta->GetGarbageBlobBytes() ==
|
|
1031
|
+
mutable_meta.GetGarbageBlobBytes());
|
|
1032
|
+
assert(base_meta->GetLinkedSsts() == mutable_meta.GetLinkedSsts());
|
|
801
1033
|
|
|
802
|
-
|
|
803
|
-
} else {
|
|
804
|
-
assert(base_blob_file_number == delta_blob_file_number);
|
|
1034
|
+
AddBlobFileIfNeeded(vstorage, base_meta);
|
|
805
1035
|
|
|
806
|
-
|
|
807
|
-
|
|
1036
|
+
return true;
|
|
1037
|
+
}
|
|
808
1038
|
|
|
809
|
-
|
|
1039
|
+
AddBlobFileIfNeeded(vstorage, CreateBlobFileMetaData(mutable_meta));
|
|
810
1040
|
|
|
811
|
-
|
|
1041
|
+
return true;
|
|
1042
|
+
};
|
|
812
1043
|
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
}
|
|
1044
|
+
MergeBlobFileMetas(oldest_blob_file_with_linked_ssts, process_base,
|
|
1045
|
+
process_mutable, process_both);
|
|
1046
|
+
}
|
|
817
1047
|
|
|
818
|
-
|
|
819
|
-
|
|
1048
|
+
void MaybeAddFile(VersionStorageInfo* vstorage, int level,
|
|
1049
|
+
FileMetaData* f) const {
|
|
1050
|
+
const uint64_t file_number = f->fd.GetNumber();
|
|
820
1051
|
|
|
821
|
-
|
|
1052
|
+
const auto& level_state = levels_[level];
|
|
822
1053
|
|
|
823
|
-
|
|
1054
|
+
const auto& del_files = level_state.deleted_files;
|
|
1055
|
+
const auto del_it = del_files.find(file_number);
|
|
1056
|
+
|
|
1057
|
+
if (del_it != del_files.end()) {
|
|
1058
|
+
// f is to-be-deleted table file
|
|
1059
|
+
vstorage->RemoveCurrentStats(f);
|
|
1060
|
+
} else {
|
|
1061
|
+
const auto& add_files = level_state.added_files;
|
|
1062
|
+
const auto add_it = add_files.find(file_number);
|
|
1063
|
+
|
|
1064
|
+
// Note: if the file appears both in the base version and in the added
|
|
1065
|
+
// list, the added FileMetaData supersedes the one in the base version.
|
|
1066
|
+
if (add_it != add_files.end() && add_it->second != f) {
|
|
1067
|
+
vstorage->RemoveCurrentStats(f);
|
|
1068
|
+
} else {
|
|
1069
|
+
vstorage->AddFile(level, f);
|
|
1070
|
+
}
|
|
824
1071
|
}
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
template <typename Cmp>
|
|
1075
|
+
void SaveSSTFilesTo(VersionStorageInfo* vstorage, int level, Cmp cmp) const {
|
|
1076
|
+
// Merge the set of added files with the set of pre-existing files.
|
|
1077
|
+
// Drop any deleted files. Store the result in *vstorage.
|
|
1078
|
+
const auto& base_files = base_vstorage_->LevelFiles(level);
|
|
1079
|
+
const auto& unordered_added_files = levels_[level].added_files;
|
|
1080
|
+
vstorage->Reserve(level, base_files.size() + unordered_added_files.size());
|
|
1081
|
+
|
|
1082
|
+
// Sort added files for the level.
|
|
1083
|
+
std::vector<FileMetaData*> added_files;
|
|
1084
|
+
added_files.reserve(unordered_added_files.size());
|
|
1085
|
+
for (const auto& pair : unordered_added_files) {
|
|
1086
|
+
added_files.push_back(pair.second);
|
|
1087
|
+
}
|
|
1088
|
+
std::sort(added_files.begin(), added_files.end(), cmp);
|
|
1089
|
+
|
|
1090
|
+
auto base_iter = base_files.begin();
|
|
1091
|
+
auto base_end = base_files.end();
|
|
1092
|
+
auto added_iter = added_files.begin();
|
|
1093
|
+
auto added_end = added_files.end();
|
|
1094
|
+
while (added_iter != added_end || base_iter != base_end) {
|
|
1095
|
+
if (base_iter == base_end ||
|
|
1096
|
+
(added_iter != added_end && cmp(*added_iter, *base_iter))) {
|
|
1097
|
+
MaybeAddFile(vstorage, level, *added_iter++);
|
|
1098
|
+
} else {
|
|
1099
|
+
MaybeAddFile(vstorage, level, *base_iter++);
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
825
1103
|
|
|
826
|
-
|
|
827
|
-
|
|
1104
|
+
void SaveSSTFilesTo(VersionStorageInfo* vstorage) const {
|
|
1105
|
+
assert(vstorage);
|
|
828
1106
|
|
|
829
|
-
|
|
1107
|
+
if (!num_levels_) {
|
|
1108
|
+
return;
|
|
1109
|
+
}
|
|
830
1110
|
|
|
831
|
-
|
|
1111
|
+
SaveSSTFilesTo(vstorage, /* level */ 0, level_zero_cmp_);
|
|
832
1112
|
|
|
833
|
-
|
|
1113
|
+
for (int level = 1; level < num_levels_; ++level) {
|
|
1114
|
+
SaveSSTFilesTo(vstorage, level, level_nonzero_cmp_);
|
|
834
1115
|
}
|
|
835
1116
|
}
|
|
836
1117
|
|
|
837
|
-
// Save the current state in *
|
|
838
|
-
Status SaveTo(VersionStorageInfo* vstorage) {
|
|
1118
|
+
// Save the current state in *vstorage.
|
|
1119
|
+
Status SaveTo(VersionStorageInfo* vstorage) const {
|
|
839
1120
|
Status s = CheckConsistency(base_vstorage_);
|
|
840
1121
|
if (!s.ok()) {
|
|
841
1122
|
return s;
|
|
@@ -846,47 +1127,7 @@ class VersionBuilder::Rep {
|
|
|
846
1127
|
return s;
|
|
847
1128
|
}
|
|
848
1129
|
|
|
849
|
-
|
|
850
|
-
const auto& cmp = (level == 0) ? level_zero_cmp_ : level_nonzero_cmp_;
|
|
851
|
-
// Merge the set of added files with the set of pre-existing files.
|
|
852
|
-
// Drop any deleted files. Store the result in *v.
|
|
853
|
-
const auto& base_files = base_vstorage_->LevelFiles(level);
|
|
854
|
-
const auto& unordered_added_files = levels_[level].added_files;
|
|
855
|
-
vstorage->Reserve(level,
|
|
856
|
-
base_files.size() + unordered_added_files.size());
|
|
857
|
-
|
|
858
|
-
// Sort added files for the level.
|
|
859
|
-
std::vector<FileMetaData*> added_files;
|
|
860
|
-
added_files.reserve(unordered_added_files.size());
|
|
861
|
-
for (const auto& pair : unordered_added_files) {
|
|
862
|
-
added_files.push_back(pair.second);
|
|
863
|
-
}
|
|
864
|
-
std::sort(added_files.begin(), added_files.end(), cmp);
|
|
865
|
-
|
|
866
|
-
#ifndef NDEBUG
|
|
867
|
-
FileMetaData* prev_added_file = nullptr;
|
|
868
|
-
for (const auto& added : added_files) {
|
|
869
|
-
if (level > 0 && prev_added_file != nullptr) {
|
|
870
|
-
assert(base_vstorage_->InternalComparator()->Compare(
|
|
871
|
-
prev_added_file->smallest, added->smallest) <= 0);
|
|
872
|
-
}
|
|
873
|
-
prev_added_file = added;
|
|
874
|
-
}
|
|
875
|
-
#endif
|
|
876
|
-
|
|
877
|
-
auto base_iter = base_files.begin();
|
|
878
|
-
auto base_end = base_files.end();
|
|
879
|
-
auto added_iter = added_files.begin();
|
|
880
|
-
auto added_end = added_files.end();
|
|
881
|
-
while (added_iter != added_end || base_iter != base_end) {
|
|
882
|
-
if (base_iter == base_end ||
|
|
883
|
-
(added_iter != added_end && cmp(*added_iter, *base_iter))) {
|
|
884
|
-
MaybeAddFile(vstorage, level, *added_iter++);
|
|
885
|
-
} else {
|
|
886
|
-
MaybeAddFile(vstorage, level, *base_iter++);
|
|
887
|
-
}
|
|
888
|
-
}
|
|
889
|
-
}
|
|
1130
|
+
SaveSSTFilesTo(vstorage);
|
|
890
1131
|
|
|
891
1132
|
SaveBlobFilesTo(vstorage);
|
|
892
1133
|
|
|
@@ -894,11 +1135,11 @@ class VersionBuilder::Rep {
|
|
|
894
1135
|
return s;
|
|
895
1136
|
}
|
|
896
1137
|
|
|
897
|
-
Status LoadTableHandlers(
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
1138
|
+
Status LoadTableHandlers(
|
|
1139
|
+
InternalStats* internal_stats, int max_threads,
|
|
1140
|
+
bool prefetch_index_and_filter_in_cache, bool is_initial_load,
|
|
1141
|
+
const std::shared_ptr<const SliceTransform>& prefix_extractor,
|
|
1142
|
+
size_t max_file_size_for_l0_meta_pin) {
|
|
902
1143
|
assert(table_cache_ != nullptr);
|
|
903
1144
|
|
|
904
1145
|
size_t table_cache_capacity = table_cache_->get_cache()->GetCapacity();
|
|
@@ -968,7 +1209,8 @@ class VersionBuilder::Rep {
|
|
|
968
1209
|
&file_meta->table_reader_handle, prefix_extractor, false /*no_io */,
|
|
969
1210
|
true /* record_read_stats */,
|
|
970
1211
|
internal_stats->GetFileReadHist(level), false, level,
|
|
971
|
-
prefetch_index_and_filter_in_cache, max_file_size_for_l0_meta_pin
|
|
1212
|
+
prefetch_index_and_filter_in_cache, max_file_size_for_l0_meta_pin,
|
|
1213
|
+
file_meta->temperature);
|
|
972
1214
|
if (file_meta->table_reader_handle != nullptr) {
|
|
973
1215
|
// Load table_reader
|
|
974
1216
|
file_meta->fd.table_reader = table_cache_->GetTableReaderFromHandle(
|
|
@@ -995,31 +1237,6 @@ class VersionBuilder::Rep {
|
|
|
995
1237
|
}
|
|
996
1238
|
return ret;
|
|
997
1239
|
}
|
|
998
|
-
|
|
999
|
-
void MaybeAddFile(VersionStorageInfo* vstorage, int level, FileMetaData* f) {
|
|
1000
|
-
const uint64_t file_number = f->fd.GetNumber();
|
|
1001
|
-
|
|
1002
|
-
const auto& level_state = levels_[level];
|
|
1003
|
-
|
|
1004
|
-
const auto& del_files = level_state.deleted_files;
|
|
1005
|
-
const auto del_it = del_files.find(file_number);
|
|
1006
|
-
|
|
1007
|
-
if (del_it != del_files.end()) {
|
|
1008
|
-
// f is to-be-deleted table file
|
|
1009
|
-
vstorage->RemoveCurrentStats(f);
|
|
1010
|
-
} else {
|
|
1011
|
-
const auto& add_files = level_state.added_files;
|
|
1012
|
-
const auto add_it = add_files.find(file_number);
|
|
1013
|
-
|
|
1014
|
-
// Note: if the file appears both in the base version and in the added
|
|
1015
|
-
// list, the added FileMetaData supersedes the one in the base version.
|
|
1016
|
-
if (add_it != add_files.end() && add_it->second != f) {
|
|
1017
|
-
vstorage->RemoveCurrentStats(f);
|
|
1018
|
-
} else {
|
|
1019
|
-
vstorage->AddFile(level, f);
|
|
1020
|
-
}
|
|
1021
|
-
}
|
|
1022
|
-
}
|
|
1023
1240
|
};
|
|
1024
1241
|
|
|
1025
1242
|
VersionBuilder::VersionBuilder(const FileOptions& file_options,
|
|
@@ -1036,22 +1253,28 @@ bool VersionBuilder::CheckConsistencyForNumLevels() {
|
|
|
1036
1253
|
return rep_->CheckConsistencyForNumLevels();
|
|
1037
1254
|
}
|
|
1038
1255
|
|
|
1039
|
-
Status VersionBuilder::Apply(VersionEdit* edit) {
|
|
1256
|
+
Status VersionBuilder::Apply(const VersionEdit* edit) {
|
|
1257
|
+
return rep_->Apply(edit);
|
|
1258
|
+
}
|
|
1040
1259
|
|
|
1041
|
-
Status VersionBuilder::SaveTo(VersionStorageInfo* vstorage) {
|
|
1260
|
+
Status VersionBuilder::SaveTo(VersionStorageInfo* vstorage) const {
|
|
1042
1261
|
return rep_->SaveTo(vstorage);
|
|
1043
1262
|
}
|
|
1044
1263
|
|
|
1045
1264
|
Status VersionBuilder::LoadTableHandlers(
|
|
1046
1265
|
InternalStats* internal_stats, int max_threads,
|
|
1047
1266
|
bool prefetch_index_and_filter_in_cache, bool is_initial_load,
|
|
1048
|
-
const SliceTransform
|
|
1267
|
+
const std::shared_ptr<const SliceTransform>& prefix_extractor,
|
|
1049
1268
|
size_t max_file_size_for_l0_meta_pin) {
|
|
1050
1269
|
return rep_->LoadTableHandlers(
|
|
1051
1270
|
internal_stats, max_threads, prefetch_index_and_filter_in_cache,
|
|
1052
1271
|
is_initial_load, prefix_extractor, max_file_size_for_l0_meta_pin);
|
|
1053
1272
|
}
|
|
1054
1273
|
|
|
1274
|
+
uint64_t VersionBuilder::GetMinOldestBlobFileNumber() const {
|
|
1275
|
+
return rep_->GetMinOldestBlobFileNumber();
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1055
1278
|
BaseReferencedVersionBuilder::BaseReferencedVersionBuilder(
|
|
1056
1279
|
ColumnFamilyData* cfd)
|
|
1057
1280
|
: version_builder_(new VersionBuilder(
|