@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
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
#include <vector>
|
|
21
21
|
|
|
22
22
|
#include "db/column_family.h"
|
|
23
|
+
#include "db/compaction/compaction_iterator.h"
|
|
23
24
|
#include "db/compaction/compaction_job.h"
|
|
24
|
-
#include "db/dbformat.h"
|
|
25
25
|
#include "db/error_handler.h"
|
|
26
26
|
#include "db/event_helpers.h"
|
|
27
27
|
#include "db/external_sst_file_ingestion_job.h"
|
|
@@ -50,13 +50,16 @@
|
|
|
50
50
|
#include "rocksdb/env.h"
|
|
51
51
|
#include "rocksdb/memtablerep.h"
|
|
52
52
|
#include "rocksdb/status.h"
|
|
53
|
+
#ifndef ROCKSDB_LITE
|
|
53
54
|
#include "rocksdb/trace_reader_writer.h"
|
|
55
|
+
#endif // ROCKSDB_LITE
|
|
54
56
|
#include "rocksdb/transaction_log.h"
|
|
57
|
+
#ifndef ROCKSDB_LITE
|
|
58
|
+
#include "rocksdb/utilities/replayer.h"
|
|
59
|
+
#endif // ROCKSDB_LITE
|
|
55
60
|
#include "rocksdb/write_buffer_manager.h"
|
|
61
|
+
#include "table/merging_iterator.h"
|
|
56
62
|
#include "table/scoped_arena_iterator.h"
|
|
57
|
-
#include "trace_replay/block_cache_tracer.h"
|
|
58
|
-
#include "trace_replay/io_tracer.h"
|
|
59
|
-
#include "trace_replay/trace_replay.h"
|
|
60
63
|
#include "util/autovector.h"
|
|
61
64
|
#include "util/hash.h"
|
|
62
65
|
#include "util/repeatable_thread.h"
|
|
@@ -132,7 +135,8 @@ class Directories {
|
|
|
132
135
|
class DBImpl : public DB {
|
|
133
136
|
public:
|
|
134
137
|
DBImpl(const DBOptions& options, const std::string& dbname,
|
|
135
|
-
const bool seq_per_batch = false, const bool batch_per_txn = true
|
|
138
|
+
const bool seq_per_batch = false, const bool batch_per_txn = true,
|
|
139
|
+
bool read_only = false);
|
|
136
140
|
// No copying allowed
|
|
137
141
|
DBImpl(const DBImpl&) = delete;
|
|
138
142
|
void operator=(const DBImpl&) = delete;
|
|
@@ -142,24 +146,36 @@ class DBImpl : public DB {
|
|
|
142
146
|
// ---- Implementations of the DB interface ----
|
|
143
147
|
|
|
144
148
|
using DB::Resume;
|
|
145
|
-
|
|
149
|
+
Status Resume() override;
|
|
146
150
|
|
|
147
151
|
using DB::Put;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
Status Put(const WriteOptions& options, ColumnFamilyHandle* column_family,
|
|
153
|
+
const Slice& key, const Slice& value) override;
|
|
154
|
+
Status Put(const WriteOptions& options, ColumnFamilyHandle* column_family,
|
|
155
|
+
const Slice& key, const Slice& ts, const Slice& value) override;
|
|
156
|
+
|
|
151
157
|
using DB::Merge;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const Slice& value) override;
|
|
158
|
+
Status Merge(const WriteOptions& options, ColumnFamilyHandle* column_family,
|
|
159
|
+
const Slice& key, const Slice& value) override;
|
|
155
160
|
using DB::Delete;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
161
|
+
Status Delete(const WriteOptions& options, ColumnFamilyHandle* column_family,
|
|
162
|
+
const Slice& key) override;
|
|
163
|
+
Status Delete(const WriteOptions& options, ColumnFamilyHandle* column_family,
|
|
164
|
+
const Slice& key, const Slice& ts) override;
|
|
165
|
+
|
|
159
166
|
using DB::SingleDelete;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
167
|
+
Status SingleDelete(const WriteOptions& options,
|
|
168
|
+
ColumnFamilyHandle* column_family,
|
|
169
|
+
const Slice& key) override;
|
|
170
|
+
Status SingleDelete(const WriteOptions& options,
|
|
171
|
+
ColumnFamilyHandle* column_family, const Slice& key,
|
|
172
|
+
const Slice& ts) override;
|
|
173
|
+
|
|
174
|
+
using DB::DeleteRange;
|
|
175
|
+
Status DeleteRange(const WriteOptions& options,
|
|
176
|
+
ColumnFamilyHandle* column_family, const Slice& begin_key,
|
|
177
|
+
const Slice& end_key) override;
|
|
178
|
+
|
|
163
179
|
using DB::Write;
|
|
164
180
|
virtual Status Write(const WriteOptions& options,
|
|
165
181
|
WriteBatch* updates) override;
|
|
@@ -349,7 +365,15 @@ class DBImpl : public DB {
|
|
|
349
365
|
|
|
350
366
|
virtual SequenceNumber GetLatestSequenceNumber() const override;
|
|
351
367
|
|
|
352
|
-
|
|
368
|
+
// IncreaseFullHistoryTsLow(ColumnFamilyHandle*, std::string) will acquire
|
|
369
|
+
// and release db_mutex
|
|
370
|
+
Status IncreaseFullHistoryTsLow(ColumnFamilyHandle* column_family,
|
|
371
|
+
std::string ts_low) override;
|
|
372
|
+
|
|
373
|
+
// GetFullHistoryTsLow(ColumnFamilyHandle*, std::string*) will acquire and
|
|
374
|
+
// release db_mutex
|
|
375
|
+
Status GetFullHistoryTsLow(ColumnFamilyHandle* column_family,
|
|
376
|
+
std::string* ts_low) override;
|
|
353
377
|
|
|
354
378
|
virtual Status GetDbIdentity(std::string& identity) const override;
|
|
355
379
|
|
|
@@ -401,13 +425,18 @@ class DBImpl : public DB {
|
|
|
401
425
|
virtual Status GetLiveFilesChecksumInfo(
|
|
402
426
|
FileChecksumList* checksum_list) override;
|
|
403
427
|
|
|
428
|
+
virtual Status GetLiveFilesStorageInfo(
|
|
429
|
+
const LiveFilesStorageInfoOptions& opts,
|
|
430
|
+
std::vector<LiveFileStorageInfo>* files) override;
|
|
431
|
+
|
|
404
432
|
// Obtains the meta data of the specified column family of the DB.
|
|
405
|
-
// Status::NotFound() will be returned if the current DB does not have
|
|
406
|
-
// any column family match the specified name.
|
|
407
433
|
// TODO(yhchiang): output parameter is placed in the end in this codebase.
|
|
408
434
|
virtual void GetColumnFamilyMetaData(ColumnFamilyHandle* column_family,
|
|
409
435
|
ColumnFamilyMetaData* metadata) override;
|
|
410
436
|
|
|
437
|
+
void GetAllColumnFamilyMetaData(
|
|
438
|
+
std::vector<ColumnFamilyMetaData>* metadata) override;
|
|
439
|
+
|
|
411
440
|
Status SuggestCompactRange(ColumnFamilyHandle* column_family,
|
|
412
441
|
const Slice* begin, const Slice* end) override;
|
|
413
442
|
|
|
@@ -450,9 +479,10 @@ class DBImpl : public DB {
|
|
|
450
479
|
Status VerifyChecksumInternal(const ReadOptions& read_options,
|
|
451
480
|
bool use_file_checksum);
|
|
452
481
|
|
|
453
|
-
Status
|
|
454
|
-
|
|
455
|
-
|
|
482
|
+
Status VerifyFullFileChecksum(const std::string& file_checksum_expected,
|
|
483
|
+
const std::string& func_name_expected,
|
|
484
|
+
const std::string& fpath,
|
|
485
|
+
const ReadOptions& read_options);
|
|
456
486
|
|
|
457
487
|
using DB::StartTrace;
|
|
458
488
|
virtual Status StartTrace(
|
|
@@ -462,6 +492,12 @@ class DBImpl : public DB {
|
|
|
462
492
|
using DB::EndTrace;
|
|
463
493
|
virtual Status EndTrace() override;
|
|
464
494
|
|
|
495
|
+
using DB::NewDefaultReplayer;
|
|
496
|
+
virtual Status NewDefaultReplayer(
|
|
497
|
+
const std::vector<ColumnFamilyHandle*>& handles,
|
|
498
|
+
std::unique_ptr<TraceReader>&& reader,
|
|
499
|
+
std::unique_ptr<Replayer>* replayer) override;
|
|
500
|
+
|
|
465
501
|
using DB::StartBlockCacheTrace;
|
|
466
502
|
Status StartBlockCacheTrace(
|
|
467
503
|
const TraceOptions& options,
|
|
@@ -471,7 +507,7 @@ class DBImpl : public DB {
|
|
|
471
507
|
Status EndBlockCacheTrace() override;
|
|
472
508
|
|
|
473
509
|
using DB::StartIOTrace;
|
|
474
|
-
Status StartIOTrace(
|
|
510
|
+
Status StartIOTrace(const TraceOptions& options,
|
|
475
511
|
std::unique_ptr<TraceWriter>&& trace_writer) override;
|
|
476
512
|
|
|
477
513
|
using DB::EndIOTrace;
|
|
@@ -488,6 +524,7 @@ class DBImpl : public DB {
|
|
|
488
524
|
#endif // ROCKSDB_LITE
|
|
489
525
|
|
|
490
526
|
// ---- End of implementations of the DB interface ----
|
|
527
|
+
SystemClock* GetSystemClock() const;
|
|
491
528
|
|
|
492
529
|
struct GetImplOptions {
|
|
493
530
|
ColumnFamilyHandle* column_family = nullptr;
|
|
@@ -565,9 +602,15 @@ class DBImpl : public DB {
|
|
|
565
602
|
// in the memtables, including memtable history. If cache_only is false,
|
|
566
603
|
// SST files will also be checked.
|
|
567
604
|
//
|
|
605
|
+
// `key` should NOT have user-defined timestamp appended to user key even if
|
|
606
|
+
// timestamp is enabled.
|
|
607
|
+
//
|
|
568
608
|
// If a key is found, *found_record_for_key will be set to true and
|
|
569
609
|
// *seq will be set to the stored sequence number for the latest
|
|
570
|
-
// operation on this key or kMaxSequenceNumber if unknown.
|
|
610
|
+
// operation on this key or kMaxSequenceNumber if unknown. If user-defined
|
|
611
|
+
// timestamp is enabled for this column family and timestamp is not nullptr,
|
|
612
|
+
// then *timestamp will be set to the stored timestamp for the latest
|
|
613
|
+
// operation on this key.
|
|
571
614
|
// If no key is found, *found_record_for_key will be set to false.
|
|
572
615
|
//
|
|
573
616
|
// Note: If cache_only=false, it is possible for *seq to be set to 0 if
|
|
@@ -591,12 +634,15 @@ class DBImpl : public DB {
|
|
|
591
634
|
Status GetLatestSequenceForKey(SuperVersion* sv, const Slice& key,
|
|
592
635
|
bool cache_only,
|
|
593
636
|
SequenceNumber lower_bound_seq,
|
|
594
|
-
SequenceNumber* seq,
|
|
637
|
+
SequenceNumber* seq, std::string* timestamp,
|
|
595
638
|
bool* found_record_for_key,
|
|
596
|
-
bool* is_blob_index
|
|
639
|
+
bool* is_blob_index);
|
|
597
640
|
|
|
598
|
-
Status TraceIteratorSeek(const uint32_t& cf_id, const Slice& key
|
|
599
|
-
|
|
641
|
+
Status TraceIteratorSeek(const uint32_t& cf_id, const Slice& key,
|
|
642
|
+
const Slice& lower_bound, const Slice upper_bound);
|
|
643
|
+
Status TraceIteratorSeekForPrev(const uint32_t& cf_id, const Slice& key,
|
|
644
|
+
const Slice& lower_bound,
|
|
645
|
+
const Slice upper_bound);
|
|
600
646
|
#endif // ROCKSDB_LITE
|
|
601
647
|
|
|
602
648
|
// Similar to GetSnapshot(), but also lets the db know that this snapshot
|
|
@@ -617,7 +663,8 @@ class DBImpl : public DB {
|
|
|
617
663
|
const CompactRangeOptions& compact_range_options,
|
|
618
664
|
const Slice* begin, const Slice* end,
|
|
619
665
|
bool exclusive, bool disallow_trivial_move,
|
|
620
|
-
uint64_t max_file_num_to_ignore
|
|
666
|
+
uint64_t max_file_num_to_ignore,
|
|
667
|
+
const std::string& trim_ts);
|
|
621
668
|
|
|
622
669
|
// Return an internal iterator over the current state of the database.
|
|
623
670
|
// The keys of this iterator are internal keys (see format.h).
|
|
@@ -916,6 +963,13 @@ class DBImpl : public DB {
|
|
|
916
963
|
int max_entries_to_print,
|
|
917
964
|
std::string* out_str);
|
|
918
965
|
|
|
966
|
+
VersionSet* GetVersionSet() const { return versions_.get(); }
|
|
967
|
+
|
|
968
|
+
// Wait for any compaction
|
|
969
|
+
// We add a bool parameter to wait for unscheduledCompactions_ == 0, but this
|
|
970
|
+
// is only for the special test of CancelledCompactions
|
|
971
|
+
Status WaitForCompact(bool waitUnscheduled = false);
|
|
972
|
+
|
|
919
973
|
#ifndef NDEBUG
|
|
920
974
|
// Compact any files in the named level that overlap [*begin, *end]
|
|
921
975
|
Status TEST_CompactRange(int level, const Slice* begin, const Slice* end,
|
|
@@ -946,6 +1000,9 @@ class DBImpl : public DB {
|
|
|
946
1000
|
Status TEST_AtomicFlushMemTables(const autovector<ColumnFamilyData*>& cfds,
|
|
947
1001
|
const FlushOptions& flush_opts);
|
|
948
1002
|
|
|
1003
|
+
// Wait for background threads to complete scheduled work.
|
|
1004
|
+
Status TEST_WaitForBackgroundWork();
|
|
1005
|
+
|
|
949
1006
|
// Wait for memtable compaction
|
|
950
1007
|
Status TEST_WaitForFlushMemTable(ColumnFamilyHandle* column_family = nullptr);
|
|
951
1008
|
|
|
@@ -954,12 +1011,15 @@ class DBImpl : public DB {
|
|
|
954
1011
|
// is only for the special test of CancelledCompactions
|
|
955
1012
|
Status TEST_WaitForCompact(bool waitUnscheduled = false);
|
|
956
1013
|
|
|
1014
|
+
// Wait for any background purge
|
|
1015
|
+
Status TEST_WaitForPurge();
|
|
1016
|
+
|
|
957
1017
|
// Get the background error status
|
|
958
1018
|
Status TEST_GetBGError();
|
|
959
1019
|
|
|
960
1020
|
// Return the maximum overlapping data (in bytes) at next level for any
|
|
961
1021
|
// file at a level >= 1.
|
|
962
|
-
|
|
1022
|
+
uint64_t TEST_MaxNextLevelOverlappingBytes(
|
|
963
1023
|
ColumnFamilyHandle* column_family = nullptr);
|
|
964
1024
|
|
|
965
1025
|
// Return the current manifest file no.
|
|
@@ -971,8 +1031,10 @@ class DBImpl : public DB {
|
|
|
971
1031
|
// get total level0 file size. Only for testing.
|
|
972
1032
|
uint64_t TEST_GetLevel0TotalSize();
|
|
973
1033
|
|
|
974
|
-
void TEST_GetFilesMetaData(
|
|
975
|
-
|
|
1034
|
+
void TEST_GetFilesMetaData(
|
|
1035
|
+
ColumnFamilyHandle* column_family,
|
|
1036
|
+
std::vector<std::vector<FileMetaData>>* metadata,
|
|
1037
|
+
std::vector<std::shared_ptr<BlobFileMetaData>>* blob_metadata = nullptr);
|
|
976
1038
|
|
|
977
1039
|
void TEST_LockMutex();
|
|
978
1040
|
|
|
@@ -1018,8 +1080,6 @@ class DBImpl : public DB {
|
|
|
1018
1080
|
void TEST_WaitForStatsDumpRun(std::function<void()> callback) const;
|
|
1019
1081
|
size_t TEST_EstimateInMemoryStatsHistorySize() const;
|
|
1020
1082
|
|
|
1021
|
-
VersionSet* TEST_GetVersionSet() const { return versions_.get(); }
|
|
1022
|
-
|
|
1023
1083
|
uint64_t TEST_GetCurrentLogNumber() const {
|
|
1024
1084
|
InstrumentedMutexLock l(mutex());
|
|
1025
1085
|
assert(!logs_.empty());
|
|
@@ -1045,8 +1105,64 @@ class DBImpl : public DB {
|
|
|
1045
1105
|
// flush LOG out of application buffer
|
|
1046
1106
|
void FlushInfoLog();
|
|
1047
1107
|
|
|
1108
|
+
// Interface to block and signal the DB in case of stalling writes by
|
|
1109
|
+
// WriteBufferManager. Each DBImpl object contains ptr to WBMStallInterface.
|
|
1110
|
+
// When DB needs to be blocked or signalled by WriteBufferManager,
|
|
1111
|
+
// state_ is changed accordingly.
|
|
1112
|
+
class WBMStallInterface : public StallInterface {
|
|
1113
|
+
public:
|
|
1114
|
+
enum State {
|
|
1115
|
+
BLOCKED = 0,
|
|
1116
|
+
RUNNING,
|
|
1117
|
+
};
|
|
1118
|
+
|
|
1119
|
+
WBMStallInterface() : state_cv_(&state_mutex_) {
|
|
1120
|
+
MutexLock lock(&state_mutex_);
|
|
1121
|
+
state_ = State::RUNNING;
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
void SetState(State state) {
|
|
1125
|
+
MutexLock lock(&state_mutex_);
|
|
1126
|
+
state_ = state;
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
// Change the state_ to State::BLOCKED and wait until its state is
|
|
1130
|
+
// changed by WriteBufferManager. When stall is cleared, Signal() is
|
|
1131
|
+
// called to change the state and unblock the DB.
|
|
1132
|
+
void Block() override {
|
|
1133
|
+
MutexLock lock(&state_mutex_);
|
|
1134
|
+
while (state_ == State::BLOCKED) {
|
|
1135
|
+
TEST_SYNC_POINT("WBMStallInterface::BlockDB");
|
|
1136
|
+
state_cv_.Wait();
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
// Called from WriteBufferManager. This function changes the state_
|
|
1141
|
+
// to State::RUNNING indicating the stall is cleared and DB can proceed.
|
|
1142
|
+
void Signal() override {
|
|
1143
|
+
{
|
|
1144
|
+
MutexLock lock(&state_mutex_);
|
|
1145
|
+
state_ = State::RUNNING;
|
|
1146
|
+
}
|
|
1147
|
+
state_cv_.Signal();
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
private:
|
|
1151
|
+
// Conditional variable and mutex to block and
|
|
1152
|
+
// signal the DB during stalling process.
|
|
1153
|
+
port::Mutex state_mutex_;
|
|
1154
|
+
port::CondVar state_cv_;
|
|
1155
|
+
// state represting whether DB is running or blocked because of stall by
|
|
1156
|
+
// WriteBufferManager.
|
|
1157
|
+
State state_;
|
|
1158
|
+
};
|
|
1159
|
+
|
|
1160
|
+
static void TEST_ResetDbSessionIdGen();
|
|
1161
|
+
static std::string GenerateDbSessionId(Env* env);
|
|
1162
|
+
|
|
1048
1163
|
protected:
|
|
1049
1164
|
const std::string dbname_;
|
|
1165
|
+
// TODO(peterd): unify with VersionSet::db_id_
|
|
1050
1166
|
std::string db_id_;
|
|
1051
1167
|
// db_session_id_ is an identifier that gets reset
|
|
1052
1168
|
// every time the DB is opened
|
|
@@ -1072,11 +1188,22 @@ class DBImpl : public DB {
|
|
|
1072
1188
|
// WriteToWAL need different synchronization: log_empty_, alive_log_files_,
|
|
1073
1189
|
// logs_, logfile_number_. Refer to the definition of each variable below for
|
|
1074
1190
|
// more description.
|
|
1075
|
-
|
|
1191
|
+
//
|
|
1192
|
+
// `mutex_` can be a hot lock in some workloads, so it deserves dedicated
|
|
1193
|
+
// cachelines.
|
|
1194
|
+
mutable CacheAlignedInstrumentedMutex mutex_;
|
|
1076
1195
|
|
|
1077
1196
|
ColumnFamilyHandleImpl* default_cf_handle_;
|
|
1078
1197
|
InternalStats* default_cf_internal_stats_;
|
|
1079
1198
|
|
|
1199
|
+
// table_cache_ provides its own synchronization
|
|
1200
|
+
std::shared_ptr<Cache> table_cache_;
|
|
1201
|
+
|
|
1202
|
+
ErrorHandler error_handler_;
|
|
1203
|
+
|
|
1204
|
+
// Unified interface for logging events
|
|
1205
|
+
EventLogger event_logger_;
|
|
1206
|
+
|
|
1080
1207
|
// only used for dynamically adjusting max_total_wal_size. it is a sum of
|
|
1081
1208
|
// [write_buffer_size * max_write_buffer_number] over all column families
|
|
1082
1209
|
uint64_t max_total_in_memory_state_;
|
|
@@ -1107,6 +1234,49 @@ class DBImpl : public DB {
|
|
|
1107
1234
|
// Default: true
|
|
1108
1235
|
const bool batch_per_txn_;
|
|
1109
1236
|
|
|
1237
|
+
// Each flush or compaction gets its own job id. this counter makes sure
|
|
1238
|
+
// they're unique
|
|
1239
|
+
std::atomic<int> next_job_id_;
|
|
1240
|
+
|
|
1241
|
+
std::atomic<bool> shutting_down_;
|
|
1242
|
+
|
|
1243
|
+
// RecoveryContext struct stores the context about version edits along
|
|
1244
|
+
// with corresponding column_family_data and column_family_options.
|
|
1245
|
+
class RecoveryContext {
|
|
1246
|
+
public:
|
|
1247
|
+
~RecoveryContext() {
|
|
1248
|
+
for (auto& edit_list : edit_lists_) {
|
|
1249
|
+
for (auto* edit : edit_list) {
|
|
1250
|
+
delete edit;
|
|
1251
|
+
}
|
|
1252
|
+
edit_list.clear();
|
|
1253
|
+
}
|
|
1254
|
+
cfds_.clear();
|
|
1255
|
+
mutable_cf_opts_.clear();
|
|
1256
|
+
edit_lists_.clear();
|
|
1257
|
+
files_to_delete_.clear();
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
void UpdateVersionEdits(ColumnFamilyData* cfd, const VersionEdit& edit) {
|
|
1261
|
+
if (map_.find(cfd->GetID()) == map_.end()) {
|
|
1262
|
+
uint32_t size = static_cast<uint32_t>(map_.size());
|
|
1263
|
+
map_.emplace(cfd->GetID(), size);
|
|
1264
|
+
cfds_.emplace_back(cfd);
|
|
1265
|
+
mutable_cf_opts_.emplace_back(cfd->GetLatestMutableCFOptions());
|
|
1266
|
+
edit_lists_.emplace_back(autovector<VersionEdit*>());
|
|
1267
|
+
}
|
|
1268
|
+
uint32_t i = map_[cfd->GetID()];
|
|
1269
|
+
edit_lists_[i].emplace_back(new VersionEdit(edit));
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
std::unordered_map<uint32_t, uint32_t> map_; // cf_id to index;
|
|
1273
|
+
autovector<ColumnFamilyData*> cfds_;
|
|
1274
|
+
autovector<const MutableCFOptions*> mutable_cf_opts_;
|
|
1275
|
+
autovector<autovector<VersionEdit*>> edit_lists_;
|
|
1276
|
+
// files_to_delete_ contains sst files
|
|
1277
|
+
std::set<std::string> files_to_delete_;
|
|
1278
|
+
};
|
|
1279
|
+
|
|
1110
1280
|
// Except in DB::Open(), WriteOptionsFile can only be called when:
|
|
1111
1281
|
// Persist options to options file.
|
|
1112
1282
|
// If need_mutex_lock = false, the method will lock DB mutex.
|
|
@@ -1115,12 +1285,8 @@ class DBImpl : public DB {
|
|
|
1115
1285
|
|
|
1116
1286
|
Status CompactRangeInternal(const CompactRangeOptions& options,
|
|
1117
1287
|
ColumnFamilyHandle* column_family,
|
|
1118
|
-
const Slice* begin, const Slice* end
|
|
1119
|
-
|
|
1120
|
-
Status GetApproximateSizesInternal(const SizeApproximationOptions& options,
|
|
1121
|
-
ColumnFamilyHandle* column_family,
|
|
1122
|
-
const Range* range, int n,
|
|
1123
|
-
uint64_t* sizes);
|
|
1288
|
+
const Slice* begin, const Slice* end,
|
|
1289
|
+
const std::string& trim_ts);
|
|
1124
1290
|
|
|
1125
1291
|
// The following two functions can only be called when:
|
|
1126
1292
|
// 1. WriteThread::Writer::EnterUnbatched() is used.
|
|
@@ -1150,6 +1316,8 @@ class DBImpl : public DB {
|
|
|
1150
1316
|
#ifndef ROCKSDB_LITE
|
|
1151
1317
|
void NotifyOnExternalFileIngested(
|
|
1152
1318
|
ColumnFamilyData* cfd, const ExternalSstFileIngestionJob& ingestion_job);
|
|
1319
|
+
|
|
1320
|
+
Status FlushForGetLiveFiles();
|
|
1153
1321
|
#endif // !ROCKSDB_LITE
|
|
1154
1322
|
|
|
1155
1323
|
void NewThreadStatusCfInfo(ColumnFamilyData* cfd) const;
|
|
@@ -1225,16 +1393,19 @@ class DBImpl : public DB {
|
|
|
1225
1393
|
// be made to the descriptor are added to *edit.
|
|
1226
1394
|
// recovered_seq is set to less than kMaxSequenceNumber if the log's tail is
|
|
1227
1395
|
// skipped.
|
|
1396
|
+
// recovery_ctx stores the context about version edits and all those
|
|
1397
|
+
// edits are persisted to new Manifest after successfully syncing the new WAL.
|
|
1228
1398
|
virtual Status Recover(
|
|
1229
1399
|
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
1230
1400
|
bool read_only = false, bool error_if_wal_file_exists = false,
|
|
1231
1401
|
bool error_if_data_exists_in_wals = false,
|
|
1232
|
-
uint64_t* recovered_seq = nullptr
|
|
1402
|
+
uint64_t* recovered_seq = nullptr,
|
|
1403
|
+
RecoveryContext* recovery_ctx = nullptr);
|
|
1233
1404
|
|
|
1234
1405
|
virtual bool OwnTablesAndLogs() const { return true; }
|
|
1235
1406
|
|
|
1236
1407
|
// Set DB identity file, and write DB ID to manifest if necessary.
|
|
1237
|
-
Status SetDBId();
|
|
1408
|
+
Status SetDBId(bool read_only, RecoveryContext* recovery_ctx);
|
|
1238
1409
|
|
|
1239
1410
|
// REQUIRES: db mutex held when calling this function, but the db mutex can
|
|
1240
1411
|
// be released and re-acquired. Db mutex will be held when the function
|
|
@@ -1243,17 +1414,29 @@ class DBImpl : public DB {
|
|
|
1243
1414
|
// not referenced in the MANIFEST (e.g.
|
|
1244
1415
|
// 1. It's best effort recovery;
|
|
1245
1416
|
// 2. The VersionEdits referencing the SST files are appended to
|
|
1246
|
-
//
|
|
1417
|
+
// RecoveryContext, DB crashes when syncing the MANIFEST, the VersionEdits are
|
|
1247
1418
|
// still not synced to MANIFEST during recovery.)
|
|
1248
|
-
//
|
|
1419
|
+
// It stores the SST files to be deleted in RecoveryContext. In the
|
|
1249
1420
|
// meantime, we find out the largest file number present in the paths, and
|
|
1250
1421
|
// bump up the version set's next_file_number_ to be 1 + largest_file_number.
|
|
1251
|
-
|
|
1422
|
+
// recovery_ctx stores the context about version edits and files to be
|
|
1423
|
+
// deleted. All those edits are persisted to new Manifest after successfully
|
|
1424
|
+
// syncing the new WAL.
|
|
1425
|
+
Status DeleteUnreferencedSstFiles(RecoveryContext* recovery_ctx);
|
|
1252
1426
|
|
|
1253
1427
|
// SetDbSessionId() should be called in the constuctor DBImpl()
|
|
1254
1428
|
// to ensure that db_session_id_ gets updated every time the DB is opened
|
|
1255
1429
|
void SetDbSessionId();
|
|
1256
1430
|
|
|
1431
|
+
Status FailIfCfHasTs(const ColumnFamilyHandle* column_family) const;
|
|
1432
|
+
Status FailIfTsSizesMismatch(const ColumnFamilyHandle* column_family,
|
|
1433
|
+
const Slice& ts) const;
|
|
1434
|
+
|
|
1435
|
+
// recovery_ctx stores the context about version edits and
|
|
1436
|
+
// LogAndApplyForRecovery persist all those edits to new Manifest after
|
|
1437
|
+
// successfully syncing new WAL.
|
|
1438
|
+
Status LogAndApplyForRecovery(const RecoveryContext& recovery_ctx);
|
|
1439
|
+
|
|
1257
1440
|
private:
|
|
1258
1441
|
friend class DB;
|
|
1259
1442
|
friend class ErrorHandler;
|
|
@@ -1306,6 +1489,7 @@ class DBImpl : public DB {
|
|
|
1306
1489
|
|
|
1307
1490
|
struct LogFileNumberSize {
|
|
1308
1491
|
explicit LogFileNumberSize(uint64_t _number) : number(_number) {}
|
|
1492
|
+
LogFileNumberSize() {}
|
|
1309
1493
|
void AddSize(uint64_t new_size) { size += new_size; }
|
|
1310
1494
|
uint64_t number;
|
|
1311
1495
|
uint64_t size = 0;
|
|
@@ -1380,21 +1564,34 @@ class DBImpl : public DB {
|
|
|
1380
1564
|
|
|
1381
1565
|
// Information for a manual compaction
|
|
1382
1566
|
struct ManualCompactionState {
|
|
1567
|
+
ManualCompactionState(ColumnFamilyData* _cfd, int _input_level,
|
|
1568
|
+
int _output_level, uint32_t _output_path_id,
|
|
1569
|
+
bool _exclusive, bool _disallow_trivial_move,
|
|
1570
|
+
std::atomic<bool>* _canceled)
|
|
1571
|
+
: cfd(_cfd),
|
|
1572
|
+
input_level(_input_level),
|
|
1573
|
+
output_level(_output_level),
|
|
1574
|
+
output_path_id(_output_path_id),
|
|
1575
|
+
exclusive(_exclusive),
|
|
1576
|
+
disallow_trivial_move(_disallow_trivial_move),
|
|
1577
|
+
canceled(_canceled) {}
|
|
1578
|
+
|
|
1383
1579
|
ColumnFamilyData* cfd;
|
|
1384
1580
|
int input_level;
|
|
1385
1581
|
int output_level;
|
|
1386
1582
|
uint32_t output_path_id;
|
|
1387
1583
|
Status status;
|
|
1388
|
-
bool done;
|
|
1389
|
-
bool in_progress;
|
|
1390
|
-
bool incomplete;
|
|
1584
|
+
bool done = false;
|
|
1585
|
+
bool in_progress = false; // compaction request being processed?
|
|
1586
|
+
bool incomplete = false; // only part of requested range compacted
|
|
1391
1587
|
bool exclusive; // current behavior of only one manual
|
|
1392
1588
|
bool disallow_trivial_move; // Force actual compaction to run
|
|
1393
|
-
const InternalKey* begin;
|
|
1394
|
-
const InternalKey* end;
|
|
1395
|
-
InternalKey* manual_end;
|
|
1396
|
-
InternalKey tmp_storage;
|
|
1397
|
-
InternalKey tmp_storage1;
|
|
1589
|
+
const InternalKey* begin = nullptr; // nullptr means beginning of key range
|
|
1590
|
+
const InternalKey* end = nullptr; // nullptr means end of key range
|
|
1591
|
+
InternalKey* manual_end = nullptr; // how far we are compacting
|
|
1592
|
+
InternalKey tmp_storage; // Used to keep track of compaction progress
|
|
1593
|
+
InternalKey tmp_storage1; // Used to keep track of compaction progress
|
|
1594
|
+
std::atomic<bool>* canceled; // Compaction canceled by the user?
|
|
1398
1595
|
};
|
|
1399
1596
|
struct PrepickedCompaction {
|
|
1400
1597
|
// background compaction takes ownership of `compaction`.
|
|
@@ -1411,6 +1608,7 @@ class DBImpl : public DB {
|
|
|
1411
1608
|
DBImpl* db;
|
|
1412
1609
|
// background compaction takes ownership of `prepicked_compaction`.
|
|
1413
1610
|
PrepickedCompaction* prepicked_compaction;
|
|
1611
|
+
Env::Priority compaction_pri_;
|
|
1414
1612
|
};
|
|
1415
1613
|
|
|
1416
1614
|
// Initialize the built-in column family for persistent stats. Depending on
|
|
@@ -1493,9 +1691,10 @@ class DBImpl : public DB {
|
|
|
1493
1691
|
|
|
1494
1692
|
// REQUIRES: log_numbers are sorted in ascending order
|
|
1495
1693
|
// corrupted_log_found is set to true if we recover from a corrupted log file.
|
|
1496
|
-
Status RecoverLogFiles(
|
|
1694
|
+
Status RecoverLogFiles(std::vector<uint64_t>& log_numbers,
|
|
1497
1695
|
SequenceNumber* next_sequence, bool read_only,
|
|
1498
|
-
bool* corrupted_log_found
|
|
1696
|
+
bool* corrupted_log_found,
|
|
1697
|
+
RecoveryContext* recovery_ctx);
|
|
1499
1698
|
|
|
1500
1699
|
// The following two methods are used to flush a memtable to
|
|
1501
1700
|
// storage. The first one is used at database RecoveryTime (when the
|
|
@@ -1505,6 +1704,18 @@ class DBImpl : public DB {
|
|
|
1505
1704
|
Status WriteLevel0TableForRecovery(int job_id, ColumnFamilyData* cfd,
|
|
1506
1705
|
MemTable* mem, VersionEdit* edit);
|
|
1507
1706
|
|
|
1707
|
+
// Move all the WAL files starting from corrupted WAL found to
|
|
1708
|
+
// max_wal_number to avoid column family inconsistency error on recovery. It
|
|
1709
|
+
// also removes the deleted file from the vector wal_numbers.
|
|
1710
|
+
void MoveCorruptedWalFiles(std::vector<uint64_t>& wal_numbers,
|
|
1711
|
+
uint64_t corrupted_wal_number);
|
|
1712
|
+
|
|
1713
|
+
// Get the size of a log file and, if truncate is true, truncate the
|
|
1714
|
+
// log file to its actual size, thereby freeing preallocated space.
|
|
1715
|
+
// Return success even if truncate fails
|
|
1716
|
+
Status GetLogSizeAndMaybeTruncate(uint64_t wal_number, bool truncate,
|
|
1717
|
+
LogFileNumberSize* log);
|
|
1718
|
+
|
|
1508
1719
|
// Restore alive_log_files_ and total_log_size_ after recovery.
|
|
1509
1720
|
// It needs to run only when there's no flush during recovery
|
|
1510
1721
|
// (e.g. avoid_flush_during_recovery=true). May also trigger flush
|
|
@@ -1515,6 +1726,10 @@ class DBImpl : public DB {
|
|
|
1515
1726
|
// `num_bytes` going through.
|
|
1516
1727
|
Status DelayWrite(uint64_t num_bytes, const WriteOptions& write_options);
|
|
1517
1728
|
|
|
1729
|
+
// Begin stalling of writes when memory usage increases beyond a certain
|
|
1730
|
+
// threshold.
|
|
1731
|
+
void WriteBufferManagerStallWrites();
|
|
1732
|
+
|
|
1518
1733
|
Status ThrottleLowPriWritesIfNeeded(const WriteOptions& write_options,
|
|
1519
1734
|
WriteBatch* my_batch);
|
|
1520
1735
|
|
|
@@ -1587,6 +1802,25 @@ class DBImpl : public DB {
|
|
|
1587
1802
|
}
|
|
1588
1803
|
}
|
|
1589
1804
|
|
|
1805
|
+
// TaskType is used to identify tasks in thread-pool, currently only
|
|
1806
|
+
// differentiate manual compaction, which could be unscheduled from the
|
|
1807
|
+
// thread-pool.
|
|
1808
|
+
enum class TaskType : uint8_t {
|
|
1809
|
+
kDefault = 0,
|
|
1810
|
+
kManualCompaction = 1,
|
|
1811
|
+
kCount = 2,
|
|
1812
|
+
};
|
|
1813
|
+
|
|
1814
|
+
// Task tag is used to identity tasks in thread-pool, which is
|
|
1815
|
+
// dbImpl obj address + type
|
|
1816
|
+
inline void* GetTaskTag(TaskType type) {
|
|
1817
|
+
return GetTaskTag(static_cast<uint8_t>(type));
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1820
|
+
inline void* GetTaskTag(uint8_t type) {
|
|
1821
|
+
return static_cast<uint8_t*>(static_cast<void*>(this)) + type;
|
|
1822
|
+
}
|
|
1823
|
+
|
|
1590
1824
|
// REQUIRES: mutex locked and in write thread.
|
|
1591
1825
|
void AssignAtomicFlushSeq(const autovector<ColumnFamilyData*>& cfds);
|
|
1592
1826
|
|
|
@@ -1594,7 +1828,7 @@ class DBImpl : public DB {
|
|
|
1594
1828
|
Status SwitchWAL(WriteContext* write_context);
|
|
1595
1829
|
|
|
1596
1830
|
// REQUIRES: mutex locked and in write thread.
|
|
1597
|
-
Status
|
|
1831
|
+
Status HandleWriteBufferManagerFlush(WriteContext* write_context);
|
|
1598
1832
|
|
|
1599
1833
|
// REQUIRES: mutex locked
|
|
1600
1834
|
Status PreprocessWrite(const WriteOptions& write_options, bool* need_log_sync,
|
|
@@ -1604,8 +1838,13 @@ class DBImpl : public DB {
|
|
|
1604
1838
|
WriteBatch* tmp_batch, size_t* write_with_wal,
|
|
1605
1839
|
WriteBatch** to_be_cached_state);
|
|
1606
1840
|
|
|
1841
|
+
// rate_limiter_priority is used to charge `DBOptions::rate_limiter`
|
|
1842
|
+
// for automatic WAL flush (`Options::manual_wal_flush` == false)
|
|
1843
|
+
// associated with this WriteToWAL
|
|
1607
1844
|
IOStatus WriteToWAL(const WriteBatch& merged_batch, log::Writer* log_writer,
|
|
1608
|
-
uint64_t* log_used, uint64_t* log_size
|
|
1845
|
+
uint64_t* log_used, uint64_t* log_size,
|
|
1846
|
+
Env::IOPriority rate_limiter_priority,
|
|
1847
|
+
bool with_db_mutex = false, bool with_log_mutex = false);
|
|
1609
1848
|
|
|
1610
1849
|
IOStatus WriteToWAL(const WriteThread::WriteGroup& write_group,
|
|
1611
1850
|
log::Writer* log_writer, uint64_t* log_used,
|
|
@@ -1660,7 +1899,7 @@ class DBImpl : public DB {
|
|
|
1660
1899
|
// specified value, this flush request is considered to have completed its
|
|
1661
1900
|
// work of flushing this column family. After completing the work for all
|
|
1662
1901
|
// column families in this request, this flush is considered complete.
|
|
1663
|
-
|
|
1902
|
+
using FlushRequest = std::vector<std::pair<ColumnFamilyData*, uint64_t>>;
|
|
1664
1903
|
|
|
1665
1904
|
void GenerateFlushRequest(const autovector<ColumnFamilyData*>& cfds,
|
|
1666
1905
|
FlushRequest* req);
|
|
@@ -1701,7 +1940,7 @@ class DBImpl : public DB {
|
|
|
1701
1940
|
LogBuffer* log_buffer);
|
|
1702
1941
|
|
|
1703
1942
|
// Schedule background tasks
|
|
1704
|
-
|
|
1943
|
+
Status StartPeriodicWorkScheduler();
|
|
1705
1944
|
|
|
1706
1945
|
void PrintStatistics();
|
|
1707
1946
|
|
|
@@ -1873,8 +2112,8 @@ class DBImpl : public DB {
|
|
|
1873
2112
|
|
|
1874
2113
|
Status DisableFileDeletionsWithLock();
|
|
1875
2114
|
|
|
1876
|
-
|
|
1877
|
-
|
|
2115
|
+
Status IncreaseFullHistoryTsLowImpl(ColumnFamilyData* cfd,
|
|
2116
|
+
std::string ts_low);
|
|
1878
2117
|
|
|
1879
2118
|
// Lock over the persistent DB state. Non-nullptr iff successfully acquired.
|
|
1880
2119
|
FileLock* db_lock_;
|
|
@@ -1889,8 +2128,6 @@ class DBImpl : public DB {
|
|
|
1889
2128
|
// mutex_, the order should be first mutex_ and then log_write_mutex_.
|
|
1890
2129
|
InstrumentedMutex log_write_mutex_;
|
|
1891
2130
|
|
|
1892
|
-
std::atomic<bool> shutting_down_;
|
|
1893
|
-
|
|
1894
2131
|
// If zero, manual compactions are allowed to proceed. If non-zero, manual
|
|
1895
2132
|
// compactions may still be running, but will quickly fail with
|
|
1896
2133
|
// `Status::Incomplete`. The value indicates how many threads have paused
|
|
@@ -1925,7 +2162,7 @@ class DBImpl : public DB {
|
|
|
1925
2162
|
// accessed from the same write_thread_ without any locks. With
|
|
1926
2163
|
// two_write_queues writes, where it can be updated in different threads,
|
|
1927
2164
|
// read and writes are protected by log_write_mutex_ instead. This is to avoid
|
|
1928
|
-
//
|
|
2165
|
+
// expensive mutex_ lock during WAL write, which update log_empty_.
|
|
1929
2166
|
bool log_empty_;
|
|
1930
2167
|
|
|
1931
2168
|
ColumnFamilyHandleImpl* persist_stats_cf_handle_;
|
|
@@ -1933,12 +2170,15 @@ class DBImpl : public DB {
|
|
|
1933
2170
|
bool persistent_stats_cfd_exists_ = true;
|
|
1934
2171
|
|
|
1935
2172
|
// Without two_write_queues, read and writes to alive_log_files_ are
|
|
1936
|
-
// protected by mutex_.
|
|
1937
|
-
// is done only from write_thread_, the same thread can access the item
|
|
1938
|
-
// reffered by back() without mutex_. With two_write_queues_, writes
|
|
2173
|
+
// protected by mutex_. With two_write_queues_, writes
|
|
1939
2174
|
// are protected by locking both mutex_ and log_write_mutex_, and reads must
|
|
1940
2175
|
// be under either mutex_ or log_write_mutex_.
|
|
1941
2176
|
std::deque<LogFileNumberSize> alive_log_files_;
|
|
2177
|
+
// Caching the result of `alive_log_files_.back()` so that we do not have to
|
|
2178
|
+
// call `alive_log_files_.back()` in the write thread (WriteToWAL()) which
|
|
2179
|
+
// requires locking db mutex if log_mutex_ is not already held in
|
|
2180
|
+
// two-write-queues mode.
|
|
2181
|
+
std::deque<LogFileNumberSize>::reverse_iterator alive_log_files_tail_;
|
|
1942
2182
|
// Log files that aren't fully synced, and the current log file.
|
|
1943
2183
|
// Synchronization:
|
|
1944
2184
|
// - push_back() is done from write_thread_ with locked mutex_ and
|
|
@@ -1959,7 +2199,7 @@ class DBImpl : public DB {
|
|
|
1959
2199
|
// only during recovery. Using this feature enables not writing the state to
|
|
1960
2200
|
// memtable on normal writes and hence improving the throughput. Each new
|
|
1961
2201
|
// write of the state will replace the previous state entirely even if the
|
|
1962
|
-
// keys in the two
|
|
2202
|
+
// keys in the two consecutive states do not overlap.
|
|
1963
2203
|
// It is protected by log_write_mutex_ when two_write_queues_ is enabled.
|
|
1964
2204
|
// Otherwise only the heaad of write_thread_ can access it.
|
|
1965
2205
|
WriteBatch cached_recoverable_state_;
|
|
@@ -2099,10 +2339,6 @@ class DBImpl : public DB {
|
|
|
2099
2339
|
// Number of threads intending to write to memtable
|
|
2100
2340
|
std::atomic<size_t> pending_memtable_writes_ = {};
|
|
2101
2341
|
|
|
2102
|
-
// Each flush or compaction gets its own job id. this counter makes sure
|
|
2103
|
-
// they're unique
|
|
2104
|
-
std::atomic<int> next_job_id_;
|
|
2105
|
-
|
|
2106
2342
|
// A flag indicating whether the current rocksdb database has any
|
|
2107
2343
|
// data that is not yet persisted into either WAL or SST file.
|
|
2108
2344
|
// Used when disableWAL is true.
|
|
@@ -2131,9 +2367,6 @@ class DBImpl : public DB {
|
|
|
2131
2367
|
WalManager wal_manager_;
|
|
2132
2368
|
#endif // ROCKSDB_LITE
|
|
2133
2369
|
|
|
2134
|
-
// Unified interface for logging events
|
|
2135
|
-
EventLogger event_logger_;
|
|
2136
|
-
|
|
2137
2370
|
// A value of > 0 temporarily disables scheduling of background work
|
|
2138
2371
|
int bg_work_paused_;
|
|
2139
2372
|
|
|
@@ -2191,17 +2424,12 @@ class DBImpl : public DB {
|
|
|
2191
2424
|
// DB::Open() or passed to us
|
|
2192
2425
|
bool own_sfm_;
|
|
2193
2426
|
|
|
2194
|
-
// Clients must periodically call SetPreserveDeletesSequenceNumber()
|
|
2195
|
-
// to advance this seqnum. Default value is 0 which means ALL deletes are
|
|
2196
|
-
// preserved. Note that this has no effect if DBOptions.preserve_deletes
|
|
2197
|
-
// is set to false.
|
|
2198
|
-
std::atomic<SequenceNumber> preserve_deletes_seqnum_;
|
|
2199
|
-
const bool preserve_deletes_;
|
|
2200
|
-
|
|
2201
2427
|
// Flag to check whether Close() has been called on this DB
|
|
2202
2428
|
bool closed_;
|
|
2203
|
-
|
|
2204
|
-
|
|
2429
|
+
// save the closing status, for re-calling the close()
|
|
2430
|
+
Status closing_status_;
|
|
2431
|
+
// mutex for DB::Close()
|
|
2432
|
+
InstrumentedMutex closing_mutex_;
|
|
2205
2433
|
|
|
2206
2434
|
// Conditional variable to coordinate installation of atomic flush results.
|
|
2207
2435
|
// With atomic flush, each bg thread installs the result of flushing multiple
|
|
@@ -2215,11 +2443,18 @@ class DBImpl : public DB {
|
|
|
2215
2443
|
InstrumentedCondVar atomic_flush_install_cv_;
|
|
2216
2444
|
|
|
2217
2445
|
bool wal_in_db_path_;
|
|
2446
|
+
|
|
2447
|
+
BlobFileCompletionCallback blob_callback_;
|
|
2448
|
+
|
|
2449
|
+
// Pointer to WriteBufferManager stalling interface.
|
|
2450
|
+
std::unique_ptr<StallInterface> wbm_stall_;
|
|
2218
2451
|
};
|
|
2219
2452
|
|
|
2220
|
-
extern Options SanitizeOptions(const std::string& db, const Options& src
|
|
2453
|
+
extern Options SanitizeOptions(const std::string& db, const Options& src,
|
|
2454
|
+
bool read_only = false);
|
|
2221
2455
|
|
|
2222
|
-
extern DBOptions SanitizeOptions(const std::string& db, const DBOptions& src
|
|
2456
|
+
extern DBOptions SanitizeOptions(const std::string& db, const DBOptions& src,
|
|
2457
|
+
bool read_only = false);
|
|
2223
2458
|
|
|
2224
2459
|
extern CompressionType GetCompressionFlush(
|
|
2225
2460
|
const ImmutableCFOptions& ioptions,
|
|
@@ -2257,11 +2492,10 @@ extern uint64_t PrecomputeMinLogNumberToKeepNon2PC(
|
|
|
2257
2492
|
// will not depend on any WAL file. nullptr means no memtable is being flushed.
|
|
2258
2493
|
// The function is only applicable to 2pc mode.
|
|
2259
2494
|
extern uint64_t FindMinPrepLogReferencedByMemTable(
|
|
2260
|
-
VersionSet* vset, const
|
|
2261
|
-
const autovector<MemTable*>& memtables_to_flush);
|
|
2495
|
+
VersionSet* vset, const autovector<MemTable*>& memtables_to_flush);
|
|
2262
2496
|
// For atomic flush.
|
|
2263
2497
|
extern uint64_t FindMinPrepLogReferencedByMemTable(
|
|
2264
|
-
VersionSet* vset,
|
|
2498
|
+
VersionSet* vset,
|
|
2265
2499
|
const autovector<const autovector<MemTable*>*>& memtables_to_flush);
|
|
2266
2500
|
|
|
2267
2501
|
// Fix user-supplied options to be reasonable
|
|
@@ -2271,4 +2505,43 @@ static void ClipToRange(T* ptr, V minvalue, V maxvalue) {
|
|
|
2271
2505
|
if (static_cast<V>(*ptr) < minvalue) *ptr = minvalue;
|
|
2272
2506
|
}
|
|
2273
2507
|
|
|
2508
|
+
inline Status DBImpl::FailIfCfHasTs(
|
|
2509
|
+
const ColumnFamilyHandle* column_family) const {
|
|
2510
|
+
column_family = column_family ? column_family : DefaultColumnFamily();
|
|
2511
|
+
assert(column_family);
|
|
2512
|
+
const Comparator* const ucmp = column_family->GetComparator();
|
|
2513
|
+
assert(ucmp);
|
|
2514
|
+
if (ucmp->timestamp_size() > 0) {
|
|
2515
|
+
std::ostringstream oss;
|
|
2516
|
+
oss << "cannot call this method on column family "
|
|
2517
|
+
<< column_family->GetName() << " that enables timestamp";
|
|
2518
|
+
return Status::InvalidArgument(oss.str());
|
|
2519
|
+
}
|
|
2520
|
+
return Status::OK();
|
|
2521
|
+
}
|
|
2522
|
+
|
|
2523
|
+
inline Status DBImpl::FailIfTsSizesMismatch(
|
|
2524
|
+
const ColumnFamilyHandle* column_family, const Slice& ts) const {
|
|
2525
|
+
if (!column_family) {
|
|
2526
|
+
return Status::InvalidArgument("column family handle cannot be null");
|
|
2527
|
+
}
|
|
2528
|
+
assert(column_family);
|
|
2529
|
+
const Comparator* const ucmp = column_family->GetComparator();
|
|
2530
|
+
assert(ucmp);
|
|
2531
|
+
if (0 == ucmp->timestamp_size()) {
|
|
2532
|
+
std::stringstream oss;
|
|
2533
|
+
oss << "cannot call this method on column family "
|
|
2534
|
+
<< column_family->GetName() << " that does not enable timestamp";
|
|
2535
|
+
return Status::InvalidArgument(oss.str());
|
|
2536
|
+
}
|
|
2537
|
+
const size_t ts_sz = ts.size();
|
|
2538
|
+
if (ts_sz != ucmp->timestamp_size()) {
|
|
2539
|
+
std::stringstream oss;
|
|
2540
|
+
oss << "Timestamp sizes mismatch: expect " << ucmp->timestamp_size() << ", "
|
|
2541
|
+
<< ts_sz << " given";
|
|
2542
|
+
return Status::InvalidArgument(oss.str());
|
|
2543
|
+
}
|
|
2544
|
+
return Status::OK();
|
|
2545
|
+
}
|
|
2546
|
+
|
|
2274
2547
|
} // namespace ROCKSDB_NAMESPACE
|