@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
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
#include "db/db_impl/db_impl.h"
|
|
12
12
|
#include "db/error_handler.h"
|
|
13
13
|
#include "db/event_helpers.h"
|
|
14
|
+
#include "logging/logging.h"
|
|
14
15
|
#include "monitoring/perf_context_imp.h"
|
|
15
16
|
#include "options/options_helper.h"
|
|
16
17
|
#include "test_util/sync_point.h"
|
|
@@ -20,11 +21,28 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
20
21
|
// Convenience methods
|
|
21
22
|
Status DBImpl::Put(const WriteOptions& o, ColumnFamilyHandle* column_family,
|
|
22
23
|
const Slice& key, const Slice& val) {
|
|
24
|
+
const Status s = FailIfCfHasTs(column_family);
|
|
25
|
+
if (!s.ok()) {
|
|
26
|
+
return s;
|
|
27
|
+
}
|
|
23
28
|
return DB::Put(o, column_family, key, val);
|
|
24
29
|
}
|
|
25
30
|
|
|
31
|
+
Status DBImpl::Put(const WriteOptions& o, ColumnFamilyHandle* column_family,
|
|
32
|
+
const Slice& key, const Slice& ts, const Slice& val) {
|
|
33
|
+
const Status s = FailIfTsSizesMismatch(column_family, ts);
|
|
34
|
+
if (!s.ok()) {
|
|
35
|
+
return s;
|
|
36
|
+
}
|
|
37
|
+
return DB::Put(o, column_family, key, ts, val);
|
|
38
|
+
}
|
|
39
|
+
|
|
26
40
|
Status DBImpl::Merge(const WriteOptions& o, ColumnFamilyHandle* column_family,
|
|
27
41
|
const Slice& key, const Slice& val) {
|
|
42
|
+
const Status s = FailIfCfHasTs(column_family);
|
|
43
|
+
if (!s.ok()) {
|
|
44
|
+
return s;
|
|
45
|
+
}
|
|
28
46
|
auto cfh = static_cast_with_check<ColumnFamilyHandleImpl>(column_family);
|
|
29
47
|
if (!cfh->cfd()->ioptions()->merge_operator) {
|
|
30
48
|
return Status::NotSupported("Provide a merge_operator when opening DB");
|
|
@@ -35,22 +53,61 @@ Status DBImpl::Merge(const WriteOptions& o, ColumnFamilyHandle* column_family,
|
|
|
35
53
|
|
|
36
54
|
Status DBImpl::Delete(const WriteOptions& write_options,
|
|
37
55
|
ColumnFamilyHandle* column_family, const Slice& key) {
|
|
56
|
+
const Status s = FailIfCfHasTs(column_family);
|
|
57
|
+
if (!s.ok()) {
|
|
58
|
+
return s;
|
|
59
|
+
}
|
|
38
60
|
return DB::Delete(write_options, column_family, key);
|
|
39
61
|
}
|
|
40
62
|
|
|
63
|
+
Status DBImpl::Delete(const WriteOptions& write_options,
|
|
64
|
+
ColumnFamilyHandle* column_family, const Slice& key,
|
|
65
|
+
const Slice& ts) {
|
|
66
|
+
const Status s = FailIfTsSizesMismatch(column_family, ts);
|
|
67
|
+
if (!s.ok()) {
|
|
68
|
+
return s;
|
|
69
|
+
}
|
|
70
|
+
return DB::Delete(write_options, column_family, key, ts);
|
|
71
|
+
}
|
|
72
|
+
|
|
41
73
|
Status DBImpl::SingleDelete(const WriteOptions& write_options,
|
|
42
74
|
ColumnFamilyHandle* column_family,
|
|
43
75
|
const Slice& key) {
|
|
76
|
+
const Status s = FailIfCfHasTs(column_family);
|
|
77
|
+
if (!s.ok()) {
|
|
78
|
+
return s;
|
|
79
|
+
}
|
|
44
80
|
return DB::SingleDelete(write_options, column_family, key);
|
|
45
81
|
}
|
|
46
82
|
|
|
83
|
+
Status DBImpl::SingleDelete(const WriteOptions& write_options,
|
|
84
|
+
ColumnFamilyHandle* column_family, const Slice& key,
|
|
85
|
+
const Slice& ts) {
|
|
86
|
+
const Status s = FailIfTsSizesMismatch(column_family, ts);
|
|
87
|
+
if (!s.ok()) {
|
|
88
|
+
return s;
|
|
89
|
+
}
|
|
90
|
+
return DB::SingleDelete(write_options, column_family, key, ts);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
Status DBImpl::DeleteRange(const WriteOptions& write_options,
|
|
94
|
+
ColumnFamilyHandle* column_family,
|
|
95
|
+
const Slice& begin_key, const Slice& end_key) {
|
|
96
|
+
const Status s = FailIfCfHasTs(column_family);
|
|
97
|
+
if (!s.ok()) {
|
|
98
|
+
return s;
|
|
99
|
+
}
|
|
100
|
+
return DB::DeleteRange(write_options, column_family, begin_key, end_key);
|
|
101
|
+
}
|
|
102
|
+
|
|
47
103
|
void DBImpl::SetRecoverableStatePreReleaseCallback(
|
|
48
104
|
PreReleaseCallback* callback) {
|
|
49
105
|
recoverable_state_pre_release_callback_.reset(callback);
|
|
50
106
|
}
|
|
51
107
|
|
|
52
108
|
Status DBImpl::Write(const WriteOptions& write_options, WriteBatch* my_batch) {
|
|
53
|
-
return WriteImpl(write_options, my_batch, nullptr,
|
|
109
|
+
return WriteImpl(write_options, my_batch, /*callback=*/nullptr,
|
|
110
|
+
/*log_used=*/nullptr);
|
|
54
111
|
}
|
|
55
112
|
|
|
56
113
|
#ifndef ROCKSDB_LITE
|
|
@@ -72,11 +129,41 @@ Status DBImpl::WriteImpl(const WriteOptions& write_options,
|
|
|
72
129
|
PreReleaseCallback* pre_release_callback) {
|
|
73
130
|
assert(!seq_per_batch_ || batch_cnt != 0);
|
|
74
131
|
if (my_batch == nullptr) {
|
|
75
|
-
return Status::
|
|
76
|
-
}
|
|
132
|
+
return Status::InvalidArgument("Batch is nullptr!");
|
|
133
|
+
} else if (!disable_memtable &&
|
|
134
|
+
WriteBatchInternal::TimestampsUpdateNeeded(*my_batch)) {
|
|
135
|
+
// If writing to memtable, then we require the caller to set/update the
|
|
136
|
+
// timestamps for the keys in the write batch.
|
|
137
|
+
// Otherwise, it means we are just writing to the WAL, and we allow
|
|
138
|
+
// timestamps unset for the keys in the write batch. This can happen if we
|
|
139
|
+
// use TransactionDB with write-committed policy, and we currently do not
|
|
140
|
+
// support user-defined timestamp with other policies.
|
|
141
|
+
// In the prepare phase, a transaction can write the batch to the WAL
|
|
142
|
+
// without inserting to memtable. The keys in the batch do not have to be
|
|
143
|
+
// assigned timestamps because they will be used only during recovery if
|
|
144
|
+
// there is a commit marker which includes their commit timestamp.
|
|
145
|
+
return Status::InvalidArgument("write batch must have timestamp(s) set");
|
|
146
|
+
} else if (write_options.rate_limiter_priority != Env::IO_TOTAL &&
|
|
147
|
+
write_options.rate_limiter_priority != Env::IO_USER) {
|
|
148
|
+
return Status::InvalidArgument(
|
|
149
|
+
"WriteOptions::rate_limiter_priority only allows "
|
|
150
|
+
"Env::IO_TOTAL and Env::IO_USER due to implementation constraints");
|
|
151
|
+
} else if (write_options.rate_limiter_priority != Env::IO_TOTAL &&
|
|
152
|
+
(write_options.disableWAL || manual_wal_flush_)) {
|
|
153
|
+
return Status::InvalidArgument(
|
|
154
|
+
"WriteOptions::rate_limiter_priority currently only supports "
|
|
155
|
+
"rate-limiting automatic WAL flush, which requires "
|
|
156
|
+
"`WriteOptions::disableWAL` and "
|
|
157
|
+
"`DBOptions::manual_wal_flush` both set to false");
|
|
158
|
+
}
|
|
159
|
+
// TODO: this use of operator bool on `tracer_` can avoid unnecessary lock
|
|
160
|
+
// grabs but does not seem thread-safe.
|
|
77
161
|
if (tracer_) {
|
|
78
162
|
InstrumentedMutexLock lock(&trace_mutex_);
|
|
79
|
-
if (tracer_) {
|
|
163
|
+
if (tracer_ && !tracer_->IsWriteOrderPreserved()) {
|
|
164
|
+
// We don't have to preserve write order so can trace anywhere. It's more
|
|
165
|
+
// efficient to trace here than to add latency to a phase of the log/apply
|
|
166
|
+
// pipeline.
|
|
80
167
|
// TODO: maybe handle the tracing status?
|
|
81
168
|
tracer_->Write(my_batch).PermitUncheckedError();
|
|
82
169
|
}
|
|
@@ -155,12 +242,7 @@ Status DBImpl::WriteImpl(const WriteOptions& write_options,
|
|
|
155
242
|
PERF_TIMER_GUARD(write_pre_and_post_process_time);
|
|
156
243
|
WriteThread::Writer w(write_options, my_batch, callback, log_ref,
|
|
157
244
|
disable_memtable, batch_cnt, pre_release_callback);
|
|
158
|
-
|
|
159
|
-
if (!write_options.disableWAL) {
|
|
160
|
-
RecordTick(stats_, WRITE_WITH_WAL);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
StopWatch write_sw(env_, immutable_db_options_.statistics.get(), DB_WRITE);
|
|
245
|
+
StopWatch write_sw(immutable_db_options_.clock, stats_, DB_WRITE);
|
|
164
246
|
|
|
165
247
|
write_thread_.JoinBatchGroup(&w);
|
|
166
248
|
if (w.state == WriteThread::STATE_PARALLEL_MEMTABLE_WRITER) {
|
|
@@ -219,7 +301,8 @@ Status DBImpl::WriteImpl(const WriteOptions& write_options,
|
|
|
219
301
|
|
|
220
302
|
bool need_log_sync = write_options.sync;
|
|
221
303
|
bool need_log_dir_sync = need_log_sync && !log_dir_synced_;
|
|
222
|
-
|
|
304
|
+
assert(!two_write_queues_ || !disable_memtable);
|
|
305
|
+
{
|
|
223
306
|
// With concurrent writes we do preprocess only in the write thread that
|
|
224
307
|
// also does write to memtable to avoid sync issue on shared data structure
|
|
225
308
|
// with the other thread
|
|
@@ -250,7 +333,19 @@ Status DBImpl::WriteImpl(const WriteOptions& write_options,
|
|
|
250
333
|
write_thread_.EnterAsBatchGroupLeader(&w, &write_group);
|
|
251
334
|
|
|
252
335
|
IOStatus io_s;
|
|
336
|
+
Status pre_release_cb_status;
|
|
253
337
|
if (status.ok()) {
|
|
338
|
+
// TODO: this use of operator bool on `tracer_` can avoid unnecessary lock
|
|
339
|
+
// grabs but does not seem thread-safe.
|
|
340
|
+
if (tracer_) {
|
|
341
|
+
InstrumentedMutexLock lock(&trace_mutex_);
|
|
342
|
+
if (tracer_ && tracer_->IsWriteOrderPreserved()) {
|
|
343
|
+
for (auto* writer : write_group) {
|
|
344
|
+
// TODO: maybe handle the tracing status?
|
|
345
|
+
tracer_->Write(writer->batch).PermitUncheckedError();
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
254
349
|
// Rules for when we can update the memtable concurrently
|
|
255
350
|
// 1. supported by memtable
|
|
256
351
|
// 2. Puts are not okay if inplace_update_support
|
|
@@ -269,6 +364,7 @@ Status DBImpl::WriteImpl(const WriteOptions& write_options,
|
|
|
269
364
|
size_t total_byte_size = 0;
|
|
270
365
|
size_t pre_release_callback_cnt = 0;
|
|
271
366
|
for (auto* writer : write_group) {
|
|
367
|
+
assert(writer);
|
|
272
368
|
if (writer->CheckCallback(this)) {
|
|
273
369
|
valid_batches += writer->batch_cnt;
|
|
274
370
|
if (writer->ShouldWriteToMemtable()) {
|
|
@@ -360,7 +456,7 @@ Status DBImpl::WriteImpl(const WriteOptions& write_options,
|
|
|
360
456
|
writer->sequence, disable_memtable, writer->log_used, index++,
|
|
361
457
|
pre_release_callback_cnt);
|
|
362
458
|
if (!ws.ok()) {
|
|
363
|
-
status = ws;
|
|
459
|
+
status = pre_release_cb_status = ws;
|
|
364
460
|
break;
|
|
365
461
|
}
|
|
366
462
|
}
|
|
@@ -413,10 +509,13 @@ Status DBImpl::WriteImpl(const WriteOptions& write_options,
|
|
|
413
509
|
|
|
414
510
|
if (!w.CallbackFailed()) {
|
|
415
511
|
if (!io_s.ok()) {
|
|
512
|
+
assert(pre_release_cb_status.ok());
|
|
416
513
|
IOStatusCheck(io_s);
|
|
417
514
|
} else {
|
|
418
|
-
WriteStatusCheck(
|
|
515
|
+
WriteStatusCheck(pre_release_cb_status);
|
|
419
516
|
}
|
|
517
|
+
} else {
|
|
518
|
+
assert(io_s.ok() && pre_release_cb_status.ok());
|
|
420
519
|
}
|
|
421
520
|
|
|
422
521
|
if (need_log_sync) {
|
|
@@ -465,12 +564,13 @@ Status DBImpl::PipelinedWriteImpl(const WriteOptions& write_options,
|
|
|
465
564
|
uint64_t* log_used, uint64_t log_ref,
|
|
466
565
|
bool disable_memtable, uint64_t* seq_used) {
|
|
467
566
|
PERF_TIMER_GUARD(write_pre_and_post_process_time);
|
|
468
|
-
StopWatch write_sw(
|
|
567
|
+
StopWatch write_sw(immutable_db_options_.clock, stats_, DB_WRITE);
|
|
469
568
|
|
|
470
569
|
WriteContext write_context;
|
|
471
570
|
|
|
472
571
|
WriteThread::Writer w(write_options, my_batch, callback, log_ref,
|
|
473
|
-
disable_memtable
|
|
572
|
+
disable_memtable, /*_batch_cnt=*/0,
|
|
573
|
+
/*_pre_release_callback=*/nullptr);
|
|
474
574
|
write_thread_.JoinBatchGroup(&w);
|
|
475
575
|
TEST_SYNC_POINT("DBImplWrite::PipelinedWriteImpl:AfterJoinBatchGroup");
|
|
476
576
|
if (w.state == WriteThread::STATE_GROUP_LEADER) {
|
|
@@ -497,8 +597,20 @@ Status DBImpl::PipelinedWriteImpl(const WriteOptions& write_options,
|
|
|
497
597
|
size_t total_byte_size = 0;
|
|
498
598
|
|
|
499
599
|
if (w.status.ok()) {
|
|
600
|
+
// TODO: this use of operator bool on `tracer_` can avoid unnecessary lock
|
|
601
|
+
// grabs but does not seem thread-safe.
|
|
602
|
+
if (tracer_) {
|
|
603
|
+
InstrumentedMutexLock lock(&trace_mutex_);
|
|
604
|
+
if (tracer_ != nullptr && tracer_->IsWriteOrderPreserved()) {
|
|
605
|
+
for (auto* writer : wal_write_group) {
|
|
606
|
+
// TODO: maybe handle the tracing status?
|
|
607
|
+
tracer_->Write(writer->batch).PermitUncheckedError();
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
}
|
|
500
611
|
SequenceNumber next_sequence = current_sequence;
|
|
501
|
-
for (auto writer : wal_write_group) {
|
|
612
|
+
for (auto* writer : wal_write_group) {
|
|
613
|
+
assert(writer);
|
|
502
614
|
if (writer->CheckCallback(this)) {
|
|
503
615
|
if (writer->ShouldWriteToMemtable()) {
|
|
504
616
|
writer->sequence = next_sequence;
|
|
@@ -621,7 +733,7 @@ Status DBImpl::UnorderedWriteMemtable(const WriteOptions& write_options,
|
|
|
621
733
|
SequenceNumber seq,
|
|
622
734
|
const size_t sub_batch_cnt) {
|
|
623
735
|
PERF_TIMER_GUARD(write_pre_and_post_process_time);
|
|
624
|
-
StopWatch write_sw(
|
|
736
|
+
StopWatch write_sw(immutable_db_options_.clock, stats_, DB_WRITE);
|
|
625
737
|
|
|
626
738
|
WriteThread::Writer w(write_options, my_batch, callback, log_ref,
|
|
627
739
|
false /*disable_memtable*/);
|
|
@@ -675,8 +787,7 @@ Status DBImpl::WriteImplWALOnly(
|
|
|
675
787
|
PERF_TIMER_GUARD(write_pre_and_post_process_time);
|
|
676
788
|
WriteThread::Writer w(write_options, my_batch, callback, log_ref,
|
|
677
789
|
disable_memtable, sub_batch_cnt, pre_release_callback);
|
|
678
|
-
|
|
679
|
-
StopWatch write_sw(env_, immutable_db_options_.statistics.get(), DB_WRITE);
|
|
790
|
+
StopWatch write_sw(immutable_db_options_.clock, stats_, DB_WRITE);
|
|
680
791
|
|
|
681
792
|
write_thread->JoinBatchGroup(&w);
|
|
682
793
|
assert(w.state != WriteThread::STATE_PARALLEL_MEMTABLE_WRITER);
|
|
@@ -722,10 +833,22 @@ Status DBImpl::WriteImplWALOnly(
|
|
|
722
833
|
write_thread->EnterAsBatchGroupLeader(&w, &write_group);
|
|
723
834
|
// Note: no need to update last_batch_group_size_ here since the batch writes
|
|
724
835
|
// to WAL only
|
|
836
|
+
// TODO: this use of operator bool on `tracer_` can avoid unnecessary lock
|
|
837
|
+
// grabs but does not seem thread-safe.
|
|
838
|
+
if (tracer_) {
|
|
839
|
+
InstrumentedMutexLock lock(&trace_mutex_);
|
|
840
|
+
if (tracer_ != nullptr && tracer_->IsWriteOrderPreserved()) {
|
|
841
|
+
for (auto* writer : write_group) {
|
|
842
|
+
// TODO: maybe handle the tracing status?
|
|
843
|
+
tracer_->Write(writer->batch).PermitUncheckedError();
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
}
|
|
725
847
|
|
|
726
848
|
size_t pre_release_callback_cnt = 0;
|
|
727
849
|
size_t total_byte_size = 0;
|
|
728
850
|
for (auto* writer : write_group) {
|
|
851
|
+
assert(writer);
|
|
729
852
|
if (writer->CheckCallback(this)) {
|
|
730
853
|
total_byte_size = WriteBatchInternal::AppendedByteSize(
|
|
731
854
|
total_byte_size, WriteBatchInternal::ByteSize(writer->batch));
|
|
@@ -933,7 +1056,7 @@ Status DBImpl::PreprocessWrite(const WriteOptions& write_options,
|
|
|
933
1056
|
// be flushed. We may end up with flushing much more DBs than needed. It's
|
|
934
1057
|
// suboptimal but still correct.
|
|
935
1058
|
WaitForPendingWrites();
|
|
936
|
-
status =
|
|
1059
|
+
status = HandleWriteBufferManagerFlush(write_context);
|
|
937
1060
|
}
|
|
938
1061
|
|
|
939
1062
|
if (UNLIKELY(status.ok() && !trim_history_scheduler_.Empty())) {
|
|
@@ -960,6 +1083,20 @@ Status DBImpl::PreprocessWrite(const WriteOptions& write_options,
|
|
|
960
1083
|
PERF_TIMER_START(write_pre_and_post_process_time);
|
|
961
1084
|
}
|
|
962
1085
|
|
|
1086
|
+
// If memory usage exceeded beyond a certain threshold,
|
|
1087
|
+
// write_buffer_manager_->ShouldStall() returns true to all threads writing to
|
|
1088
|
+
// all DBs and writers will be stalled.
|
|
1089
|
+
// It does soft checking because WriteBufferManager::buffer_limit_ has already
|
|
1090
|
+
// exceeded at this point so no new write (including current one) will go
|
|
1091
|
+
// through until memory usage is decreased.
|
|
1092
|
+
if (UNLIKELY(status.ok() && write_buffer_manager_->ShouldStall())) {
|
|
1093
|
+
if (write_options.no_slowdown) {
|
|
1094
|
+
status = Status::Incomplete("Write stall");
|
|
1095
|
+
} else {
|
|
1096
|
+
WriteBufferManagerStallWrites();
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
|
|
963
1100
|
if (status.ok() && *need_log_sync) {
|
|
964
1101
|
// Wait until the parallel syncs are finished. Any sync process has to sync
|
|
965
1102
|
// the front log too so it is enough to check the status of front()
|
|
@@ -1033,8 +1170,19 @@ WriteBatch* DBImpl::MergeBatch(const WriteThread::WriteGroup& write_group,
|
|
|
1033
1170
|
// write thread. Otherwise this must be called holding log_write_mutex_.
|
|
1034
1171
|
IOStatus DBImpl::WriteToWAL(const WriteBatch& merged_batch,
|
|
1035
1172
|
log::Writer* log_writer, uint64_t* log_used,
|
|
1036
|
-
uint64_t* log_size
|
|
1173
|
+
uint64_t* log_size,
|
|
1174
|
+
Env::IOPriority rate_limiter_priority,
|
|
1175
|
+
bool with_db_mutex, bool with_log_mutex) {
|
|
1037
1176
|
assert(log_size != nullptr);
|
|
1177
|
+
|
|
1178
|
+
// Assert mutex explicitly.
|
|
1179
|
+
if (with_db_mutex) {
|
|
1180
|
+
mutex_.AssertHeld();
|
|
1181
|
+
} else if (two_write_queues_) {
|
|
1182
|
+
log_write_mutex_.AssertHeld();
|
|
1183
|
+
assert(with_log_mutex);
|
|
1184
|
+
}
|
|
1185
|
+
|
|
1038
1186
|
Slice log_entry = WriteBatchInternal::Contents(&merged_batch);
|
|
1039
1187
|
*log_size = log_entry.size();
|
|
1040
1188
|
// When two_write_queues_ WriteToWAL has to be protected from concurretn calls
|
|
@@ -1048,7 +1196,7 @@ IOStatus DBImpl::WriteToWAL(const WriteBatch& merged_batch,
|
|
|
1048
1196
|
if (UNLIKELY(needs_locking)) {
|
|
1049
1197
|
log_write_mutex_.Lock();
|
|
1050
1198
|
}
|
|
1051
|
-
IOStatus io_s = log_writer->AddRecord(log_entry);
|
|
1199
|
+
IOStatus io_s = log_writer->AddRecord(log_entry, rate_limiter_priority);
|
|
1052
1200
|
|
|
1053
1201
|
if (UNLIKELY(needs_locking)) {
|
|
1054
1202
|
log_write_mutex_.Unlock();
|
|
@@ -1057,9 +1205,12 @@ IOStatus DBImpl::WriteToWAL(const WriteBatch& merged_batch,
|
|
|
1057
1205
|
*log_used = logfile_number_;
|
|
1058
1206
|
}
|
|
1059
1207
|
total_log_size_ += log_entry.size();
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1208
|
+
if (with_db_mutex || with_log_mutex) {
|
|
1209
|
+
assert(alive_log_files_tail_ == alive_log_files_.rbegin());
|
|
1210
|
+
assert(alive_log_files_tail_ != alive_log_files_.rend());
|
|
1211
|
+
}
|
|
1212
|
+
LogFileNumberSize& last_alive_log = *alive_log_files_tail_;
|
|
1213
|
+
last_alive_log.AddSize(*log_size);
|
|
1063
1214
|
log_empty_ = false;
|
|
1064
1215
|
return io_s;
|
|
1065
1216
|
}
|
|
@@ -1069,6 +1220,7 @@ IOStatus DBImpl::WriteToWAL(const WriteThread::WriteGroup& write_group,
|
|
|
1069
1220
|
bool need_log_sync, bool need_log_dir_sync,
|
|
1070
1221
|
SequenceNumber sequence) {
|
|
1071
1222
|
IOStatus io_s;
|
|
1223
|
+
assert(!two_write_queues_);
|
|
1072
1224
|
assert(!write_group.leader->disable_wal);
|
|
1073
1225
|
// Same holds for all in the batch group
|
|
1074
1226
|
size_t write_with_wal = 0;
|
|
@@ -1086,14 +1238,15 @@ IOStatus DBImpl::WriteToWAL(const WriteThread::WriteGroup& write_group,
|
|
|
1086
1238
|
WriteBatchInternal::SetSequence(merged_batch, sequence);
|
|
1087
1239
|
|
|
1088
1240
|
uint64_t log_size;
|
|
1089
|
-
io_s = WriteToWAL(*merged_batch, log_writer, log_used, &log_size
|
|
1241
|
+
io_s = WriteToWAL(*merged_batch, log_writer, log_used, &log_size,
|
|
1242
|
+
write_group.leader->rate_limiter_priority);
|
|
1090
1243
|
if (to_be_cached_state) {
|
|
1091
1244
|
cached_recoverable_state_ = *to_be_cached_state;
|
|
1092
1245
|
cached_recoverable_state_empty_ = false;
|
|
1093
1246
|
}
|
|
1094
1247
|
|
|
1095
1248
|
if (io_s.ok() && need_log_sync) {
|
|
1096
|
-
StopWatch sw(
|
|
1249
|
+
StopWatch sw(immutable_db_options_.clock, stats_, WAL_FILE_SYNC_MICROS);
|
|
1097
1250
|
// It's safe to access logs_ with unlocked mutex_ here because:
|
|
1098
1251
|
// - we've set getting_synced=true for all logs,
|
|
1099
1252
|
// so other threads won't pop from logs_ while we're here,
|
|
@@ -1101,6 +1254,18 @@ IOStatus DBImpl::WriteToWAL(const WriteThread::WriteGroup& write_group,
|
|
|
1101
1254
|
// writer thread, so no one will push to logs_,
|
|
1102
1255
|
// - as long as other threads don't modify it, it's safe to read
|
|
1103
1256
|
// from std::deque from multiple threads concurrently.
|
|
1257
|
+
//
|
|
1258
|
+
// Sync operation should work with locked log_write_mutex_, because:
|
|
1259
|
+
// when DBOptions.manual_wal_flush_ is set,
|
|
1260
|
+
// FlushWAL function will be invoked by another thread.
|
|
1261
|
+
// if without locked log_write_mutex_, the log file may get data
|
|
1262
|
+
// corruption
|
|
1263
|
+
|
|
1264
|
+
const bool needs_locking = manual_wal_flush_ && !two_write_queues_;
|
|
1265
|
+
if (UNLIKELY(needs_locking)) {
|
|
1266
|
+
log_write_mutex_.Lock();
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1104
1269
|
for (auto& log : logs_) {
|
|
1105
1270
|
io_s = log.writer->file()->Sync(immutable_db_options_.use_fsync);
|
|
1106
1271
|
if (!io_s.ok()) {
|
|
@@ -1108,11 +1273,17 @@ IOStatus DBImpl::WriteToWAL(const WriteThread::WriteGroup& write_group,
|
|
|
1108
1273
|
}
|
|
1109
1274
|
}
|
|
1110
1275
|
|
|
1276
|
+
if (UNLIKELY(needs_locking)) {
|
|
1277
|
+
log_write_mutex_.Unlock();
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1111
1280
|
if (io_s.ok() && need_log_dir_sync) {
|
|
1112
1281
|
// We only sync WAL directory the first time WAL syncing is
|
|
1113
1282
|
// requested, so that in case users never turn on WAL sync,
|
|
1114
1283
|
// we can avoid the disk I/O in the write code path.
|
|
1115
|
-
io_s = directories_.GetWalDir()->
|
|
1284
|
+
io_s = directories_.GetWalDir()->FsyncWithDirOptions(
|
|
1285
|
+
IOOptions(), nullptr,
|
|
1286
|
+
DirFsyncOptions(DirFsyncOptions::FsyncReason::kNewFileSynced));
|
|
1116
1287
|
}
|
|
1117
1288
|
}
|
|
1118
1289
|
|
|
@@ -1138,6 +1309,7 @@ IOStatus DBImpl::ConcurrentWriteToWAL(
|
|
|
1138
1309
|
SequenceNumber* last_sequence, size_t seq_inc) {
|
|
1139
1310
|
IOStatus io_s;
|
|
1140
1311
|
|
|
1312
|
+
assert(two_write_queues_ || immutable_db_options_.unordered_write);
|
|
1141
1313
|
assert(!write_group.leader->disable_wal);
|
|
1142
1314
|
// Same holds for all in the batch group
|
|
1143
1315
|
WriteBatch tmp_batch;
|
|
@@ -1162,7 +1334,9 @@ IOStatus DBImpl::ConcurrentWriteToWAL(
|
|
|
1162
1334
|
|
|
1163
1335
|
log::Writer* log_writer = logs_.back().writer;
|
|
1164
1336
|
uint64_t log_size;
|
|
1165
|
-
io_s = WriteToWAL(*merged_batch, log_writer, log_used, &log_size
|
|
1337
|
+
io_s = WriteToWAL(*merged_batch, log_writer, log_used, &log_size,
|
|
1338
|
+
write_group.leader->rate_limiter_priority,
|
|
1339
|
+
/*with_db_mutex=*/false, /*with_log_mutex=*/true);
|
|
1166
1340
|
if (to_be_cached_state) {
|
|
1167
1341
|
cached_recoverable_state_ = *to_be_cached_state;
|
|
1168
1342
|
cached_recoverable_state_empty_ = false;
|
|
@@ -1344,20 +1518,20 @@ Status DBImpl::SwitchWAL(WriteContext* write_context) {
|
|
|
1344
1518
|
if (!immutable_db_options_.atomic_flush) {
|
|
1345
1519
|
FlushRequest flush_req;
|
|
1346
1520
|
GenerateFlushRequest({cfd}, &flush_req);
|
|
1347
|
-
SchedulePendingFlush(flush_req, FlushReason::
|
|
1521
|
+
SchedulePendingFlush(flush_req, FlushReason::kWalFull);
|
|
1348
1522
|
}
|
|
1349
1523
|
}
|
|
1350
1524
|
if (immutable_db_options_.atomic_flush) {
|
|
1351
1525
|
FlushRequest flush_req;
|
|
1352
1526
|
GenerateFlushRequest(cfds, &flush_req);
|
|
1353
|
-
SchedulePendingFlush(flush_req, FlushReason::
|
|
1527
|
+
SchedulePendingFlush(flush_req, FlushReason::kWalFull);
|
|
1354
1528
|
}
|
|
1355
1529
|
MaybeScheduleFlushOrCompaction();
|
|
1356
1530
|
}
|
|
1357
1531
|
return status;
|
|
1358
1532
|
}
|
|
1359
1533
|
|
|
1360
|
-
Status DBImpl::
|
|
1534
|
+
Status DBImpl::HandleWriteBufferManagerFlush(WriteContext* write_context) {
|
|
1361
1535
|
mutex_.AssertHeld();
|
|
1362
1536
|
assert(write_context != nullptr);
|
|
1363
1537
|
Status status;
|
|
@@ -1369,7 +1543,7 @@ Status DBImpl::HandleWriteBufferFull(WriteContext* write_context) {
|
|
|
1369
1543
|
// suboptimal but still correct.
|
|
1370
1544
|
ROCKS_LOG_INFO(
|
|
1371
1545
|
immutable_db_options_.info_log,
|
|
1372
|
-
"Flushing column family with oldest memtable entry. Write
|
|
1546
|
+
"Flushing column family with oldest memtable entry. Write buffers are "
|
|
1373
1547
|
"using %" ROCKSDB_PRIszt " bytes out of a total of %" ROCKSDB_PRIszt ".",
|
|
1374
1548
|
write_buffer_manager_->memory_usage(),
|
|
1375
1549
|
write_buffer_manager_->buffer_size());
|
|
@@ -1430,13 +1604,13 @@ Status DBImpl::HandleWriteBufferFull(WriteContext* write_context) {
|
|
|
1430
1604
|
if (!immutable_db_options_.atomic_flush) {
|
|
1431
1605
|
FlushRequest flush_req;
|
|
1432
1606
|
GenerateFlushRequest({cfd}, &flush_req);
|
|
1433
|
-
SchedulePendingFlush(flush_req, FlushReason::
|
|
1607
|
+
SchedulePendingFlush(flush_req, FlushReason::kWriteBufferManager);
|
|
1434
1608
|
}
|
|
1435
1609
|
}
|
|
1436
1610
|
if (immutable_db_options_.atomic_flush) {
|
|
1437
1611
|
FlushRequest flush_req;
|
|
1438
1612
|
GenerateFlushRequest(cfds, &flush_req);
|
|
1439
|
-
SchedulePendingFlush(flush_req, FlushReason::
|
|
1613
|
+
SchedulePendingFlush(flush_req, FlushReason::kWriteBufferManager);
|
|
1440
1614
|
}
|
|
1441
1615
|
MaybeScheduleFlushOrCompaction();
|
|
1442
1616
|
}
|
|
@@ -1457,8 +1631,10 @@ Status DBImpl::DelayWrite(uint64_t num_bytes,
|
|
|
1457
1631
|
uint64_t time_delayed = 0;
|
|
1458
1632
|
bool delayed = false;
|
|
1459
1633
|
{
|
|
1460
|
-
StopWatch sw(
|
|
1461
|
-
|
|
1634
|
+
StopWatch sw(immutable_db_options_.clock, stats_, WRITE_STALL,
|
|
1635
|
+
&time_delayed);
|
|
1636
|
+
uint64_t delay =
|
|
1637
|
+
write_controller_.GetDelay(immutable_db_options_.clock, num_bytes);
|
|
1462
1638
|
if (delay > 0) {
|
|
1463
1639
|
if (write_options.no_slowdown) {
|
|
1464
1640
|
return Status::Incomplete("Write stall");
|
|
@@ -1470,19 +1646,21 @@ Status DBImpl::DelayWrite(uint64_t num_bytes,
|
|
|
1470
1646
|
write_thread_.BeginWriteStall();
|
|
1471
1647
|
TEST_SYNC_POINT("DBImpl::DelayWrite:BeginWriteStallDone");
|
|
1472
1648
|
mutex_.Unlock();
|
|
1473
|
-
// We will delay the write until we have slept for delay
|
|
1474
|
-
// we don't need a delay anymore
|
|
1475
|
-
|
|
1649
|
+
// We will delay the write until we have slept for `delay` microseconds
|
|
1650
|
+
// or we don't need a delay anymore. We check for cancellation every 1ms
|
|
1651
|
+
// (slightly longer because WriteController minimum delay is 1ms, in
|
|
1652
|
+
// case of sleep imprecision, rounding, etc.)
|
|
1653
|
+
const uint64_t kDelayInterval = 1001;
|
|
1476
1654
|
uint64_t stall_end = sw.start_time() + delay;
|
|
1477
1655
|
while (write_controller_.NeedsDelay()) {
|
|
1478
|
-
if (
|
|
1656
|
+
if (immutable_db_options_.clock->NowMicros() >= stall_end) {
|
|
1479
1657
|
// We already delayed this write `delay` microseconds
|
|
1480
1658
|
break;
|
|
1481
1659
|
}
|
|
1482
1660
|
|
|
1483
1661
|
delayed = true;
|
|
1484
1662
|
// Sleep for 0.001 seconds
|
|
1485
|
-
|
|
1663
|
+
immutable_db_options_.clock->SleepForMicroseconds(kDelayInterval);
|
|
1486
1664
|
}
|
|
1487
1665
|
mutex_.Lock();
|
|
1488
1666
|
write_thread_.EndWriteStall();
|
|
@@ -1528,6 +1706,29 @@ Status DBImpl::DelayWrite(uint64_t num_bytes,
|
|
|
1528
1706
|
return s;
|
|
1529
1707
|
}
|
|
1530
1708
|
|
|
1709
|
+
// REQUIRES: mutex_ is held
|
|
1710
|
+
// REQUIRES: this thread is currently at the front of the writer queue
|
|
1711
|
+
void DBImpl::WriteBufferManagerStallWrites() {
|
|
1712
|
+
mutex_.AssertHeld();
|
|
1713
|
+
// First block future writer threads who want to add themselves to the queue
|
|
1714
|
+
// of WriteThread.
|
|
1715
|
+
write_thread_.BeginWriteStall();
|
|
1716
|
+
mutex_.Unlock();
|
|
1717
|
+
|
|
1718
|
+
// Change the state to State::Blocked.
|
|
1719
|
+
static_cast<WBMStallInterface*>(wbm_stall_.get())
|
|
1720
|
+
->SetState(WBMStallInterface::State::BLOCKED);
|
|
1721
|
+
// Then WriteBufferManager will add DB instance to its queue
|
|
1722
|
+
// and block this thread by calling WBMStallInterface::Block().
|
|
1723
|
+
write_buffer_manager_->BeginWriteStall(wbm_stall_.get());
|
|
1724
|
+
wbm_stall_->Block();
|
|
1725
|
+
|
|
1726
|
+
mutex_.Lock();
|
|
1727
|
+
// Stall has ended. Signal writer threads so that they can add
|
|
1728
|
+
// themselves to the WriteThread queue for writes.
|
|
1729
|
+
write_thread_.EndWriteStall();
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1531
1732
|
Status DBImpl::ThrottleLowPriWritesIfNeeded(const WriteOptions& write_options,
|
|
1532
1733
|
WriteBatch* my_batch) {
|
|
1533
1734
|
assert(write_options.low_pri);
|
|
@@ -1601,13 +1802,8 @@ Status DBImpl::TrimMemtableHistory(WriteContext* context) {
|
|
|
1601
1802
|
}
|
|
1602
1803
|
for (auto& cfd : cfds) {
|
|
1603
1804
|
autovector<MemTable*> to_delete;
|
|
1604
|
-
bool trimmed = cfd->imm()->TrimHistory(
|
|
1605
|
-
|
|
1606
|
-
if (!to_delete.empty()) {
|
|
1607
|
-
for (auto m : to_delete) {
|
|
1608
|
-
delete m;
|
|
1609
|
-
}
|
|
1610
|
-
}
|
|
1805
|
+
bool trimmed = cfd->imm()->TrimHistory(&context->memtables_to_free_,
|
|
1806
|
+
cfd->mem()->MemoryAllocatedBytes());
|
|
1611
1807
|
if (trimmed) {
|
|
1612
1808
|
context->superversion_context.NewSuperVersion();
|
|
1613
1809
|
assert(context->superversion_context.new_superversion.get() != nullptr);
|
|
@@ -1686,9 +1882,11 @@ void DBImpl::NotifyOnMemTableSealed(ColumnFamilyData* /*cfd*/,
|
|
|
1686
1882
|
return;
|
|
1687
1883
|
}
|
|
1688
1884
|
|
|
1885
|
+
mutex_.Unlock();
|
|
1689
1886
|
for (auto listener : immutable_db_options_.listeners) {
|
|
1690
1887
|
listener->OnMemTableSealed(mem_table_info);
|
|
1691
1888
|
}
|
|
1889
|
+
mutex_.Lock();
|
|
1692
1890
|
}
|
|
1693
1891
|
#endif // ROCKSDB_LITE
|
|
1694
1892
|
|
|
@@ -1698,8 +1896,6 @@ void DBImpl::NotifyOnMemTableSealed(ColumnFamilyData* /*cfd*/,
|
|
|
1698
1896
|
// two_write_queues_ is true (This is to simplify the reasoning.)
|
|
1699
1897
|
Status DBImpl::SwitchMemtable(ColumnFamilyData* cfd, WriteContext* context) {
|
|
1700
1898
|
mutex_.AssertHeld();
|
|
1701
|
-
WriteThread::Writer nonmem_w;
|
|
1702
|
-
std::unique_ptr<WritableFile> lfile;
|
|
1703
1899
|
log::Writer* new_log = nullptr;
|
|
1704
1900
|
MemTable* new_mem = nullptr;
|
|
1705
1901
|
IOStatus io_s;
|
|
@@ -1796,6 +1992,7 @@ Status DBImpl::SwitchMemtable(ColumnFamilyData* cfd, WriteContext* context) {
|
|
|
1796
1992
|
log_dir_synced_ = false;
|
|
1797
1993
|
logs_.emplace_back(logfile_number_, new_log);
|
|
1798
1994
|
alive_log_files_.push_back(LogFileNumberSize(logfile_number_));
|
|
1995
|
+
alive_log_files_tail_ = alive_log_files_.rbegin();
|
|
1799
1996
|
}
|
|
1800
1997
|
log_write_mutex_.Unlock();
|
|
1801
1998
|
}
|
|
@@ -1803,17 +2000,9 @@ Status DBImpl::SwitchMemtable(ColumnFamilyData* cfd, WriteContext* context) {
|
|
|
1803
2000
|
if (!s.ok()) {
|
|
1804
2001
|
// how do we fail if we're not creating new log?
|
|
1805
2002
|
assert(creating_new_log);
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
if (new_log) {
|
|
1810
|
-
delete new_log;
|
|
1811
|
-
}
|
|
1812
|
-
SuperVersion* new_superversion =
|
|
1813
|
-
context->superversion_context.new_superversion.release();
|
|
1814
|
-
if (new_superversion != nullptr) {
|
|
1815
|
-
delete new_superversion;
|
|
1816
|
-
}
|
|
2003
|
+
delete new_mem;
|
|
2004
|
+
delete new_log;
|
|
2005
|
+
context->superversion_context.new_superversion.reset();
|
|
1817
2006
|
// We may have lost data from the WritableFileBuffer in-memory buffer for
|
|
1818
2007
|
// the current log, so treat it as a fatal error and set bg_error
|
|
1819
2008
|
if (!io_s.ok()) {
|
|
@@ -1866,6 +2055,8 @@ Status DBImpl::SwitchMemtable(ColumnFamilyData* cfd, WriteContext* context) {
|
|
|
1866
2055
|
for (auto cf : empty_cfs) {
|
|
1867
2056
|
if (cf->IsEmpty()) {
|
|
1868
2057
|
cf->SetLogNumber(logfile_number_);
|
|
2058
|
+
// MEMPURGE: No need to change this, because new adds
|
|
2059
|
+
// should still receive new sequence numbers.
|
|
1869
2060
|
cf->mem()->SetCreationSeq(versions_->LastSequence());
|
|
1870
2061
|
} // cf may become non-empty.
|
|
1871
2062
|
}
|
|
@@ -1888,17 +2079,17 @@ Status DBImpl::SwitchMemtable(ColumnFamilyData* cfd, WriteContext* context) {
|
|
|
1888
2079
|
}
|
|
1889
2080
|
|
|
1890
2081
|
cfd->mem()->SetNextLogNumber(logfile_number_);
|
|
2082
|
+
assert(new_mem != nullptr);
|
|
1891
2083
|
cfd->imm()->Add(cfd->mem(), &context->memtables_to_free_);
|
|
1892
2084
|
new_mem->Ref();
|
|
1893
2085
|
cfd->SetMemtable(new_mem);
|
|
1894
2086
|
InstallSuperVersionAndScheduleWork(cfd, &context->superversion_context,
|
|
1895
2087
|
mutable_cf_options);
|
|
2088
|
+
|
|
1896
2089
|
#ifndef ROCKSDB_LITE
|
|
1897
|
-
mutex_.Unlock();
|
|
1898
2090
|
// Notify client that memtable is sealed, now that we have successfully
|
|
1899
2091
|
// installed a new memtable
|
|
1900
2092
|
NotifyOnMemTableSealed(cfd, memtable_info);
|
|
1901
|
-
mutex_.Lock();
|
|
1902
2093
|
#endif // ROCKSDB_LITE
|
|
1903
2094
|
// It is possible that we got here without checking the value of i_os, but
|
|
1904
2095
|
// that is okay. If we did, it most likely means that s was already an error.
|
|
@@ -1933,29 +2124,25 @@ size_t DBImpl::GetWalPreallocateBlockSize(uint64_t write_buffer_size) const {
|
|
|
1933
2124
|
// can call if they wish
|
|
1934
2125
|
Status DB::Put(const WriteOptions& opt, ColumnFamilyHandle* column_family,
|
|
1935
2126
|
const Slice& key, const Slice& value) {
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
WriteBatch batch(key.size() + value.size() + 24);
|
|
1941
|
-
Status s = batch.Put(column_family, key, value);
|
|
1942
|
-
if (!s.ok()) {
|
|
1943
|
-
return s;
|
|
1944
|
-
}
|
|
1945
|
-
return Write(opt, &batch);
|
|
1946
|
-
}
|
|
1947
|
-
const Slice* ts = opt.timestamp;
|
|
1948
|
-
assert(nullptr != ts);
|
|
1949
|
-
size_t ts_sz = ts->size();
|
|
1950
|
-
assert(column_family->GetComparator());
|
|
1951
|
-
assert(ts_sz == column_family->GetComparator()->timestamp_size());
|
|
1952
|
-
WriteBatch batch(key.size() + ts_sz + value.size() + 24, /*max_bytes=*/0,
|
|
1953
|
-
ts_sz);
|
|
2127
|
+
// Pre-allocate size of write batch conservatively.
|
|
2128
|
+
// 8 bytes are taken by header, 4 bytes for count, 1 byte for type,
|
|
2129
|
+
// and we allocate 11 extra bytes for key length, as well as value length.
|
|
2130
|
+
WriteBatch batch(key.size() + value.size() + 24);
|
|
1954
2131
|
Status s = batch.Put(column_family, key, value);
|
|
1955
2132
|
if (!s.ok()) {
|
|
1956
2133
|
return s;
|
|
1957
2134
|
}
|
|
1958
|
-
|
|
2135
|
+
return Write(opt, &batch);
|
|
2136
|
+
}
|
|
2137
|
+
|
|
2138
|
+
Status DB::Put(const WriteOptions& opt, ColumnFamilyHandle* column_family,
|
|
2139
|
+
const Slice& key, const Slice& ts, const Slice& value) {
|
|
2140
|
+
ColumnFamilyHandle* default_cf = DefaultColumnFamily();
|
|
2141
|
+
assert(default_cf);
|
|
2142
|
+
const Comparator* const default_cf_ucmp = default_cf->GetComparator();
|
|
2143
|
+
assert(default_cf_ucmp);
|
|
2144
|
+
WriteBatch batch(0, 0, 0, default_cf_ucmp->timestamp_size());
|
|
2145
|
+
Status s = batch.Put(column_family, key, ts, value);
|
|
1959
2146
|
if (!s.ok()) {
|
|
1960
2147
|
return s;
|
|
1961
2148
|
}
|
|
@@ -1964,27 +2151,22 @@ Status DB::Put(const WriteOptions& opt, ColumnFamilyHandle* column_family,
|
|
|
1964
2151
|
|
|
1965
2152
|
Status DB::Delete(const WriteOptions& opt, ColumnFamilyHandle* column_family,
|
|
1966
2153
|
const Slice& key) {
|
|
1967
|
-
|
|
1968
|
-
WriteBatch batch;
|
|
1969
|
-
Status s = batch.Delete(column_family, key);
|
|
1970
|
-
if (!s.ok()) {
|
|
1971
|
-
return s;
|
|
1972
|
-
}
|
|
1973
|
-
return Write(opt, &batch);
|
|
1974
|
-
}
|
|
1975
|
-
const Slice* ts = opt.timestamp;
|
|
1976
|
-
assert(ts != nullptr);
|
|
1977
|
-
const size_t ts_sz = ts->size();
|
|
1978
|
-
constexpr size_t kKeyAndValueLenSize = 11;
|
|
1979
|
-
constexpr size_t kWriteBatchOverhead =
|
|
1980
|
-
WriteBatchInternal::kHeader + sizeof(ValueType) + kKeyAndValueLenSize;
|
|
1981
|
-
WriteBatch batch(key.size() + ts_sz + kWriteBatchOverhead, /*max_bytes=*/0,
|
|
1982
|
-
ts_sz);
|
|
2154
|
+
WriteBatch batch;
|
|
1983
2155
|
Status s = batch.Delete(column_family, key);
|
|
1984
2156
|
if (!s.ok()) {
|
|
1985
2157
|
return s;
|
|
1986
2158
|
}
|
|
1987
|
-
|
|
2159
|
+
return Write(opt, &batch);
|
|
2160
|
+
}
|
|
2161
|
+
|
|
2162
|
+
Status DB::Delete(const WriteOptions& opt, ColumnFamilyHandle* column_family,
|
|
2163
|
+
const Slice& key, const Slice& ts) {
|
|
2164
|
+
ColumnFamilyHandle* default_cf = DefaultColumnFamily();
|
|
2165
|
+
assert(default_cf);
|
|
2166
|
+
const Comparator* const default_cf_ucmp = default_cf->GetComparator();
|
|
2167
|
+
assert(default_cf_ucmp);
|
|
2168
|
+
WriteBatch batch(0, 0, 0, default_cf_ucmp->timestamp_size());
|
|
2169
|
+
Status s = batch.Delete(column_family, key, ts);
|
|
1988
2170
|
if (!s.ok()) {
|
|
1989
2171
|
return s;
|
|
1990
2172
|
}
|
|
@@ -2001,6 +2183,21 @@ Status DB::SingleDelete(const WriteOptions& opt,
|
|
|
2001
2183
|
return Write(opt, &batch);
|
|
2002
2184
|
}
|
|
2003
2185
|
|
|
2186
|
+
Status DB::SingleDelete(const WriteOptions& opt,
|
|
2187
|
+
ColumnFamilyHandle* column_family, const Slice& key,
|
|
2188
|
+
const Slice& ts) {
|
|
2189
|
+
ColumnFamilyHandle* default_cf = DefaultColumnFamily();
|
|
2190
|
+
assert(default_cf);
|
|
2191
|
+
const Comparator* const default_cf_ucmp = default_cf->GetComparator();
|
|
2192
|
+
assert(default_cf_ucmp);
|
|
2193
|
+
WriteBatch batch(0, 0, 0, default_cf_ucmp->timestamp_size());
|
|
2194
|
+
Status s = batch.SingleDelete(column_family, key, ts);
|
|
2195
|
+
if (!s.ok()) {
|
|
2196
|
+
return s;
|
|
2197
|
+
}
|
|
2198
|
+
return Write(opt, &batch);
|
|
2199
|
+
}
|
|
2200
|
+
|
|
2004
2201
|
Status DB::DeleteRange(const WriteOptions& opt,
|
|
2005
2202
|
ColumnFamilyHandle* column_family,
|
|
2006
2203
|
const Slice& begin_key, const Slice& end_key) {
|