@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
|
@@ -9,8 +9,13 @@
|
|
|
9
9
|
|
|
10
10
|
#include "db/version_set.h"
|
|
11
11
|
|
|
12
|
+
#include <algorithm>
|
|
13
|
+
|
|
12
14
|
#include "db/db_impl/db_impl.h"
|
|
13
15
|
#include "db/log_writer.h"
|
|
16
|
+
#include "rocksdb/advanced_options.h"
|
|
17
|
+
#include "rocksdb/convenience.h"
|
|
18
|
+
#include "rocksdb/file_system.h"
|
|
14
19
|
#include "table/block_based/block_based_table_factory.h"
|
|
15
20
|
#include "table/mock_table.h"
|
|
16
21
|
#include "test_util/testharness.h"
|
|
@@ -40,9 +45,11 @@ class GenerateLevelFilesBriefTest : public testing::Test {
|
|
|
40
45
|
files_.size() + 1, 0, 0,
|
|
41
46
|
InternalKey(smallest, smallest_seq, kTypeValue),
|
|
42
47
|
InternalKey(largest, largest_seq, kTypeValue), smallest_seq,
|
|
43
|
-
largest_seq, /* marked_for_compact */ false,
|
|
44
|
-
|
|
45
|
-
kUnknownFileChecksum,
|
|
48
|
+
largest_seq, /* marked_for_compact */ false, Temperature::kUnknown,
|
|
49
|
+
kInvalidBlobFileNumber, kUnknownOldestAncesterTime,
|
|
50
|
+
kUnknownFileCreationTime, kUnknownFileChecksum,
|
|
51
|
+
kUnknownFileChecksumFuncName, kDisableUserTimestamp,
|
|
52
|
+
kDisableUserTimestamp);
|
|
46
53
|
files_.push_back(f);
|
|
47
54
|
}
|
|
48
55
|
|
|
@@ -102,7 +109,7 @@ class VersionStorageInfoTestBase : public testing::Test {
|
|
|
102
109
|
InternalKeyComparator icmp_;
|
|
103
110
|
std::shared_ptr<CountingLogger> logger_;
|
|
104
111
|
Options options_;
|
|
105
|
-
|
|
112
|
+
ImmutableOptions ioptions_;
|
|
106
113
|
MutableCFOptions mutable_cf_options_;
|
|
107
114
|
VersionStorageInfo vstorage_;
|
|
108
115
|
|
|
@@ -133,31 +140,49 @@ class VersionStorageInfoTestBase : public testing::Test {
|
|
|
133
140
|
}
|
|
134
141
|
|
|
135
142
|
void Add(int level, uint32_t file_number, const char* smallest,
|
|
136
|
-
const char* largest, uint64_t file_size = 0
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
kUnknownOldestAncesterTime, kUnknownFileCreationTime,
|
|
143
|
-
kUnknownFileChecksum, kUnknownFileChecksumFuncName);
|
|
144
|
-
f->compensated_file_size = file_size;
|
|
145
|
-
vstorage_.AddFile(level, f);
|
|
143
|
+
const char* largest, uint64_t file_size = 0,
|
|
144
|
+
uint64_t oldest_blob_file_number = kInvalidBlobFileNumber) {
|
|
145
|
+
constexpr SequenceNumber dummy_seq = 0;
|
|
146
|
+
|
|
147
|
+
Add(level, file_number, GetInternalKey(smallest, dummy_seq),
|
|
148
|
+
GetInternalKey(largest, dummy_seq), file_size, oldest_blob_file_number);
|
|
146
149
|
}
|
|
147
150
|
|
|
148
151
|
void Add(int level, uint32_t file_number, const InternalKey& smallest,
|
|
149
|
-
const InternalKey& largest, uint64_t file_size = 0
|
|
152
|
+
const InternalKey& largest, uint64_t file_size = 0,
|
|
153
|
+
uint64_t oldest_blob_file_number = kInvalidBlobFileNumber) {
|
|
150
154
|
assert(level < vstorage_.num_levels());
|
|
151
155
|
FileMetaData* f = new FileMetaData(
|
|
152
156
|
file_number, 0, file_size, smallest, largest, /* smallest_seq */ 0,
|
|
153
157
|
/* largest_seq */ 0, /* marked_for_compact */ false,
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
kUnknownFileChecksumFuncName
|
|
158
|
+
Temperature::kUnknown, oldest_blob_file_number,
|
|
159
|
+
kUnknownOldestAncesterTime, kUnknownFileCreationTime,
|
|
160
|
+
kUnknownFileChecksum, kUnknownFileChecksumFuncName,
|
|
161
|
+
kDisableUserTimestamp, kDisableUserTimestamp);
|
|
157
162
|
f->compensated_file_size = file_size;
|
|
158
163
|
vstorage_.AddFile(level, f);
|
|
159
164
|
}
|
|
160
165
|
|
|
166
|
+
void AddBlob(uint64_t blob_file_number, uint64_t total_blob_count,
|
|
167
|
+
uint64_t total_blob_bytes,
|
|
168
|
+
BlobFileMetaData::LinkedSsts linked_ssts,
|
|
169
|
+
uint64_t garbage_blob_count, uint64_t garbage_blob_bytes) {
|
|
170
|
+
auto shared_meta = SharedBlobFileMetaData::Create(
|
|
171
|
+
blob_file_number, total_blob_count, total_blob_bytes,
|
|
172
|
+
/* checksum_method */ std::string(),
|
|
173
|
+
/* checksum_value */ std::string());
|
|
174
|
+
auto meta =
|
|
175
|
+
BlobFileMetaData::Create(std::move(shared_meta), std::move(linked_ssts),
|
|
176
|
+
garbage_blob_count, garbage_blob_bytes);
|
|
177
|
+
|
|
178
|
+
vstorage_.AddBlobFile(std::move(meta));
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
void UpdateVersionStorageInfo() {
|
|
182
|
+
vstorage_.PrepareForVersionAppend(ioptions_, mutable_cf_options_);
|
|
183
|
+
vstorage_.SetFinalized();
|
|
184
|
+
}
|
|
185
|
+
|
|
161
186
|
std::string GetOverlappingFiles(int level, const InternalKey& begin,
|
|
162
187
|
const InternalKey& end) {
|
|
163
188
|
std::vector<FileMetaData*> inputs;
|
|
@@ -185,10 +210,12 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelStatic) {
|
|
|
185
210
|
ioptions_.level_compaction_dynamic_level_bytes = false;
|
|
186
211
|
mutable_cf_options_.max_bytes_for_level_base = 10;
|
|
187
212
|
mutable_cf_options_.max_bytes_for_level_multiplier = 5;
|
|
188
|
-
Add(4, 100U, "1", "2");
|
|
189
|
-
Add(5, 101U, "1", "2");
|
|
190
213
|
|
|
191
|
-
|
|
214
|
+
Add(4, 100U, "1", "2", 100U);
|
|
215
|
+
Add(5, 101U, "1", "2", 100U);
|
|
216
|
+
|
|
217
|
+
UpdateVersionStorageInfo();
|
|
218
|
+
|
|
192
219
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(1), 10U);
|
|
193
220
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(2), 50U);
|
|
194
221
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(3), 250U);
|
|
@@ -197,40 +224,84 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelStatic) {
|
|
|
197
224
|
ASSERT_EQ(0, logger_->log_count);
|
|
198
225
|
}
|
|
199
226
|
|
|
200
|
-
TEST_F(VersionStorageInfoTest,
|
|
227
|
+
TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic_1) {
|
|
201
228
|
ioptions_.level_compaction_dynamic_level_bytes = true;
|
|
202
229
|
mutable_cf_options_.max_bytes_for_level_base = 1000;
|
|
203
230
|
mutable_cf_options_.max_bytes_for_level_multiplier = 5;
|
|
231
|
+
|
|
204
232
|
Add(5, 1U, "1", "2", 500U);
|
|
205
233
|
|
|
206
|
-
|
|
234
|
+
UpdateVersionStorageInfo();
|
|
235
|
+
|
|
207
236
|
ASSERT_EQ(0, logger_->log_count);
|
|
208
237
|
ASSERT_EQ(vstorage_.base_level(), 5);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic_2) {
|
|
241
|
+
ioptions_.level_compaction_dynamic_level_bytes = true;
|
|
242
|
+
mutable_cf_options_.max_bytes_for_level_base = 1000;
|
|
243
|
+
mutable_cf_options_.max_bytes_for_level_multiplier = 5;
|
|
209
244
|
|
|
245
|
+
Add(5, 1U, "1", "2", 500U);
|
|
210
246
|
Add(5, 2U, "3", "4", 550U);
|
|
211
|
-
|
|
247
|
+
|
|
248
|
+
UpdateVersionStorageInfo();
|
|
249
|
+
|
|
212
250
|
ASSERT_EQ(0, logger_->log_count);
|
|
213
251
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(4), 1000U);
|
|
214
252
|
ASSERT_EQ(vstorage_.base_level(), 4);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic_3) {
|
|
256
|
+
ioptions_.level_compaction_dynamic_level_bytes = true;
|
|
257
|
+
mutable_cf_options_.max_bytes_for_level_base = 1000;
|
|
258
|
+
mutable_cf_options_.max_bytes_for_level_multiplier = 5;
|
|
215
259
|
|
|
260
|
+
Add(5, 1U, "1", "2", 500U);
|
|
261
|
+
Add(5, 2U, "3", "4", 550U);
|
|
216
262
|
Add(4, 3U, "3", "4", 550U);
|
|
217
|
-
|
|
263
|
+
|
|
264
|
+
UpdateVersionStorageInfo();
|
|
265
|
+
|
|
218
266
|
ASSERT_EQ(0, logger_->log_count);
|
|
219
267
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(4), 1000U);
|
|
220
268
|
ASSERT_EQ(vstorage_.base_level(), 4);
|
|
269
|
+
}
|
|
221
270
|
|
|
271
|
+
TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic_4) {
|
|
272
|
+
ioptions_.level_compaction_dynamic_level_bytes = true;
|
|
273
|
+
mutable_cf_options_.max_bytes_for_level_base = 1000;
|
|
274
|
+
mutable_cf_options_.max_bytes_for_level_multiplier = 5;
|
|
275
|
+
|
|
276
|
+
Add(5, 1U, "1", "2", 500U);
|
|
277
|
+
Add(5, 2U, "3", "4", 550U);
|
|
278
|
+
Add(4, 3U, "3", "4", 550U);
|
|
222
279
|
Add(3, 4U, "3", "4", 250U);
|
|
223
280
|
Add(3, 5U, "5", "7", 300U);
|
|
224
|
-
|
|
281
|
+
|
|
282
|
+
UpdateVersionStorageInfo();
|
|
283
|
+
|
|
225
284
|
ASSERT_EQ(1, logger_->log_count);
|
|
226
285
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(4), 1005U);
|
|
227
286
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(3), 1000U);
|
|
228
287
|
ASSERT_EQ(vstorage_.base_level(), 3);
|
|
288
|
+
}
|
|
229
289
|
|
|
290
|
+
TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic_5) {
|
|
291
|
+
ioptions_.level_compaction_dynamic_level_bytes = true;
|
|
292
|
+
mutable_cf_options_.max_bytes_for_level_base = 1000;
|
|
293
|
+
mutable_cf_options_.max_bytes_for_level_multiplier = 5;
|
|
294
|
+
|
|
295
|
+
Add(5, 1U, "1", "2", 500U);
|
|
296
|
+
Add(5, 2U, "3", "4", 550U);
|
|
297
|
+
Add(4, 3U, "3", "4", 550U);
|
|
298
|
+
Add(3, 4U, "3", "4", 250U);
|
|
299
|
+
Add(3, 5U, "5", "7", 300U);
|
|
230
300
|
Add(1, 6U, "3", "4", 5U);
|
|
231
301
|
Add(1, 7U, "8", "9", 5U);
|
|
232
|
-
|
|
233
|
-
|
|
302
|
+
|
|
303
|
+
UpdateVersionStorageInfo();
|
|
304
|
+
|
|
234
305
|
ASSERT_EQ(1, logger_->log_count);
|
|
235
306
|
ASSERT_GT(vstorage_.MaxBytesForLevel(4), 1005U);
|
|
236
307
|
ASSERT_GT(vstorage_.MaxBytesForLevel(3), 1005U);
|
|
@@ -243,6 +314,7 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicLotsOfData) {
|
|
|
243
314
|
ioptions_.level_compaction_dynamic_level_bytes = true;
|
|
244
315
|
mutable_cf_options_.max_bytes_for_level_base = 100;
|
|
245
316
|
mutable_cf_options_.max_bytes_for_level_multiplier = 2;
|
|
317
|
+
|
|
246
318
|
Add(0, 1U, "1", "2", 50U);
|
|
247
319
|
Add(1, 2U, "1", "2", 50U);
|
|
248
320
|
Add(2, 3U, "1", "2", 500U);
|
|
@@ -250,7 +322,8 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicLotsOfData) {
|
|
|
250
322
|
Add(4, 5U, "1", "2", 1700U);
|
|
251
323
|
Add(5, 6U, "1", "2", 500U);
|
|
252
324
|
|
|
253
|
-
|
|
325
|
+
UpdateVersionStorageInfo();
|
|
326
|
+
|
|
254
327
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(4), 800U);
|
|
255
328
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(3), 400U);
|
|
256
329
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(2), 200U);
|
|
@@ -264,12 +337,14 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicLargeLevel) {
|
|
|
264
337
|
ioptions_.level_compaction_dynamic_level_bytes = true;
|
|
265
338
|
mutable_cf_options_.max_bytes_for_level_base = 10U * kOneGB;
|
|
266
339
|
mutable_cf_options_.max_bytes_for_level_multiplier = 10;
|
|
340
|
+
|
|
267
341
|
Add(0, 1U, "1", "2", 50U);
|
|
268
342
|
Add(3, 4U, "1", "2", 32U * kOneGB);
|
|
269
343
|
Add(4, 5U, "1", "2", 500U * kOneGB);
|
|
270
344
|
Add(5, 6U, "1", "2", 3000U * kOneGB);
|
|
271
345
|
|
|
272
|
-
|
|
346
|
+
UpdateVersionStorageInfo();
|
|
347
|
+
|
|
273
348
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(5), 3000U * kOneGB);
|
|
274
349
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(4), 300U * kOneGB);
|
|
275
350
|
ASSERT_EQ(vstorage_.MaxBytesForLevel(3), 30U * kOneGB);
|
|
@@ -293,7 +368,8 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicWithLargeL0_1) {
|
|
|
293
368
|
Add(3, 6U, "1", "2", 40000U);
|
|
294
369
|
Add(2, 7U, "1", "2", 8000U);
|
|
295
370
|
|
|
296
|
-
|
|
371
|
+
UpdateVersionStorageInfo();
|
|
372
|
+
|
|
297
373
|
ASSERT_EQ(0, logger_->log_count);
|
|
298
374
|
ASSERT_EQ(2, vstorage_.base_level());
|
|
299
375
|
// level multiplier should be 3.5
|
|
@@ -319,7 +395,8 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicWithLargeL0_2) {
|
|
|
319
395
|
Add(3, 6U, "1", "2", 40000U);
|
|
320
396
|
Add(2, 7U, "1", "2", 8000U);
|
|
321
397
|
|
|
322
|
-
|
|
398
|
+
UpdateVersionStorageInfo();
|
|
399
|
+
|
|
323
400
|
ASSERT_EQ(0, logger_->log_count);
|
|
324
401
|
ASSERT_EQ(2, vstorage_.base_level());
|
|
325
402
|
// level multiplier should be 3.5
|
|
@@ -351,7 +428,8 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicWithLargeL0_3) {
|
|
|
351
428
|
Add(3, 6U, "1", "2", 40000U);
|
|
352
429
|
Add(2, 7U, "1", "2", 8000U);
|
|
353
430
|
|
|
354
|
-
|
|
431
|
+
UpdateVersionStorageInfo();
|
|
432
|
+
|
|
355
433
|
ASSERT_EQ(0, logger_->log_count);
|
|
356
434
|
ASSERT_EQ(2, vstorage_.base_level());
|
|
357
435
|
// level multiplier should be 3.5
|
|
@@ -374,6 +452,9 @@ TEST_F(VersionStorageInfoTest, EstimateLiveDataSize) {
|
|
|
374
452
|
Add(4, 5U, "4", "5", 1U); // Inside range of last level
|
|
375
453
|
Add(4, 6U, "6", "7", 1U); // Inside range of last level
|
|
376
454
|
Add(5, 7U, "4", "7", 10U);
|
|
455
|
+
|
|
456
|
+
UpdateVersionStorageInfo();
|
|
457
|
+
|
|
377
458
|
ASSERT_EQ(10U, vstorage_.EstimateLiveDataSize());
|
|
378
459
|
}
|
|
379
460
|
|
|
@@ -385,6 +466,9 @@ TEST_F(VersionStorageInfoTest, EstimateLiveDataSize2) {
|
|
|
385
466
|
Add(1, 5U, "5", "6", 1U);
|
|
386
467
|
Add(2, 6U, "2", "3", 1U);
|
|
387
468
|
Add(3, 7U, "7", "8", 1U);
|
|
469
|
+
|
|
470
|
+
UpdateVersionStorageInfo();
|
|
471
|
+
|
|
388
472
|
ASSERT_EQ(4U, vstorage_.EstimateLiveDataSize());
|
|
389
473
|
}
|
|
390
474
|
|
|
@@ -398,8 +482,8 @@ TEST_F(VersionStorageInfoTest, GetOverlappingInputs) {
|
|
|
398
482
|
// Two files that do not overlap.
|
|
399
483
|
Add(1, 5U, {"g", 0, kTypeValue}, {"h", 0, kTypeValue}, 1);
|
|
400
484
|
Add(1, 6U, {"i", 0, kTypeValue}, {"j", 0, kTypeValue}, 1);
|
|
401
|
-
|
|
402
|
-
|
|
485
|
+
|
|
486
|
+
UpdateVersionStorageInfo();
|
|
403
487
|
|
|
404
488
|
ASSERT_EQ("1,2", GetOverlappingFiles(
|
|
405
489
|
1, {"a", 0, kTypeValue}, {"b", 0, kTypeValue}));
|
|
@@ -427,6 +511,8 @@ TEST_F(VersionStorageInfoTest, FileLocationAndMetaDataByNumber) {
|
|
|
427
511
|
|
|
428
512
|
Add(2, 7U, "1", "2", 8000U);
|
|
429
513
|
|
|
514
|
+
UpdateVersionStorageInfo();
|
|
515
|
+
|
|
430
516
|
ASSERT_EQ(vstorage_.GetFileLocation(11U),
|
|
431
517
|
VersionStorageInfo::FileLocation(0, 0));
|
|
432
518
|
ASSERT_NE(vstorage_.GetFileMetaDataByNumber(11U), nullptr);
|
|
@@ -443,10 +529,343 @@ TEST_F(VersionStorageInfoTest, FileLocationAndMetaDataByNumber) {
|
|
|
443
529
|
ASSERT_EQ(vstorage_.GetFileMetaDataByNumber(999U), nullptr);
|
|
444
530
|
}
|
|
445
531
|
|
|
532
|
+
TEST_F(VersionStorageInfoTest, ForcedBlobGCEmpty) {
|
|
533
|
+
// No SST or blob files in VersionStorageInfo
|
|
534
|
+
UpdateVersionStorageInfo();
|
|
535
|
+
|
|
536
|
+
constexpr double age_cutoff = 0.5;
|
|
537
|
+
constexpr double force_threshold = 0.75;
|
|
538
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
539
|
+
|
|
540
|
+
ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
TEST_F(VersionStorageInfoTest, ForcedBlobGCSingleBatch) {
|
|
544
|
+
// Test the edge case when all blob files are part of the oldest batch.
|
|
545
|
+
// We have one L0 SST file #1, and four blob files #10, #11, #12, and #13.
|
|
546
|
+
// The oldest blob file used by SST #1 is blob file #10.
|
|
547
|
+
|
|
548
|
+
constexpr int level = 0;
|
|
549
|
+
|
|
550
|
+
constexpr uint64_t sst = 1;
|
|
551
|
+
|
|
552
|
+
constexpr uint64_t first_blob = 10;
|
|
553
|
+
constexpr uint64_t second_blob = 11;
|
|
554
|
+
constexpr uint64_t third_blob = 12;
|
|
555
|
+
constexpr uint64_t fourth_blob = 13;
|
|
556
|
+
|
|
557
|
+
{
|
|
558
|
+
constexpr char smallest[] = "bar1";
|
|
559
|
+
constexpr char largest[] = "foo1";
|
|
560
|
+
constexpr uint64_t file_size = 1000;
|
|
561
|
+
|
|
562
|
+
Add(level, sst, smallest, largest, file_size, first_blob);
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
{
|
|
566
|
+
constexpr uint64_t total_blob_count = 10;
|
|
567
|
+
constexpr uint64_t total_blob_bytes = 100000;
|
|
568
|
+
constexpr uint64_t garbage_blob_count = 2;
|
|
569
|
+
constexpr uint64_t garbage_blob_bytes = 15000;
|
|
570
|
+
|
|
571
|
+
AddBlob(first_blob, total_blob_count, total_blob_bytes,
|
|
572
|
+
BlobFileMetaData::LinkedSsts{sst}, garbage_blob_count,
|
|
573
|
+
garbage_blob_bytes);
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
{
|
|
577
|
+
constexpr uint64_t total_blob_count = 4;
|
|
578
|
+
constexpr uint64_t total_blob_bytes = 400000;
|
|
579
|
+
constexpr uint64_t garbage_blob_count = 3;
|
|
580
|
+
constexpr uint64_t garbage_blob_bytes = 235000;
|
|
581
|
+
|
|
582
|
+
AddBlob(second_blob, total_blob_count, total_blob_bytes,
|
|
583
|
+
BlobFileMetaData::LinkedSsts{}, garbage_blob_count,
|
|
584
|
+
garbage_blob_bytes);
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
{
|
|
588
|
+
constexpr uint64_t total_blob_count = 20;
|
|
589
|
+
constexpr uint64_t total_blob_bytes = 1000000;
|
|
590
|
+
constexpr uint64_t garbage_blob_count = 8;
|
|
591
|
+
constexpr uint64_t garbage_blob_bytes = 400000;
|
|
592
|
+
|
|
593
|
+
AddBlob(third_blob, total_blob_count, total_blob_bytes,
|
|
594
|
+
BlobFileMetaData::LinkedSsts{}, garbage_blob_count,
|
|
595
|
+
garbage_blob_bytes);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
{
|
|
599
|
+
constexpr uint64_t total_blob_count = 128;
|
|
600
|
+
constexpr uint64_t total_blob_bytes = 1000000;
|
|
601
|
+
constexpr uint64_t garbage_blob_count = 67;
|
|
602
|
+
constexpr uint64_t garbage_blob_bytes = 600000;
|
|
603
|
+
|
|
604
|
+
AddBlob(fourth_blob, total_blob_count, total_blob_bytes,
|
|
605
|
+
BlobFileMetaData::LinkedSsts{}, garbage_blob_count,
|
|
606
|
+
garbage_blob_bytes);
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
UpdateVersionStorageInfo();
|
|
610
|
+
|
|
611
|
+
assert(vstorage_.num_levels() > 0);
|
|
612
|
+
const auto& level_files = vstorage_.LevelFiles(level);
|
|
613
|
+
|
|
614
|
+
assert(level_files.size() == 1);
|
|
615
|
+
assert(level_files[0] && level_files[0]->fd.GetNumber() == sst);
|
|
616
|
+
|
|
617
|
+
// No blob files eligible for GC due to the age cutoff
|
|
618
|
+
|
|
619
|
+
{
|
|
620
|
+
constexpr double age_cutoff = 0.1;
|
|
621
|
+
constexpr double force_threshold = 0.0;
|
|
622
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
623
|
+
|
|
624
|
+
ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
// Part of the oldest batch of blob files (specifically, #12 and #13) is
|
|
628
|
+
// ineligible for GC due to the age cutoff
|
|
629
|
+
|
|
630
|
+
{
|
|
631
|
+
constexpr double age_cutoff = 0.5;
|
|
632
|
+
constexpr double force_threshold = 0.0;
|
|
633
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
634
|
+
|
|
635
|
+
ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
// Oldest batch is eligible based on age cutoff but its overall garbage ratio
|
|
639
|
+
// is below threshold
|
|
640
|
+
|
|
641
|
+
{
|
|
642
|
+
constexpr double age_cutoff = 1.0;
|
|
643
|
+
constexpr double force_threshold = 0.6;
|
|
644
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
645
|
+
|
|
646
|
+
ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
// Oldest batch is eligible based on age cutoff and its overall garbage ratio
|
|
650
|
+
// meets threshold
|
|
651
|
+
|
|
652
|
+
{
|
|
653
|
+
constexpr double age_cutoff = 1.0;
|
|
654
|
+
constexpr double force_threshold = 0.5;
|
|
655
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
656
|
+
|
|
657
|
+
auto ssts_to_be_compacted = vstorage_.FilesMarkedForForcedBlobGC();
|
|
658
|
+
ASSERT_EQ(ssts_to_be_compacted.size(), 1);
|
|
659
|
+
|
|
660
|
+
const autovector<std::pair<int, FileMetaData*>>
|
|
661
|
+
expected_ssts_to_be_compacted{{level, level_files[0]}};
|
|
662
|
+
|
|
663
|
+
ASSERT_EQ(ssts_to_be_compacted[0], expected_ssts_to_be_compacted[0]);
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
TEST_F(VersionStorageInfoTest, ForcedBlobGCMultipleBatches) {
|
|
668
|
+
// Add three L0 SSTs (1, 2, and 3) and four blob files (10, 11, 12, and 13).
|
|
669
|
+
// The first two SSTs have the same oldest blob file, namely, the very oldest
|
|
670
|
+
// one (10), while the third SST's oldest blob file reference points to the
|
|
671
|
+
// third blob file (12). Thus, the oldest batch of blob files contains the
|
|
672
|
+
// first two blob files 10 and 11, and assuming they are eligible for GC based
|
|
673
|
+
// on the age cutoff, compacting away the SSTs 1 and 2 will eliminate them.
|
|
674
|
+
|
|
675
|
+
constexpr int level = 0;
|
|
676
|
+
|
|
677
|
+
constexpr uint64_t first_sst = 1;
|
|
678
|
+
constexpr uint64_t second_sst = 2;
|
|
679
|
+
constexpr uint64_t third_sst = 3;
|
|
680
|
+
|
|
681
|
+
constexpr uint64_t first_blob = 10;
|
|
682
|
+
constexpr uint64_t second_blob = 11;
|
|
683
|
+
constexpr uint64_t third_blob = 12;
|
|
684
|
+
constexpr uint64_t fourth_blob = 13;
|
|
685
|
+
|
|
686
|
+
{
|
|
687
|
+
constexpr char smallest[] = "bar1";
|
|
688
|
+
constexpr char largest[] = "foo1";
|
|
689
|
+
constexpr uint64_t file_size = 1000;
|
|
690
|
+
|
|
691
|
+
Add(level, first_sst, smallest, largest, file_size, first_blob);
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
{
|
|
695
|
+
constexpr char smallest[] = "bar2";
|
|
696
|
+
constexpr char largest[] = "foo2";
|
|
697
|
+
constexpr uint64_t file_size = 2000;
|
|
698
|
+
|
|
699
|
+
Add(level, second_sst, smallest, largest, file_size, first_blob);
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
{
|
|
703
|
+
constexpr char smallest[] = "bar3";
|
|
704
|
+
constexpr char largest[] = "foo3";
|
|
705
|
+
constexpr uint64_t file_size = 3000;
|
|
706
|
+
|
|
707
|
+
Add(level, third_sst, smallest, largest, file_size, third_blob);
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
{
|
|
711
|
+
constexpr uint64_t total_blob_count = 10;
|
|
712
|
+
constexpr uint64_t total_blob_bytes = 100000;
|
|
713
|
+
constexpr uint64_t garbage_blob_count = 2;
|
|
714
|
+
constexpr uint64_t garbage_blob_bytes = 15000;
|
|
715
|
+
|
|
716
|
+
AddBlob(first_blob, total_blob_count, total_blob_bytes,
|
|
717
|
+
BlobFileMetaData::LinkedSsts{first_sst, second_sst},
|
|
718
|
+
garbage_blob_count, garbage_blob_bytes);
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
{
|
|
722
|
+
constexpr uint64_t total_blob_count = 4;
|
|
723
|
+
constexpr uint64_t total_blob_bytes = 400000;
|
|
724
|
+
constexpr uint64_t garbage_blob_count = 3;
|
|
725
|
+
constexpr uint64_t garbage_blob_bytes = 235000;
|
|
726
|
+
|
|
727
|
+
AddBlob(second_blob, total_blob_count, total_blob_bytes,
|
|
728
|
+
BlobFileMetaData::LinkedSsts{}, garbage_blob_count,
|
|
729
|
+
garbage_blob_bytes);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
{
|
|
733
|
+
constexpr uint64_t total_blob_count = 20;
|
|
734
|
+
constexpr uint64_t total_blob_bytes = 1000000;
|
|
735
|
+
constexpr uint64_t garbage_blob_count = 8;
|
|
736
|
+
constexpr uint64_t garbage_blob_bytes = 123456;
|
|
737
|
+
|
|
738
|
+
AddBlob(third_blob, total_blob_count, total_blob_bytes,
|
|
739
|
+
BlobFileMetaData::LinkedSsts{third_sst}, garbage_blob_count,
|
|
740
|
+
garbage_blob_bytes);
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
{
|
|
744
|
+
constexpr uint64_t total_blob_count = 128;
|
|
745
|
+
constexpr uint64_t total_blob_bytes = 789012345;
|
|
746
|
+
constexpr uint64_t garbage_blob_count = 67;
|
|
747
|
+
constexpr uint64_t garbage_blob_bytes = 88888888;
|
|
748
|
+
|
|
749
|
+
AddBlob(fourth_blob, total_blob_count, total_blob_bytes,
|
|
750
|
+
BlobFileMetaData::LinkedSsts{}, garbage_blob_count,
|
|
751
|
+
garbage_blob_bytes);
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
UpdateVersionStorageInfo();
|
|
755
|
+
|
|
756
|
+
assert(vstorage_.num_levels() > 0);
|
|
757
|
+
const auto& level_files = vstorage_.LevelFiles(level);
|
|
758
|
+
|
|
759
|
+
assert(level_files.size() == 3);
|
|
760
|
+
assert(level_files[0] && level_files[0]->fd.GetNumber() == first_sst);
|
|
761
|
+
assert(level_files[1] && level_files[1]->fd.GetNumber() == second_sst);
|
|
762
|
+
assert(level_files[2] && level_files[2]->fd.GetNumber() == third_sst);
|
|
763
|
+
|
|
764
|
+
// No blob files eligible for GC due to the age cutoff
|
|
765
|
+
|
|
766
|
+
{
|
|
767
|
+
constexpr double age_cutoff = 0.1;
|
|
768
|
+
constexpr double force_threshold = 0.0;
|
|
769
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
770
|
+
|
|
771
|
+
ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
// Part of the oldest batch of blob files (specifically, the second file) is
|
|
775
|
+
// ineligible for GC due to the age cutoff
|
|
776
|
+
|
|
777
|
+
{
|
|
778
|
+
constexpr double age_cutoff = 0.25;
|
|
779
|
+
constexpr double force_threshold = 0.0;
|
|
780
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
781
|
+
|
|
782
|
+
ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
// Oldest batch is eligible based on age cutoff but its overall garbage ratio
|
|
786
|
+
// is below threshold
|
|
787
|
+
|
|
788
|
+
{
|
|
789
|
+
constexpr double age_cutoff = 0.5;
|
|
790
|
+
constexpr double force_threshold = 0.6;
|
|
791
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
792
|
+
|
|
793
|
+
ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
// Oldest batch is eligible based on age cutoff and its overall garbage ratio
|
|
797
|
+
// meets threshold
|
|
798
|
+
|
|
799
|
+
{
|
|
800
|
+
constexpr double age_cutoff = 0.5;
|
|
801
|
+
constexpr double force_threshold = 0.5;
|
|
802
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
803
|
+
|
|
804
|
+
auto ssts_to_be_compacted = vstorage_.FilesMarkedForForcedBlobGC();
|
|
805
|
+
ASSERT_EQ(ssts_to_be_compacted.size(), 2);
|
|
806
|
+
|
|
807
|
+
std::sort(ssts_to_be_compacted.begin(), ssts_to_be_compacted.end(),
|
|
808
|
+
[](const std::pair<int, FileMetaData*>& lhs,
|
|
809
|
+
const std::pair<int, FileMetaData*>& rhs) {
|
|
810
|
+
assert(lhs.second);
|
|
811
|
+
assert(rhs.second);
|
|
812
|
+
return lhs.second->fd.GetNumber() < rhs.second->fd.GetNumber();
|
|
813
|
+
});
|
|
814
|
+
|
|
815
|
+
const autovector<std::pair<int, FileMetaData*>>
|
|
816
|
+
expected_ssts_to_be_compacted{{level, level_files[0]},
|
|
817
|
+
{level, level_files[1]}};
|
|
818
|
+
|
|
819
|
+
ASSERT_EQ(ssts_to_be_compacted[0], expected_ssts_to_be_compacted[0]);
|
|
820
|
+
ASSERT_EQ(ssts_to_be_compacted[1], expected_ssts_to_be_compacted[1]);
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
// Now try the last two cases again with a greater than necessary age cutoff
|
|
824
|
+
|
|
825
|
+
// Oldest batch is eligible based on age cutoff but its overall garbage ratio
|
|
826
|
+
// is below threshold
|
|
827
|
+
|
|
828
|
+
{
|
|
829
|
+
constexpr double age_cutoff = 0.75;
|
|
830
|
+
constexpr double force_threshold = 0.6;
|
|
831
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
832
|
+
|
|
833
|
+
ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
// Oldest batch is eligible based on age cutoff and its overall garbage ratio
|
|
837
|
+
// meets threshold
|
|
838
|
+
|
|
839
|
+
{
|
|
840
|
+
constexpr double age_cutoff = 0.75;
|
|
841
|
+
constexpr double force_threshold = 0.5;
|
|
842
|
+
vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
|
|
843
|
+
|
|
844
|
+
auto ssts_to_be_compacted = vstorage_.FilesMarkedForForcedBlobGC();
|
|
845
|
+
ASSERT_EQ(ssts_to_be_compacted.size(), 2);
|
|
846
|
+
|
|
847
|
+
std::sort(ssts_to_be_compacted.begin(), ssts_to_be_compacted.end(),
|
|
848
|
+
[](const std::pair<int, FileMetaData*>& lhs,
|
|
849
|
+
const std::pair<int, FileMetaData*>& rhs) {
|
|
850
|
+
assert(lhs.second);
|
|
851
|
+
assert(rhs.second);
|
|
852
|
+
return lhs.second->fd.GetNumber() < rhs.second->fd.GetNumber();
|
|
853
|
+
});
|
|
854
|
+
|
|
855
|
+
const autovector<std::pair<int, FileMetaData*>>
|
|
856
|
+
expected_ssts_to_be_compacted{{level, level_files[0]},
|
|
857
|
+
{level, level_files[1]}};
|
|
858
|
+
|
|
859
|
+
ASSERT_EQ(ssts_to_be_compacted[0], expected_ssts_to_be_compacted[0]);
|
|
860
|
+
ASSERT_EQ(ssts_to_be_compacted[1], expected_ssts_to_be_compacted[1]);
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
|
|
446
864
|
class VersionStorageInfoTimestampTest : public VersionStorageInfoTestBase {
|
|
447
865
|
public:
|
|
448
866
|
VersionStorageInfoTimestampTest()
|
|
449
|
-
: VersionStorageInfoTestBase(test::
|
|
867
|
+
: VersionStorageInfoTestBase(test::BytewiseComparatorWithU64TsWrapper()) {
|
|
868
|
+
}
|
|
450
869
|
~VersionStorageInfoTimestampTest() override {}
|
|
451
870
|
std::string Timestamp(uint64_t ts) const {
|
|
452
871
|
std::string ret;
|
|
@@ -477,8 +896,9 @@ TEST_F(VersionStorageInfoTimestampTest, GetOverlappingInputs) {
|
|
|
477
896
|
/*largest=*/
|
|
478
897
|
{PackUserKeyAndTimestamp("d", /*ts=*/1), /*s=*/0, kTypeValue},
|
|
479
898
|
/*file_size=*/100);
|
|
480
|
-
|
|
481
|
-
|
|
899
|
+
|
|
900
|
+
UpdateVersionStorageInfo();
|
|
901
|
+
|
|
482
902
|
ASSERT_EQ(
|
|
483
903
|
"1,2",
|
|
484
904
|
GetOverlappingFiles(
|
|
@@ -697,21 +1117,16 @@ class VersionSetTestBase {
|
|
|
697
1117
|
options_(),
|
|
698
1118
|
db_options_(options_),
|
|
699
1119
|
cf_options_(options_),
|
|
700
|
-
|
|
1120
|
+
immutable_options_(db_options_, cf_options_),
|
|
701
1121
|
mutable_cf_options_(cf_options_),
|
|
702
1122
|
table_cache_(NewLRUCache(50000, 16)),
|
|
703
1123
|
write_buffer_manager_(db_options_.db_write_buffer_size),
|
|
704
1124
|
shutting_down_(false),
|
|
705
1125
|
mock_table_factory_(std::make_shared<mock::MockTableFactory>()) {
|
|
706
|
-
|
|
707
|
-
if (
|
|
708
|
-
Status s = Env::LoadEnv(test_env_uri, &env_, &env_guard_);
|
|
709
|
-
EXPECT_OK(s);
|
|
710
|
-
} else if (getenv("MEM_ENV")) {
|
|
1126
|
+
EXPECT_OK(test::CreateEnvFromSystem(ConfigOptions(), &env_, &env_guard_));
|
|
1127
|
+
if (env_ == Env::Default() && getenv("MEM_ENV")) {
|
|
711
1128
|
env_guard_.reset(NewMemEnv(Env::Default()));
|
|
712
1129
|
env_ = env_guard_.get();
|
|
713
|
-
} else {
|
|
714
|
-
env_ = Env::Default();
|
|
715
1130
|
}
|
|
716
1131
|
EXPECT_NE(nullptr, env_);
|
|
717
1132
|
|
|
@@ -721,13 +1136,15 @@ class VersionSetTestBase {
|
|
|
721
1136
|
options_.env = env_;
|
|
722
1137
|
db_options_.env = env_;
|
|
723
1138
|
db_options_.fs = fs_;
|
|
724
|
-
|
|
725
|
-
|
|
1139
|
+
immutable_options_.env = env_;
|
|
1140
|
+
immutable_options_.fs = fs_;
|
|
1141
|
+
immutable_options_.clock = env_->GetSystemClock().get();
|
|
726
1142
|
|
|
727
1143
|
versions_.reset(
|
|
728
1144
|
new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
729
1145
|
&write_buffer_manager_, &write_controller_,
|
|
730
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
1146
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
1147
|
+
/*db_session_id*/ ""));
|
|
731
1148
|
reactive_versions_ = std::make_shared<ReactiveVersionSet>(
|
|
732
1149
|
dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
733
1150
|
&write_buffer_manager_, &write_controller_, nullptr);
|
|
@@ -783,13 +1200,13 @@ class VersionSetTestBase {
|
|
|
783
1200
|
}
|
|
784
1201
|
*last_seqno = last_seq;
|
|
785
1202
|
num_initial_edits_ = static_cast<int>(new_cfs.size() + 1);
|
|
1203
|
+
std::unique_ptr<WritableFileWriter> file_writer;
|
|
786
1204
|
const std::string manifest = DescriptorFileName(dbname_, 1);
|
|
787
|
-
|
|
788
|
-
Status s =
|
|
789
|
-
|
|
1205
|
+
const auto& fs = env_->GetFileSystem();
|
|
1206
|
+
Status s = WritableFileWriter::Create(
|
|
1207
|
+
fs, manifest, fs->OptimizeForManifestWrite(env_options_), &file_writer,
|
|
1208
|
+
nullptr);
|
|
790
1209
|
ASSERT_OK(s);
|
|
791
|
-
std::unique_ptr<WritableFileWriter> file_writer(new WritableFileWriter(
|
|
792
|
-
NewLegacyWritableFileWrapper(std::move(file)), manifest, env_options_));
|
|
793
1210
|
{
|
|
794
1211
|
log_writer->reset(new log::Writer(std::move(file_writer), 0, false));
|
|
795
1212
|
std::string record;
|
|
@@ -830,7 +1247,8 @@ class VersionSetTestBase {
|
|
|
830
1247
|
versions_.reset(
|
|
831
1248
|
new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
832
1249
|
&write_buffer_manager_, &write_controller_,
|
|
833
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
1250
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
1251
|
+
/*db_session_id*/ ""));
|
|
834
1252
|
EXPECT_OK(versions_->Recover(column_families_, false));
|
|
835
1253
|
}
|
|
836
1254
|
|
|
@@ -908,7 +1326,7 @@ class VersionSetTestBase {
|
|
|
908
1326
|
Options options_;
|
|
909
1327
|
ImmutableDBOptions db_options_;
|
|
910
1328
|
ColumnFamilyOptions cf_options_;
|
|
911
|
-
|
|
1329
|
+
ImmutableOptions immutable_options_;
|
|
912
1330
|
MutableCFOptions mutable_cf_options_;
|
|
913
1331
|
std::shared_ptr<Cache> table_cache_;
|
|
914
1332
|
WriteController write_controller_;
|
|
@@ -989,7 +1407,8 @@ TEST_F(VersionSetTest, PersistBlobFileStateInNewManifest) {
|
|
|
989
1407
|
constexpr uint64_t total_blob_bytes = 77777777;
|
|
990
1408
|
constexpr char checksum_method[] = "SHA1";
|
|
991
1409
|
constexpr char checksum_value[] =
|
|
992
|
-
"
|
|
1410
|
+
"\xbd\xb7\xf3\x4a\x59\xdf\xa1\x59\x2c\xe7\xf5\x2e\x99\xf9\x8c\x57\x0c"
|
|
1411
|
+
"\x52\x5c\xbd";
|
|
993
1412
|
|
|
994
1413
|
auto shared_meta = SharedBlobFileMetaData::Create(
|
|
995
1414
|
blob_file_number, total_blob_count, total_blob_bytes, checksum_method,
|
|
@@ -1010,7 +1429,7 @@ TEST_F(VersionSetTest, PersistBlobFileStateInNewManifest) {
|
|
|
1010
1429
|
constexpr uint64_t total_blob_count = 555;
|
|
1011
1430
|
constexpr uint64_t total_blob_bytes = 66666;
|
|
1012
1431
|
constexpr char checksum_method[] = "CRC32";
|
|
1013
|
-
constexpr char checksum_value[] = "
|
|
1432
|
+
constexpr char checksum_value[] = "\x3d\x87\xff\x57";
|
|
1014
1433
|
|
|
1015
1434
|
auto shared_meta = SharedBlobFileMetaData::Create(
|
|
1016
1435
|
blob_file_number, total_blob_count, total_blob_bytes, checksum_method,
|
|
@@ -1068,7 +1487,7 @@ TEST_F(VersionSetTest, AddLiveBlobFiles) {
|
|
|
1068
1487
|
constexpr uint64_t first_total_blob_count = 555;
|
|
1069
1488
|
constexpr uint64_t first_total_blob_bytes = 66666;
|
|
1070
1489
|
constexpr char first_checksum_method[] = "CRC32";
|
|
1071
|
-
constexpr char first_checksum_value[] = "
|
|
1490
|
+
constexpr char first_checksum_value[] = "\x3d\x87\xff\x57";
|
|
1072
1491
|
|
|
1073
1492
|
auto first_shared_meta = SharedBlobFileMetaData::Create(
|
|
1074
1493
|
first_blob_file_number, first_total_blob_count, first_total_blob_bytes,
|
|
@@ -1111,7 +1530,7 @@ TEST_F(VersionSetTest, AddLiveBlobFiles) {
|
|
|
1111
1530
|
constexpr uint64_t second_total_blob_count = 100;
|
|
1112
1531
|
constexpr uint64_t second_total_blob_bytes = 2000000;
|
|
1113
1532
|
constexpr char second_checksum_method[] = "CRC32B";
|
|
1114
|
-
constexpr char second_checksum_value[] = "
|
|
1533
|
+
constexpr char second_checksum_value[] = "\x6d\xbd\xf2\x3a";
|
|
1115
1534
|
|
|
1116
1535
|
auto second_shared_meta = SharedBlobFileMetaData::Create(
|
|
1117
1536
|
second_blob_file_number, second_total_blob_count, second_total_blob_bytes,
|
|
@@ -1151,7 +1570,7 @@ TEST_F(VersionSetTest, ObsoleteBlobFile) {
|
|
|
1151
1570
|
constexpr uint64_t total_blob_count = 555;
|
|
1152
1571
|
constexpr uint64_t total_blob_bytes = 66666;
|
|
1153
1572
|
constexpr char checksum_method[] = "CRC32";
|
|
1154
|
-
constexpr char checksum_value[] = "
|
|
1573
|
+
constexpr char checksum_value[] = "\x3d\x87\xff\x57";
|
|
1155
1574
|
|
|
1156
1575
|
edit.AddBlobFile(blob_file_number, total_blob_count, total_blob_bytes,
|
|
1157
1576
|
checksum_method, checksum_value);
|
|
@@ -1334,7 +1753,8 @@ TEST_F(VersionSetTest, WalAddition) {
|
|
|
1334
1753
|
std::unique_ptr<VersionSet> new_versions(
|
|
1335
1754
|
new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
1336
1755
|
&write_buffer_manager_, &write_controller_,
|
|
1337
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
1756
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
1757
|
+
/*db_session_id*/ ""));
|
|
1338
1758
|
ASSERT_OK(new_versions->Recover(column_families_, /*read_only=*/false));
|
|
1339
1759
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
1340
1760
|
ASSERT_EQ(wals.size(), 1);
|
|
@@ -1400,7 +1820,8 @@ TEST_F(VersionSetTest, WalCloseWithoutSync) {
|
|
|
1400
1820
|
std::unique_ptr<VersionSet> new_versions(
|
|
1401
1821
|
new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
1402
1822
|
&write_buffer_manager_, &write_controller_,
|
|
1403
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
1823
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
1824
|
+
/*db_session_id*/ ""));
|
|
1404
1825
|
ASSERT_OK(new_versions->Recover(column_families_, false));
|
|
1405
1826
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
1406
1827
|
ASSERT_EQ(wals.size(), 2);
|
|
@@ -1452,7 +1873,8 @@ TEST_F(VersionSetTest, WalDeletion) {
|
|
|
1452
1873
|
std::unique_ptr<VersionSet> new_versions(
|
|
1453
1874
|
new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
1454
1875
|
&write_buffer_manager_, &write_controller_,
|
|
1455
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
1876
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
1877
|
+
/*db_session_id*/ ""));
|
|
1456
1878
|
ASSERT_OK(new_versions->Recover(column_families_, false));
|
|
1457
1879
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
1458
1880
|
ASSERT_EQ(wals.size(), 1);
|
|
@@ -1489,7 +1911,8 @@ TEST_F(VersionSetTest, WalDeletion) {
|
|
|
1489
1911
|
std::unique_ptr<VersionSet> new_versions(
|
|
1490
1912
|
new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
1491
1913
|
&write_buffer_manager_, &write_controller_,
|
|
1492
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
1914
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
1915
|
+
/*db_session_id*/ ""));
|
|
1493
1916
|
ASSERT_OK(new_versions->Recover(column_families_, false));
|
|
1494
1917
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
1495
1918
|
ASSERT_EQ(wals.size(), 1);
|
|
@@ -1606,7 +2029,8 @@ TEST_F(VersionSetTest, DeleteWalsBeforeNonExistingWalNumber) {
|
|
|
1606
2029
|
std::unique_ptr<VersionSet> new_versions(
|
|
1607
2030
|
new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
1608
2031
|
&write_buffer_manager_, &write_controller_,
|
|
1609
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
2032
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2033
|
+
/*db_session_id*/ ""));
|
|
1610
2034
|
ASSERT_OK(new_versions->Recover(column_families_, false));
|
|
1611
2035
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
1612
2036
|
ASSERT_EQ(wals.size(), 1);
|
|
@@ -1641,7 +2065,8 @@ TEST_F(VersionSetTest, DeleteAllWals) {
|
|
|
1641
2065
|
std::unique_ptr<VersionSet> new_versions(
|
|
1642
2066
|
new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
1643
2067
|
&write_buffer_manager_, &write_controller_,
|
|
1644
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
2068
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2069
|
+
/*db_session_id*/ ""));
|
|
1645
2070
|
ASSERT_OK(new_versions->Recover(column_families_, false));
|
|
1646
2071
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
1647
2072
|
ASSERT_EQ(wals.size(), 0);
|
|
@@ -1682,7 +2107,8 @@ TEST_F(VersionSetTest, AtomicGroupWithWalEdits) {
|
|
|
1682
2107
|
std::unique_ptr<VersionSet> new_versions(
|
|
1683
2108
|
new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
1684
2109
|
&write_buffer_manager_, &write_controller_,
|
|
1685
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
2110
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2111
|
+
/*db_session_id*/ ""));
|
|
1686
2112
|
std::string db_id;
|
|
1687
2113
|
ASSERT_OK(
|
|
1688
2114
|
new_versions->Recover(column_families_, /*read_only=*/false, &db_id));
|
|
@@ -1706,7 +2132,7 @@ class VersionSetWithTimestampTest : public VersionSetTest {
|
|
|
1706
2132
|
void SetUp() override {
|
|
1707
2133
|
NewDB();
|
|
1708
2134
|
Options options;
|
|
1709
|
-
options.comparator = test::
|
|
2135
|
+
options.comparator = test::BytewiseComparatorWithU64TsWrapper();
|
|
1710
2136
|
cfd_ = CreateColumnFamily(kNewCfName, options);
|
|
1711
2137
|
EXPECT_NE(nullptr, cfd_);
|
|
1712
2138
|
EXPECT_NE(nullptr, cfd_->GetLatestMutableCFOptions());
|
|
@@ -1735,7 +2161,8 @@ class VersionSetWithTimestampTest : public VersionSetTest {
|
|
|
1735
2161
|
std::unique_ptr<VersionSet> vset(
|
|
1736
2162
|
new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
|
|
1737
2163
|
&write_buffer_manager_, &write_controller_,
|
|
1738
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
2164
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2165
|
+
/*db_session_id*/ ""));
|
|
1739
2166
|
ASSERT_OK(vset->Recover(column_families_, /*read_only=*/false,
|
|
1740
2167
|
/*db_id=*/nullptr));
|
|
1741
2168
|
for (auto* cfd : *(vset->GetColumnFamilySet())) {
|
|
@@ -1880,15 +2307,8 @@ class VersionSetAtomicGroupTest : public VersionSetTestBase,
|
|
|
1880
2307
|
});
|
|
1881
2308
|
SyncPoint::GetInstance()->SetCallBack(
|
|
1882
2309
|
"VersionEditHandlerBase::Iterate:Finish", [&](void* arg) {
|
|
1883
|
-
num_recovered_edits_ = *reinterpret_cast<
|
|
2310
|
+
num_recovered_edits_ = *reinterpret_cast<size_t*>(arg);
|
|
1884
2311
|
});
|
|
1885
|
-
SyncPoint::GetInstance()->SetCallBack(
|
|
1886
|
-
"VersionSet::ReadAndRecover:RecoveredEdits", [&](void* arg) {
|
|
1887
|
-
num_recovered_edits_ = *reinterpret_cast<int*>(arg);
|
|
1888
|
-
});
|
|
1889
|
-
SyncPoint::GetInstance()->SetCallBack(
|
|
1890
|
-
"ReactiveVersionSet::ReadAndApply:AppliedEdits",
|
|
1891
|
-
[&](void* arg) { num_applied_edits_ = *reinterpret_cast<int*>(arg); });
|
|
1892
2312
|
SyncPoint::GetInstance()->SetCallBack(
|
|
1893
2313
|
"AtomicGroupReadBuffer::AddEdit:AtomicGroup",
|
|
1894
2314
|
[&](void* /* arg */) { ++num_edits_in_atomic_group_; });
|
|
@@ -1927,8 +2347,7 @@ class VersionSetAtomicGroupTest : public VersionSetTestBase,
|
|
|
1927
2347
|
bool first_in_atomic_group_ = false;
|
|
1928
2348
|
bool last_in_atomic_group_ = false;
|
|
1929
2349
|
int num_edits_in_atomic_group_ = 0;
|
|
1930
|
-
|
|
1931
|
-
int num_applied_edits_ = 0;
|
|
2350
|
+
size_t num_recovered_edits_ = 0;
|
|
1932
2351
|
VersionEdit corrupted_edit_;
|
|
1933
2352
|
VersionEdit edit_with_incorrect_group_size_;
|
|
1934
2353
|
std::unique_ptr<log::Writer> log_writer_;
|
|
@@ -1944,7 +2363,6 @@ TEST_F(VersionSetAtomicGroupTest, HandleValidAtomicGroupWithVersionSetRecover) {
|
|
|
1944
2363
|
EXPECT_TRUE(first_in_atomic_group_);
|
|
1945
2364
|
EXPECT_TRUE(last_in_atomic_group_);
|
|
1946
2365
|
EXPECT_EQ(num_initial_edits_ + kAtomicGroupSize, num_recovered_edits_);
|
|
1947
|
-
EXPECT_EQ(0, num_applied_edits_);
|
|
1948
2366
|
}
|
|
1949
2367
|
|
|
1950
2368
|
TEST_F(VersionSetAtomicGroupTest,
|
|
@@ -1966,7 +2384,6 @@ TEST_F(VersionSetAtomicGroupTest,
|
|
|
1966
2384
|
EXPECT_TRUE(reactive_versions_->TEST_read_edits_in_atomic_group() == 0);
|
|
1967
2385
|
EXPECT_TRUE(reactive_versions_->replay_buffer().size() == 0);
|
|
1968
2386
|
EXPECT_EQ(num_initial_edits_ + kAtomicGroupSize, num_recovered_edits_);
|
|
1969
|
-
EXPECT_EQ(0, num_applied_edits_);
|
|
1970
2387
|
}
|
|
1971
2388
|
|
|
1972
2389
|
TEST_F(VersionSetAtomicGroupTest,
|
|
@@ -1979,20 +2396,20 @@ TEST_F(VersionSetAtomicGroupTest,
|
|
|
1979
2396
|
EXPECT_OK(reactive_versions_->Recover(column_families_, &manifest_reader,
|
|
1980
2397
|
&manifest_reporter,
|
|
1981
2398
|
&manifest_reader_status));
|
|
2399
|
+
EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
|
|
1982
2400
|
AddNewEditsToLog(kAtomicGroupSize);
|
|
1983
2401
|
InstrumentedMutex mu;
|
|
1984
2402
|
std::unordered_set<ColumnFamilyData*> cfds_changed;
|
|
1985
2403
|
mu.Lock();
|
|
1986
|
-
EXPECT_OK(
|
|
1987
|
-
|
|
2404
|
+
EXPECT_OK(reactive_versions_->ReadAndApply(
|
|
2405
|
+
&mu, &manifest_reader, manifest_reader_status.get(), &cfds_changed));
|
|
1988
2406
|
mu.Unlock();
|
|
1989
2407
|
EXPECT_TRUE(first_in_atomic_group_);
|
|
1990
2408
|
EXPECT_TRUE(last_in_atomic_group_);
|
|
1991
2409
|
// The recover should clean up the replay buffer.
|
|
1992
2410
|
EXPECT_TRUE(reactive_versions_->TEST_read_edits_in_atomic_group() == 0);
|
|
1993
2411
|
EXPECT_TRUE(reactive_versions_->replay_buffer().size() == 0);
|
|
1994
|
-
EXPECT_EQ(
|
|
1995
|
-
EXPECT_EQ(kAtomicGroupSize, num_applied_edits_);
|
|
2412
|
+
EXPECT_EQ(kAtomicGroupSize, num_recovered_edits_);
|
|
1996
2413
|
}
|
|
1997
2414
|
|
|
1998
2415
|
TEST_F(VersionSetAtomicGroupTest,
|
|
@@ -2008,7 +2425,6 @@ TEST_F(VersionSetAtomicGroupTest,
|
|
|
2008
2425
|
EXPECT_FALSE(last_in_atomic_group_);
|
|
2009
2426
|
EXPECT_EQ(kNumberOfPersistedVersionEdits, num_edits_in_atomic_group_);
|
|
2010
2427
|
EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
|
|
2011
|
-
EXPECT_EQ(0, num_applied_edits_);
|
|
2012
2428
|
}
|
|
2013
2429
|
|
|
2014
2430
|
TEST_F(VersionSetAtomicGroupTest,
|
|
@@ -2040,14 +2456,13 @@ TEST_F(VersionSetAtomicGroupTest,
|
|
|
2040
2456
|
InstrumentedMutex mu;
|
|
2041
2457
|
std::unordered_set<ColumnFamilyData*> cfds_changed;
|
|
2042
2458
|
mu.Lock();
|
|
2043
|
-
EXPECT_OK(
|
|
2044
|
-
|
|
2459
|
+
EXPECT_OK(reactive_versions_->ReadAndApply(
|
|
2460
|
+
&mu, &manifest_reader, manifest_reader_status.get(), &cfds_changed));
|
|
2045
2461
|
mu.Unlock();
|
|
2046
2462
|
// Reactive version set should be empty now.
|
|
2047
2463
|
EXPECT_TRUE(reactive_versions_->TEST_read_edits_in_atomic_group() == 0);
|
|
2048
2464
|
EXPECT_TRUE(reactive_versions_->replay_buffer().size() == 0);
|
|
2049
2465
|
EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
|
|
2050
|
-
EXPECT_EQ(kAtomicGroupSize, num_applied_edits_);
|
|
2051
2466
|
}
|
|
2052
2467
|
|
|
2053
2468
|
TEST_F(VersionSetAtomicGroupTest,
|
|
@@ -2064,13 +2479,14 @@ TEST_F(VersionSetAtomicGroupTest,
|
|
|
2064
2479
|
&manifest_reader_status));
|
|
2065
2480
|
EXPECT_EQ(column_families_.size(),
|
|
2066
2481
|
reactive_versions_->GetColumnFamilySet()->NumberOfColumnFamilies());
|
|
2482
|
+
EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
|
|
2067
2483
|
// Write a few edits in an atomic group.
|
|
2068
2484
|
AddNewEditsToLog(kNumberOfPersistedVersionEdits);
|
|
2069
2485
|
InstrumentedMutex mu;
|
|
2070
2486
|
std::unordered_set<ColumnFamilyData*> cfds_changed;
|
|
2071
2487
|
mu.Lock();
|
|
2072
|
-
EXPECT_OK(
|
|
2073
|
-
|
|
2488
|
+
EXPECT_OK(reactive_versions_->ReadAndApply(
|
|
2489
|
+
&mu, &manifest_reader, manifest_reader_status.get(), &cfds_changed));
|
|
2074
2490
|
mu.Unlock();
|
|
2075
2491
|
EXPECT_TRUE(first_in_atomic_group_);
|
|
2076
2492
|
EXPECT_FALSE(last_in_atomic_group_);
|
|
@@ -2079,8 +2495,6 @@ TEST_F(VersionSetAtomicGroupTest,
|
|
|
2079
2495
|
EXPECT_TRUE(reactive_versions_->TEST_read_edits_in_atomic_group() ==
|
|
2080
2496
|
kNumberOfPersistedVersionEdits);
|
|
2081
2497
|
EXPECT_TRUE(reactive_versions_->replay_buffer().size() == kAtomicGroupSize);
|
|
2082
|
-
EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
|
|
2083
|
-
EXPECT_EQ(0, num_applied_edits_);
|
|
2084
2498
|
}
|
|
2085
2499
|
|
|
2086
2500
|
TEST_F(VersionSetAtomicGroupTest,
|
|
@@ -2127,8 +2541,8 @@ TEST_F(VersionSetAtomicGroupTest,
|
|
|
2127
2541
|
// Write the corrupted edits.
|
|
2128
2542
|
AddNewEditsToLog(kAtomicGroupSize);
|
|
2129
2543
|
mu.Lock();
|
|
2130
|
-
EXPECT_NOK(
|
|
2131
|
-
|
|
2544
|
+
EXPECT_NOK(reactive_versions_->ReadAndApply(
|
|
2545
|
+
&mu, &manifest_reader, manifest_reader_status.get(), &cfds_changed));
|
|
2132
2546
|
mu.Unlock();
|
|
2133
2547
|
EXPECT_EQ(edits_[kAtomicGroupSize / 2].DebugString(),
|
|
2134
2548
|
corrupted_edit_.DebugString());
|
|
@@ -2177,8 +2591,8 @@ TEST_F(VersionSetAtomicGroupTest,
|
|
|
2177
2591
|
&manifest_reader_status));
|
|
2178
2592
|
AddNewEditsToLog(kAtomicGroupSize);
|
|
2179
2593
|
mu.Lock();
|
|
2180
|
-
EXPECT_NOK(
|
|
2181
|
-
|
|
2594
|
+
EXPECT_NOK(reactive_versions_->ReadAndApply(
|
|
2595
|
+
&mu, &manifest_reader, manifest_reader_status.get(), &cfds_changed));
|
|
2182
2596
|
mu.Unlock();
|
|
2183
2597
|
EXPECT_EQ(edits_[1].DebugString(),
|
|
2184
2598
|
edit_with_incorrect_group_size_.DebugString());
|
|
@@ -2312,14 +2726,13 @@ class EmptyDefaultCfNewManifest : public VersionSetTestBase,
|
|
|
2312
2726
|
assert(log_writer != nullptr);
|
|
2313
2727
|
VersionEdit new_db;
|
|
2314
2728
|
new_db.SetLogNumber(0);
|
|
2315
|
-
std::unique_ptr<WritableFile> file;
|
|
2316
2729
|
const std::string manifest_path = DescriptorFileName(dbname_, 1);
|
|
2317
|
-
|
|
2318
|
-
|
|
2730
|
+
const auto& fs = env_->GetFileSystem();
|
|
2731
|
+
std::unique_ptr<WritableFileWriter> file_writer;
|
|
2732
|
+
Status s = WritableFileWriter::Create(
|
|
2733
|
+
fs, manifest_path, fs->OptimizeForManifestWrite(env_options_),
|
|
2734
|
+
&file_writer, nullptr);
|
|
2319
2735
|
ASSERT_OK(s);
|
|
2320
|
-
std::unique_ptr<WritableFileWriter> file_writer(
|
|
2321
|
-
new WritableFileWriter(NewLegacyWritableFileWrapper(std::move(file)),
|
|
2322
|
-
manifest_path, env_options_));
|
|
2323
2736
|
log_writer->reset(new log::Writer(std::move(file_writer), 0, true));
|
|
2324
2737
|
std::string record;
|
|
2325
2738
|
ASSERT_TRUE(new_db.EncodeTo(&record));
|
|
@@ -2387,13 +2800,12 @@ class VersionSetTestEmptyDb
|
|
|
2387
2800
|
new_db.SetDBId(db_id);
|
|
2388
2801
|
}
|
|
2389
2802
|
const std::string manifest_path = DescriptorFileName(dbname_, 1);
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2803
|
+
const auto& fs = env_->GetFileSystem();
|
|
2804
|
+
std::unique_ptr<WritableFileWriter> file_writer;
|
|
2805
|
+
Status s = WritableFileWriter::Create(
|
|
2806
|
+
fs, manifest_path, fs->OptimizeForManifestWrite(env_options_),
|
|
2807
|
+
&file_writer, nullptr);
|
|
2393
2808
|
ASSERT_OK(s);
|
|
2394
|
-
std::unique_ptr<WritableFileWriter> file_writer(
|
|
2395
|
-
new WritableFileWriter(NewLegacyWritableFileWrapper(std::move(file)),
|
|
2396
|
-
manifest_path, env_options_));
|
|
2397
2809
|
{
|
|
2398
2810
|
log_writer->reset(new log::Writer(std::move(file_writer), 0, false));
|
|
2399
2811
|
std::string record;
|
|
@@ -2437,6 +2849,7 @@ TEST_P(VersionSetTestEmptyDb, OpenFromIncompleteManifest0) {
|
|
|
2437
2849
|
if (iter == cf_names.end()) {
|
|
2438
2850
|
ASSERT_TRUE(s.IsInvalidArgument());
|
|
2439
2851
|
} else {
|
|
2852
|
+
ASSERT_NE(s.ToString().find(manifest_path), std::string::npos);
|
|
2440
2853
|
ASSERT_TRUE(s.IsCorruption());
|
|
2441
2854
|
}
|
|
2442
2855
|
}
|
|
@@ -2478,6 +2891,7 @@ TEST_P(VersionSetTestEmptyDb, OpenFromIncompleteManifest1) {
|
|
|
2478
2891
|
if (iter == cf_names.end()) {
|
|
2479
2892
|
ASSERT_TRUE(s.IsInvalidArgument());
|
|
2480
2893
|
} else {
|
|
2894
|
+
ASSERT_NE(s.ToString().find(manifest_path), std::string::npos);
|
|
2481
2895
|
ASSERT_TRUE(s.IsCorruption());
|
|
2482
2896
|
}
|
|
2483
2897
|
}
|
|
@@ -2524,6 +2938,7 @@ TEST_P(VersionSetTestEmptyDb, OpenFromInCompleteManifest2) {
|
|
|
2524
2938
|
if (iter == cf_names.end()) {
|
|
2525
2939
|
ASSERT_TRUE(s.IsInvalidArgument());
|
|
2526
2940
|
} else {
|
|
2941
|
+
ASSERT_NE(s.ToString().find(manifest_path), std::string::npos);
|
|
2527
2942
|
ASSERT_TRUE(s.IsCorruption());
|
|
2528
2943
|
}
|
|
2529
2944
|
}
|
|
@@ -2581,6 +2996,7 @@ TEST_P(VersionSetTestEmptyDb, OpenManifestWithUnknownCF) {
|
|
|
2581
2996
|
if (iter == cf_names.end()) {
|
|
2582
2997
|
ASSERT_TRUE(s.IsInvalidArgument());
|
|
2583
2998
|
} else {
|
|
2999
|
+
ASSERT_NE(s.ToString().find(manifest_path), std::string::npos);
|
|
2584
3000
|
ASSERT_TRUE(s.IsCorruption());
|
|
2585
3001
|
}
|
|
2586
3002
|
}
|
|
@@ -2697,12 +3113,12 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
|
|
|
2697
3113
|
assert(last_seqno != nullptr);
|
|
2698
3114
|
assert(log_writer != nullptr);
|
|
2699
3115
|
const std::string manifest = DescriptorFileName(dbname_, 1);
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
3116
|
+
const auto& fs = env_->GetFileSystem();
|
|
3117
|
+
std::unique_ptr<WritableFileWriter> file_writer;
|
|
3118
|
+
Status s = WritableFileWriter::Create(
|
|
3119
|
+
fs, manifest, fs->OptimizeForManifestWrite(env_options_), &file_writer,
|
|
3120
|
+
nullptr);
|
|
2703
3121
|
ASSERT_OK(s);
|
|
2704
|
-
std::unique_ptr<WritableFileWriter> file_writer(new WritableFileWriter(
|
|
2705
|
-
NewLegacyWritableFileWrapper(std::move(file)), manifest, env_options_));
|
|
2706
3122
|
log_writer->reset(new log::Writer(std::move(file_writer), 0, false));
|
|
2707
3123
|
VersionEdit new_db;
|
|
2708
3124
|
if (db_options_.write_dbid_to_manifest) {
|
|
@@ -2786,18 +3202,17 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
|
|
|
2786
3202
|
std::unique_ptr<FSWritableFile> file;
|
|
2787
3203
|
Status s = fs_->NewWritableFile(fname, FileOptions(), &file, nullptr);
|
|
2788
3204
|
ASSERT_OK(s);
|
|
2789
|
-
std::unique_ptr<WritableFileWriter> fwriter(
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
int_tbl_prop_collector_factories;
|
|
3205
|
+
std::unique_ptr<WritableFileWriter> fwriter(new WritableFileWriter(
|
|
3206
|
+
std::move(file), fname, FileOptions(), env_->GetSystemClock().get()));
|
|
3207
|
+
IntTblPropCollectorFactories int_tbl_prop_collector_factories;
|
|
2793
3208
|
|
|
2794
3209
|
std::unique_ptr<TableBuilder> builder(table_factory_->NewTableBuilder(
|
|
2795
3210
|
TableBuilderOptions(
|
|
2796
|
-
|
|
3211
|
+
immutable_options_, mutable_cf_options_, *internal_comparator_,
|
|
2797
3212
|
&int_tbl_prop_collector_factories, kNoCompression,
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
3213
|
+
CompressionOptions(),
|
|
3214
|
+
TablePropertiesCollectorFactory::Context::kUnknownColumnFamily,
|
|
3215
|
+
info.column_family, info.level),
|
|
2801
3216
|
fwriter.get()));
|
|
2802
3217
|
InternalKey ikey(info.key, 0, ValueType::kTypeValue);
|
|
2803
3218
|
builder->Add(ikey.Encode(), "value");
|
|
@@ -2807,11 +3222,11 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
|
|
|
2807
3222
|
s = fs_->GetFileSize(fname, IOOptions(), &file_size, nullptr);
|
|
2808
3223
|
ASSERT_OK(s);
|
|
2809
3224
|
ASSERT_NE(0, file_size);
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
3225
|
+
file_metas->emplace_back(file_num, /*file_path_id=*/0, file_size, ikey,
|
|
3226
|
+
ikey, 0, 0, false, Temperature::kUnknown, 0, 0,
|
|
3227
|
+
0, kUnknownFileChecksum,
|
|
3228
|
+
kUnknownFileChecksumFuncName,
|
|
3229
|
+
kDisableUserTimestamp, kDisableUserTimestamp);
|
|
2815
3230
|
}
|
|
2816
3231
|
}
|
|
2817
3232
|
|
|
@@ -2863,10 +3278,11 @@ TEST_F(VersionSetTestMissingFiles, ManifestFarBehindSst) {
|
|
|
2863
3278
|
std::string largest_ukey = "b";
|
|
2864
3279
|
InternalKey smallest_ikey(smallest_ukey, 1, ValueType::kTypeValue);
|
|
2865
3280
|
InternalKey largest_ikey(largest_ukey, 1, ValueType::kTypeValue);
|
|
2866
|
-
FileMetaData meta =
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
3281
|
+
FileMetaData meta = FileMetaData(
|
|
3282
|
+
file_num, /*file_path_id=*/0, /*file_size=*/12, smallest_ikey,
|
|
3283
|
+
largest_ikey, 0, 0, false, Temperature::kUnknown, 0, 0, 0,
|
|
3284
|
+
kUnknownFileChecksum, kUnknownFileChecksumFuncName,
|
|
3285
|
+
kDisableUserTimestamp, kDisableUserTimestamp);
|
|
2870
3286
|
added_files.emplace_back(0, meta);
|
|
2871
3287
|
}
|
|
2872
3288
|
WriteFileAdditionAndDeletionToManifest(
|
|
@@ -2918,10 +3334,11 @@ TEST_F(VersionSetTestMissingFiles, ManifestAheadofSst) {
|
|
|
2918
3334
|
std::string largest_ukey = "b";
|
|
2919
3335
|
InternalKey smallest_ikey(smallest_ukey, 1, ValueType::kTypeValue);
|
|
2920
3336
|
InternalKey largest_ikey(largest_ukey, 1, ValueType::kTypeValue);
|
|
2921
|
-
FileMetaData meta =
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
3337
|
+
FileMetaData meta = FileMetaData(
|
|
3338
|
+
file_num, /*file_path_id=*/0, /*file_size=*/12, smallest_ikey,
|
|
3339
|
+
largest_ikey, 0, 0, false, Temperature::kUnknown, 0, 0, 0,
|
|
3340
|
+
kUnknownFileChecksum, kUnknownFileChecksumFuncName,
|
|
3341
|
+
kDisableUserTimestamp, kDisableUserTimestamp);
|
|
2925
3342
|
added_files.emplace_back(0, meta);
|
|
2926
3343
|
}
|
|
2927
3344
|
WriteFileAdditionAndDeletionToManifest(
|
|
@@ -3007,6 +3424,7 @@ TEST_F(VersionSetTestMissingFiles, NoFileMissing) {
|
|
|
3007
3424
|
}
|
|
3008
3425
|
|
|
3009
3426
|
TEST_F(VersionSetTestMissingFiles, MinLogNumberToKeep2PC) {
|
|
3427
|
+
db_options_.allow_2pc = true;
|
|
3010
3428
|
NewDB();
|
|
3011
3429
|
|
|
3012
3430
|
SstInfo sst(100, kDefaultColumnFamilyName, "a");
|
|
@@ -3018,12 +3436,12 @@ TEST_F(VersionSetTestMissingFiles, MinLogNumberToKeep2PC) {
|
|
|
3018
3436
|
edit.AddFile(0, file_metas[0]);
|
|
3019
3437
|
edit.SetMinLogNumberToKeep(kMinWalNumberToKeep2PC);
|
|
3020
3438
|
ASSERT_OK(LogAndApplyToDefaultCF(edit));
|
|
3021
|
-
ASSERT_EQ(versions_->
|
|
3439
|
+
ASSERT_EQ(versions_->min_log_number_to_keep(), kMinWalNumberToKeep2PC);
|
|
3022
3440
|
|
|
3023
3441
|
for (int i = 0; i < 3; i++) {
|
|
3024
3442
|
CreateNewManifest();
|
|
3025
3443
|
ReopenDB();
|
|
3026
|
-
ASSERT_EQ(versions_->
|
|
3444
|
+
ASSERT_EQ(versions_->min_log_number_to_keep(), kMinWalNumberToKeep2PC);
|
|
3027
3445
|
}
|
|
3028
3446
|
}
|
|
3029
3447
|
|