@nxtedition/rocksdb 5.2.21 → 5.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +510 -967
- package/binding.gyp +78 -72
- package/chained-batch.js +1 -2
- package/deps/rocksdb/build_version.cc +70 -4
- package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
- package/deps/rocksdb/rocksdb/Makefile +459 -469
- package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
- package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
- package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
- package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
- package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
- package/deps/rocksdb/rocksdb/db/builder.h +16 -37
- package/deps/rocksdb/rocksdb/db/c.cc +413 -208
- package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
- package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
- package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
- package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
- package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
- package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
- package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
- package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
- package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
- package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
- package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
- package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
- package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
- package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
- package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
- package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
- package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
- package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
- package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
- package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
- package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
- package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
- package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
- package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
- package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
- package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
- package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
- package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
- package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
- package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
- package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
- package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
- package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
- package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
- package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
- package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
- package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
- package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
- package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
- package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
- package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
- package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
- package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
- package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
- package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
- package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
- package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
- package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
- package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
- package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
- package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
- package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
- package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
- package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
- package/deps/rocksdb/rocksdb/env/env.cc +632 -42
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
- package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
- package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
- package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
- package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
- package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
- package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
- package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
- package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
- package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
- package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
- package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
- package/deps/rocksdb/rocksdb/file/filename.h +13 -8
- package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
- package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
- package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
- package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
- package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
- package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
- package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
- package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
- package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
- package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
- package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
- package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
- package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
- package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
- package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
- package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
- package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
- package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
- package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
- package/deps/rocksdb/rocksdb/options/options.cc +49 -17
- package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
- package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
- package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
- package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
- package/deps/rocksdb/rocksdb/port/lang.h +52 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
- package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
- package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
- package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
- package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
- package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
- package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
- package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
- package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
- package/deps/rocksdb/rocksdb/python.mk +9 -0
- package/deps/rocksdb/rocksdb/src.mk +82 -34
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
- package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
- package/deps/rocksdb/rocksdb/table/format.cc +258 -104
- package/deps/rocksdb/rocksdb/table/format.h +120 -109
- package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
- package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
- package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
- package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
- package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
- package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
- package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
- package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
- package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
- package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
- package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
- package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
- package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
- package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
- package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
- package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
- package/deps/rocksdb/rocksdb/util/channel.h +2 -0
- package/deps/rocksdb/rocksdb/util/coding.h +1 -33
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
- package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
- package/deps/rocksdb/rocksdb/util/compression.h +212 -7
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
- package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
- package/deps/rocksdb/rocksdb/util/defer.h +30 -1
- package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
- package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
- package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
- package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
- package/deps/rocksdb/rocksdb/util/hash.h +31 -1
- package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
- package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
- package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
- package/deps/rocksdb/rocksdb/util/heap.h +6 -1
- package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
- package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/util/math.h +74 -7
- package/deps/rocksdb/rocksdb/util/math128.h +13 -1
- package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
- package/deps/rocksdb/rocksdb/util/random.cc +9 -0
- package/deps/rocksdb/rocksdb/util/random.h +6 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
- package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
- package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
- package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
- package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
- package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
- package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
- package/deps/rocksdb/rocksdb/util/status.cc +32 -29
- package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
- package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
- package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
- package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
- package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
- package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
- package/deps/rocksdb/rocksdb/util/timer.h +55 -46
- package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
- package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
- package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
- package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
- package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
- package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
- package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
- package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
- package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
- package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
- package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
- package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
- package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
- package/deps/rocksdb/rocksdb.gyp +425 -446
- package/index.js +5 -87
- package/package-lock.json +23687 -0
- package/package.json +8 -9
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/README.md +0 -32
- package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
- package/deps/rocksdb/rocksdb/hdfs/README +0 -23
- package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
- package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
- package/deps/rocksdb/rocksdb/port/README +0 -10
- package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
- package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
- package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
- package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
- package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
- package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
- package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
- package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
- package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
- package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
- package/deps/snappy/snappy-1.1.7/README.md +0 -149
- package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
//
|
|
6
|
+
|
|
7
|
+
#pragma once
|
|
8
|
+
#include <algorithm>
|
|
9
|
+
|
|
10
|
+
#include "db/version_edit.h"
|
|
11
|
+
|
|
12
|
+
namespace ROCKSDB_NAMESPACE {
|
|
13
|
+
// We boost files that are closer to TTL limit. This boosting could be
|
|
14
|
+
// through FileMetaData.compensated_file_size but this compensated size
|
|
15
|
+
// is widely used as something similar to file size so dramatically boost
|
|
16
|
+
// the value might cause unintended consequences.
|
|
17
|
+
//
|
|
18
|
+
// This boosting algorithm can go very fancy, but here we use a simple
|
|
19
|
+
// formula which can satisify:
|
|
20
|
+
// (1) Different levels are triggered slightly differently to avoid
|
|
21
|
+
// too many cascading cases
|
|
22
|
+
// (2) Files in the same level get boosting more when TTL gets closer.
|
|
23
|
+
//
|
|
24
|
+
// Don't do any boosting before TTL has past by half. This is to make
|
|
25
|
+
// sure lower write amp for most of the case. And all levels should be
|
|
26
|
+
// fully boosted when total TTL compaction threshold triggers.
|
|
27
|
+
// Differientiate boosting ranges of each level by 1/2. This will make
|
|
28
|
+
// range for each level exponentially increasing. We could do it by
|
|
29
|
+
// having them to be equal, or go even fancier. We can adjust it after
|
|
30
|
+
// we observe the behavior in production.
|
|
31
|
+
// The threshold starting boosting:
|
|
32
|
+
// +------------------------------------------------------------------ +
|
|
33
|
+
// ^ ^ ^ ^ ^ ^
|
|
34
|
+
// Age 0 ... | | second last level thresold
|
|
35
|
+
// | |
|
|
36
|
+
// | third last level
|
|
37
|
+
// |
|
|
38
|
+
// forth last level
|
|
39
|
+
//
|
|
40
|
+
// We arbitrarily set with 0 when a file is aged boost_age_start and
|
|
41
|
+
// grow linearly. The ratio is arbitrarily set so that when the next level
|
|
42
|
+
// starts to boost, the previous level's boosting amount is 16.
|
|
43
|
+
class FileTtlBooster {
|
|
44
|
+
public:
|
|
45
|
+
FileTtlBooster(uint64_t current_time, uint64_t ttl, int num_non_empty_levels,
|
|
46
|
+
int level)
|
|
47
|
+
: current_time_(current_time) {
|
|
48
|
+
if (ttl == 0 || level == 0 || level >= num_non_empty_levels - 1) {
|
|
49
|
+
enabled_ = false;
|
|
50
|
+
boost_age_start_ = 0;
|
|
51
|
+
boost_step_ = 1;
|
|
52
|
+
} else {
|
|
53
|
+
enabled_ = true;
|
|
54
|
+
uint64_t all_boost_start_age = ttl / 2;
|
|
55
|
+
uint64_t all_boost_age_range = (ttl / 32) * 31 - all_boost_start_age;
|
|
56
|
+
uint64_t boost_age_range =
|
|
57
|
+
all_boost_age_range >> (num_non_empty_levels - level - 1);
|
|
58
|
+
boost_age_start_ = all_boost_start_age + boost_age_range;
|
|
59
|
+
const uint64_t kBoostRatio = 16;
|
|
60
|
+
// prevent 0 value to avoid divide 0 error.
|
|
61
|
+
boost_step_ = std::max(boost_age_range / kBoostRatio, uint64_t{1});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
uint64_t GetBoostScore(FileMetaData* f) {
|
|
66
|
+
if (!enabled_) {
|
|
67
|
+
return 1;
|
|
68
|
+
}
|
|
69
|
+
uint64_t oldest_ancester_time = f->TryGetOldestAncesterTime();
|
|
70
|
+
if (oldest_ancester_time >= current_time_) {
|
|
71
|
+
return 1;
|
|
72
|
+
}
|
|
73
|
+
uint64_t age = current_time_ - oldest_ancester_time;
|
|
74
|
+
if (age > boost_age_start_) {
|
|
75
|
+
// Use integer just for convenience.
|
|
76
|
+
// We could make all file_to_order double if we want.
|
|
77
|
+
// Technically this can overflow if users override timing and
|
|
78
|
+
// give a very high current time. Ignore the case for simplicity.
|
|
79
|
+
// Boosting is addition to current value, so +1. This will effectively
|
|
80
|
+
// make boosting to kick in after the first boost_step_ is reached.
|
|
81
|
+
return (age - boost_age_start_) / boost_step_ + 1;
|
|
82
|
+
}
|
|
83
|
+
return 1;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
private:
|
|
87
|
+
bool enabled_;
|
|
88
|
+
uint64_t current_time_;
|
|
89
|
+
uint64_t boost_age_start_;
|
|
90
|
+
uint64_t boost_step_;
|
|
91
|
+
};
|
|
92
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -8,7 +8,24 @@
|
|
|
8
8
|
|
|
9
9
|
#include <algorithm>
|
|
10
10
|
|
|
11
|
+
#include "rocksdb/utilities/customizable_util.h"
|
|
12
|
+
#include "rocksdb/utilities/object_registry.h"
|
|
13
|
+
#include "rocksdb/utilities/options_type.h"
|
|
14
|
+
|
|
11
15
|
namespace ROCKSDB_NAMESPACE {
|
|
16
|
+
static std::unordered_map<std::string, OptionTypeInfo>
|
|
17
|
+
sst_fixed_prefix_type_info = {
|
|
18
|
+
#ifndef ROCKSDB_LITE
|
|
19
|
+
{"length",
|
|
20
|
+
{0, OptionType::kSizeT, OptionVerificationType::kNormal,
|
|
21
|
+
OptionTypeFlags::kNone}},
|
|
22
|
+
#endif // ROCKSDB_LITE
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
SstPartitionerFixedPrefixFactory::SstPartitionerFixedPrefixFactory(size_t len)
|
|
26
|
+
: len_(len) {
|
|
27
|
+
RegisterOptions("Length", &len_, &sst_fixed_prefix_type_info);
|
|
28
|
+
}
|
|
12
29
|
|
|
13
30
|
PartitionerResult SstPartitionerFixedPrefix::ShouldPartition(
|
|
14
31
|
const PartitionerRequest& request) {
|
|
@@ -41,4 +58,33 @@ std::shared_ptr<SstPartitionerFactory> NewSstPartitionerFixedPrefixFactory(
|
|
|
41
58
|
return std::make_shared<SstPartitionerFixedPrefixFactory>(prefix_len);
|
|
42
59
|
}
|
|
43
60
|
|
|
61
|
+
#ifndef ROCKSDB_LITE
|
|
62
|
+
namespace {
|
|
63
|
+
static int RegisterSstPartitionerFactories(ObjectLibrary& library,
|
|
64
|
+
const std::string& /*arg*/) {
|
|
65
|
+
library.AddFactory<SstPartitionerFactory>(
|
|
66
|
+
SstPartitionerFixedPrefixFactory::kClassName(),
|
|
67
|
+
[](const std::string& /*uri*/,
|
|
68
|
+
std::unique_ptr<SstPartitionerFactory>* guard,
|
|
69
|
+
std::string* /* errmsg */) {
|
|
70
|
+
guard->reset(new SstPartitionerFixedPrefixFactory(0));
|
|
71
|
+
return guard->get();
|
|
72
|
+
});
|
|
73
|
+
return 1;
|
|
74
|
+
}
|
|
75
|
+
} // namespace
|
|
76
|
+
#endif // ROCKSDB_LITE
|
|
77
|
+
|
|
78
|
+
Status SstPartitionerFactory::CreateFromString(
|
|
79
|
+
const ConfigOptions& options, const std::string& value,
|
|
80
|
+
std::shared_ptr<SstPartitionerFactory>* result) {
|
|
81
|
+
#ifndef ROCKSDB_LITE
|
|
82
|
+
static std::once_flag once;
|
|
83
|
+
std::call_once(once, [&]() {
|
|
84
|
+
RegisterSstPartitionerFactories(*(ObjectLibrary::Default().get()), "");
|
|
85
|
+
});
|
|
86
|
+
#endif // ROCKSDB_LITE
|
|
87
|
+
return LoadSharedObject<SstPartitionerFactory>(options, value, nullptr,
|
|
88
|
+
result);
|
|
89
|
+
}
|
|
44
90
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -317,7 +317,7 @@ class ComparatorDBTest
|
|
|
317
317
|
INSTANTIATE_TEST_CASE_P(FormatDef, ComparatorDBTest,
|
|
318
318
|
testing::Values(test::kDefaultFormatVersion));
|
|
319
319
|
INSTANTIATE_TEST_CASE_P(FormatLatest, ComparatorDBTest,
|
|
320
|
-
testing::Values(
|
|
320
|
+
testing::Values(kLatestFormatVersion));
|
|
321
321
|
|
|
322
322
|
TEST_P(ComparatorDBTest, Bytewise) {
|
|
323
323
|
for (int rand_seed = 301; rand_seed < 306; rand_seed++) {
|
|
@@ -44,7 +44,7 @@ Status VerifySstFileChecksum(const Options& options,
|
|
|
44
44
|
std::unique_ptr<FSRandomAccessFile> file;
|
|
45
45
|
uint64_t file_size;
|
|
46
46
|
InternalKeyComparator internal_comparator(options.comparator);
|
|
47
|
-
|
|
47
|
+
ImmutableOptions ioptions(options);
|
|
48
48
|
|
|
49
49
|
Status s = ioptions.fs->NewRandomAccessFile(file_path,
|
|
50
50
|
FileOptions(env_options),
|
|
@@ -56,10 +56,13 @@ Status VerifySstFileChecksum(const Options& options,
|
|
|
56
56
|
}
|
|
57
57
|
std::unique_ptr<TableReader> table_reader;
|
|
58
58
|
std::unique_ptr<RandomAccessFileReader> file_reader(
|
|
59
|
-
new RandomAccessFileReader(
|
|
59
|
+
new RandomAccessFileReader(
|
|
60
|
+
std::move(file), file_path, ioptions.clock, nullptr /* io_tracer */,
|
|
61
|
+
nullptr /* stats */, 0 /* hist_type */, nullptr /* file_read_hist */,
|
|
62
|
+
ioptions.rate_limiter.get()));
|
|
60
63
|
const bool kImmortal = true;
|
|
61
64
|
s = ioptions.table_factory->NewTableReader(
|
|
62
|
-
TableReaderOptions(ioptions, options.prefix_extractor
|
|
65
|
+
TableReaderOptions(ioptions, options.prefix_extractor, env_options,
|
|
63
66
|
internal_comparator, false /* skip_filters */,
|
|
64
67
|
!kImmortal, false /* force_direct_prefetch */,
|
|
65
68
|
-1 /* level */),
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
#include "db/db_test_util.h"
|
|
20
20
|
#include "db/log_format.h"
|
|
21
21
|
#include "db/version_set.h"
|
|
22
|
-
#include "env/composite_env_wrapper.h"
|
|
23
22
|
#include "file/filename.h"
|
|
24
23
|
#include "port/stack_trace.h"
|
|
25
24
|
#include "rocksdb/cache.h"
|
|
@@ -27,6 +26,7 @@
|
|
|
27
26
|
#include "rocksdb/db.h"
|
|
28
27
|
#include "rocksdb/env.h"
|
|
29
28
|
#include "rocksdb/table.h"
|
|
29
|
+
#include "rocksdb/utilities/transaction_db.h"
|
|
30
30
|
#include "rocksdb/write_batch.h"
|
|
31
31
|
#include "table/block_based/block_based_table_builder.h"
|
|
32
32
|
#include "table/meta_blocks.h"
|
|
@@ -40,11 +40,35 @@
|
|
|
40
40
|
namespace ROCKSDB_NAMESPACE {
|
|
41
41
|
|
|
42
42
|
static constexpr int kValueSize = 1000;
|
|
43
|
-
|
|
43
|
+
namespace {
|
|
44
|
+
// A wrapper that allows injection of errors.
|
|
45
|
+
class ErrorEnv : public EnvWrapper {
|
|
46
|
+
public:
|
|
47
|
+
bool writable_file_error_;
|
|
48
|
+
int num_writable_file_errors_;
|
|
49
|
+
|
|
50
|
+
explicit ErrorEnv(Env* _target)
|
|
51
|
+
: EnvWrapper(_target),
|
|
52
|
+
writable_file_error_(false),
|
|
53
|
+
num_writable_file_errors_(0) {}
|
|
54
|
+
const char* Name() const override { return "ErrorEnv"; }
|
|
55
|
+
|
|
56
|
+
virtual Status NewWritableFile(const std::string& fname,
|
|
57
|
+
std::unique_ptr<WritableFile>* result,
|
|
58
|
+
const EnvOptions& soptions) override {
|
|
59
|
+
result->reset();
|
|
60
|
+
if (writable_file_error_) {
|
|
61
|
+
++num_writable_file_errors_;
|
|
62
|
+
return Status::IOError(fname, "fake error");
|
|
63
|
+
}
|
|
64
|
+
return target()->NewWritableFile(fname, result, soptions);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
} // namespace
|
|
44
68
|
class CorruptionTest : public testing::Test {
|
|
45
69
|
public:
|
|
46
70
|
std::shared_ptr<Env> env_guard_;
|
|
47
|
-
|
|
71
|
+
ErrorEnv* env_;
|
|
48
72
|
std::string dbname_;
|
|
49
73
|
std::shared_ptr<Cache> tiny_cache_;
|
|
50
74
|
Options options_;
|
|
@@ -56,15 +80,10 @@ class CorruptionTest : public testing::Test {
|
|
|
56
80
|
// bug in recovery code. Keep it 4 for now to make the test passes.
|
|
57
81
|
tiny_cache_ = NewLRUCache(100, 4);
|
|
58
82
|
Env* base_env = Env::Default();
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
EXPECT_OK(s);
|
|
64
|
-
EXPECT_NE(Env::Default(), base_env);
|
|
65
|
-
}
|
|
66
|
-
#endif //! ROCKSDB_LITE
|
|
67
|
-
env_ = new test::ErrorEnv(base_env);
|
|
83
|
+
EXPECT_OK(
|
|
84
|
+
test::CreateEnvFromSystem(ConfigOptions(), &base_env, &env_guard_));
|
|
85
|
+
EXPECT_NE(base_env, nullptr);
|
|
86
|
+
env_ = new ErrorEnv(base_env);
|
|
68
87
|
options_.wal_recovery_mode = WALRecoveryMode::kTolerateCorruptedTailRecords;
|
|
69
88
|
options_.env = env_;
|
|
70
89
|
dbname_ = test::PerThreadDBPath(env_, "corruption_test");
|
|
@@ -257,6 +276,42 @@ class CorruptionTest : public testing::Test {
|
|
|
257
276
|
}
|
|
258
277
|
return Slice(*storage);
|
|
259
278
|
}
|
|
279
|
+
|
|
280
|
+
void GetSortedWalFiles(std::vector<uint64_t>& file_nums) {
|
|
281
|
+
std::vector<std::string> tmp_files;
|
|
282
|
+
ASSERT_OK(env_->GetChildren(dbname_, &tmp_files));
|
|
283
|
+
FileType type = kWalFile;
|
|
284
|
+
for (const auto& file : tmp_files) {
|
|
285
|
+
uint64_t number = 0;
|
|
286
|
+
if (ParseFileName(file, &number, &type) && type == kWalFile) {
|
|
287
|
+
file_nums.push_back(number);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
std::sort(file_nums.begin(), file_nums.end());
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
void CorruptFileWithTruncation(FileType file, uint64_t number,
|
|
294
|
+
uint64_t bytes_to_truncate = 0) {
|
|
295
|
+
std::string path;
|
|
296
|
+
switch (file) {
|
|
297
|
+
case FileType::kWalFile:
|
|
298
|
+
path = LogFileName(dbname_, number);
|
|
299
|
+
break;
|
|
300
|
+
// TODO: Add other file types as this method is being used for those file
|
|
301
|
+
// types.
|
|
302
|
+
default:
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
uint64_t old_size = 0;
|
|
306
|
+
ASSERT_OK(env_->GetFileSize(path, &old_size));
|
|
307
|
+
assert(old_size > bytes_to_truncate);
|
|
308
|
+
uint64_t new_size = old_size - bytes_to_truncate;
|
|
309
|
+
// If bytes_to_truncate == 0, it will do full truncation.
|
|
310
|
+
if (bytes_to_truncate == 0) {
|
|
311
|
+
new_size = old_size;
|
|
312
|
+
}
|
|
313
|
+
ASSERT_OK(test::TruncateFile(env_, path, new_size));
|
|
314
|
+
}
|
|
260
315
|
};
|
|
261
316
|
|
|
262
317
|
TEST_F(CorruptionTest, Recovery) {
|
|
@@ -539,19 +594,20 @@ TEST_F(CorruptionTest, RangeDeletionCorrupted) {
|
|
|
539
594
|
ASSERT_EQ(static_cast<size_t>(1), metadata.size());
|
|
540
595
|
std::string filename = dbname_ + metadata[0].name;
|
|
541
596
|
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
std::unique_ptr<RandomAccessFileReader> file_reader
|
|
545
|
-
|
|
546
|
-
|
|
597
|
+
FileOptions file_opts;
|
|
598
|
+
const auto& fs = options_.env->GetFileSystem();
|
|
599
|
+
std::unique_ptr<RandomAccessFileReader> file_reader;
|
|
600
|
+
ASSERT_OK(RandomAccessFileReader::Create(fs, filename, file_opts,
|
|
601
|
+
&file_reader, nullptr));
|
|
547
602
|
|
|
548
603
|
uint64_t file_size;
|
|
549
|
-
ASSERT_OK(
|
|
604
|
+
ASSERT_OK(
|
|
605
|
+
fs->GetFileSize(filename, file_opts.io_options, &file_size, nullptr));
|
|
550
606
|
|
|
551
607
|
BlockHandle range_del_handle;
|
|
552
|
-
ASSERT_OK(
|
|
608
|
+
ASSERT_OK(FindMetaBlockInFile(
|
|
553
609
|
file_reader.get(), file_size, kBlockBasedTableMagicNumber,
|
|
554
|
-
|
|
610
|
+
ImmutableOptions(options_), kRangeDelBlockName, &range_del_handle));
|
|
555
611
|
|
|
556
612
|
ASSERT_OK(TryReopen());
|
|
557
613
|
ASSERT_OK(test::CorruptFile(env_, filename,
|
|
@@ -882,7 +938,7 @@ TEST_F(CorruptionTest, VerifyWholeTableChecksum) {
|
|
|
882
938
|
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
883
939
|
int count{0};
|
|
884
940
|
SyncPoint::GetInstance()->SetCallBack(
|
|
885
|
-
"DBImpl::
|
|
941
|
+
"DBImpl::VerifyFullFileChecksum:mismatch", [&](void* arg) {
|
|
886
942
|
auto* s = reinterpret_cast<Status*>(arg);
|
|
887
943
|
ASSERT_NE(s, nullptr);
|
|
888
944
|
++count;
|
|
@@ -893,15 +949,314 @@ TEST_F(CorruptionTest, VerifyWholeTableChecksum) {
|
|
|
893
949
|
ASSERT_EQ(1, count);
|
|
894
950
|
}
|
|
895
951
|
|
|
896
|
-
|
|
952
|
+
class CrashDuringRecoveryWithCorruptionTest
|
|
953
|
+
: public CorruptionTest,
|
|
954
|
+
public testing::WithParamInterface<std::tuple<bool, bool>> {
|
|
955
|
+
public:
|
|
956
|
+
explicit CrashDuringRecoveryWithCorruptionTest()
|
|
957
|
+
: CorruptionTest(),
|
|
958
|
+
avoid_flush_during_recovery_(std::get<0>(GetParam())),
|
|
959
|
+
track_and_verify_wals_in_manifest_(std::get<1>(GetParam())) {}
|
|
960
|
+
|
|
961
|
+
protected:
|
|
962
|
+
const bool avoid_flush_during_recovery_;
|
|
963
|
+
const bool track_and_verify_wals_in_manifest_;
|
|
964
|
+
};
|
|
965
|
+
|
|
966
|
+
INSTANTIATE_TEST_CASE_P(CorruptionTest, CrashDuringRecoveryWithCorruptionTest,
|
|
967
|
+
::testing::Values(std::make_tuple(true, false),
|
|
968
|
+
std::make_tuple(false, false),
|
|
969
|
+
std::make_tuple(true, true),
|
|
970
|
+
std::make_tuple(false, true)));
|
|
971
|
+
|
|
972
|
+
// In case of non-TransactionDB with avoid_flush_during_recovery = true, RocksDB
|
|
973
|
+
// won't flush the data from WAL to L0 for all column families if possible. As a
|
|
974
|
+
// result, not all column families can increase their log_numbers, and
|
|
975
|
+
// min_log_number_to_keep won't change.
|
|
976
|
+
// It may prematurely persist a new MANIFEST even before we can declare the DB
|
|
977
|
+
// is in consistent state after recovery (this is when the new WAL is synced)
|
|
978
|
+
// and advances log_numbers for some column families.
|
|
979
|
+
//
|
|
980
|
+
// If there is power failure before we sync the new WAL, we will end up in
|
|
981
|
+
// a situation in which after persisting the MANIFEST, RocksDB will see some
|
|
982
|
+
// column families' log_numbers larger than the corrupted wal, and
|
|
983
|
+
// "Column family inconsistency: SST file contains data beyond the point of
|
|
984
|
+
// corruption" error will be hit, causing recovery to fail.
|
|
985
|
+
//
|
|
986
|
+
// After adding the fix, corrupted WALs whose numbers are larger than the
|
|
987
|
+
// corrupted wal and smaller than the new WAL are moved to a separate folder.
|
|
988
|
+
// Only after new WAL is synced, RocksDB persist a new MANIFEST with column
|
|
989
|
+
// families to ensure RocksDB is in consistent state.
|
|
990
|
+
// RocksDB writes an empty WriteBatch as a sentinel to the new WAL which is
|
|
991
|
+
// synced immediately afterwards. The sequence number of the sentinel
|
|
992
|
+
// WriteBatch will be the next sequence number immediately after the largest
|
|
993
|
+
// sequence number recovered from previous WALs and MANIFEST because of which DB
|
|
994
|
+
// will be in consistent state.
|
|
995
|
+
TEST_P(CrashDuringRecoveryWithCorruptionTest, CrashDuringRecovery) {
|
|
996
|
+
CloseDb();
|
|
997
|
+
Options options;
|
|
998
|
+
options.track_and_verify_wals_in_manifest =
|
|
999
|
+
track_and_verify_wals_in_manifest_;
|
|
1000
|
+
options.wal_recovery_mode = WALRecoveryMode::kPointInTimeRecovery;
|
|
1001
|
+
options.avoid_flush_during_recovery = false;
|
|
1002
|
+
options.env = env_;
|
|
1003
|
+
ASSERT_OK(DestroyDB(dbname_, options));
|
|
1004
|
+
options.create_if_missing = true;
|
|
1005
|
+
options.max_write_buffer_number = 3;
|
|
1006
|
+
|
|
1007
|
+
Reopen(&options);
|
|
1008
|
+
Status s;
|
|
1009
|
+
const std::string test_cf_name = "test_cf";
|
|
1010
|
+
ColumnFamilyHandle* cfh = nullptr;
|
|
1011
|
+
s = db_->CreateColumnFamily(options, test_cf_name, &cfh);
|
|
1012
|
+
ASSERT_OK(s);
|
|
1013
|
+
delete cfh;
|
|
1014
|
+
CloseDb();
|
|
1015
|
+
|
|
1016
|
+
std::vector<ColumnFamilyDescriptor> cf_descs;
|
|
1017
|
+
cf_descs.emplace_back(kDefaultColumnFamilyName, options);
|
|
1018
|
+
cf_descs.emplace_back(test_cf_name, options);
|
|
1019
|
+
std::vector<ColumnFamilyHandle*> handles;
|
|
1020
|
+
|
|
1021
|
+
// 1. Open and populate the DB. Write and flush default_cf several times to
|
|
1022
|
+
// advance wal number so that some column families have advanced log_number
|
|
1023
|
+
// while other don't.
|
|
1024
|
+
{
|
|
1025
|
+
ASSERT_OK(DB::Open(options, dbname_, cf_descs, &handles, &db_));
|
|
1026
|
+
auto* dbimpl = static_cast_with_check<DBImpl>(db_);
|
|
1027
|
+
assert(dbimpl);
|
|
1028
|
+
|
|
1029
|
+
// Write one key to test_cf.
|
|
1030
|
+
ASSERT_OK(db_->Put(WriteOptions(), handles[1], "old_key", "dontcare"));
|
|
1031
|
+
// Write to default_cf and flush this cf several times to advance wal
|
|
1032
|
+
// number.
|
|
1033
|
+
for (int i = 0; i < 2; ++i) {
|
|
1034
|
+
ASSERT_OK(db_->Put(WriteOptions(), "key" + std::to_string(i), "value"));
|
|
1035
|
+
ASSERT_OK(dbimpl->TEST_SwitchMemtable());
|
|
1036
|
+
}
|
|
1037
|
+
ASSERT_OK(db_->Put(WriteOptions(), handles[1], "dontcare", "dontcare"));
|
|
1038
|
+
|
|
1039
|
+
for (auto* h : handles) {
|
|
1040
|
+
delete h;
|
|
1041
|
+
}
|
|
1042
|
+
handles.clear();
|
|
1043
|
+
CloseDb();
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
// 2. Corrupt second last wal file to emulate power reset which caused the DB
|
|
1047
|
+
// to lose the un-synced WAL.
|
|
1048
|
+
{
|
|
1049
|
+
std::vector<uint64_t> file_nums;
|
|
1050
|
+
GetSortedWalFiles(file_nums);
|
|
1051
|
+
size_t size = file_nums.size();
|
|
1052
|
+
uint64_t log_num = file_nums[size - 2];
|
|
1053
|
+
CorruptFileWithTruncation(FileType::kWalFile, log_num,
|
|
1054
|
+
/*bytes_to_truncate=*/8);
|
|
1055
|
+
}
|
|
897
1056
|
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
1057
|
+
// 3. After first crash reopen the DB which contains corrupted WAL. Default
|
|
1058
|
+
// family has higher log number than corrupted wal number.
|
|
1059
|
+
//
|
|
1060
|
+
// Case1: If avoid_flush_during_recovery = true, RocksDB won't flush the data
|
|
1061
|
+
// from WAL to L0 for all column families (test_cf_name in this case). As a
|
|
1062
|
+
// result, not all column families can increase their log_numbers, and
|
|
1063
|
+
// min_log_number_to_keep won't change.
|
|
1064
|
+
//
|
|
1065
|
+
// Case2: If avoid_flush_during_recovery = false, all column families have
|
|
1066
|
+
// flushed their data from WAL to L0 during recovery, and none of them will
|
|
1067
|
+
// ever need to read the WALs again.
|
|
1068
|
+
{
|
|
1069
|
+
options.avoid_flush_during_recovery = avoid_flush_during_recovery_;
|
|
1070
|
+
s = DB::Open(options, dbname_, cf_descs, &handles, &db_);
|
|
1071
|
+
ASSERT_OK(s);
|
|
1072
|
+
for (auto* h : handles) {
|
|
1073
|
+
delete h;
|
|
1074
|
+
}
|
|
1075
|
+
handles.clear();
|
|
1076
|
+
CloseDb();
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
// 4. Corrupt max_wal_num to emulate second power reset which caused the
|
|
1080
|
+
// DB to again lose the un-synced WAL.
|
|
1081
|
+
{
|
|
1082
|
+
std::vector<uint64_t> file_nums;
|
|
1083
|
+
GetSortedWalFiles(file_nums);
|
|
1084
|
+
size_t size = file_nums.size();
|
|
1085
|
+
uint64_t log_num = file_nums[size - 1];
|
|
1086
|
+
CorruptFileWithTruncation(FileType::kWalFile, log_num);
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
// 5. After second crash reopen the db with second corruption. Default family
|
|
1090
|
+
// has higher log number than corrupted wal number.
|
|
1091
|
+
//
|
|
1092
|
+
// Case1: If avoid_flush_during_recovery = true, we persist a new
|
|
1093
|
+
// MANIFEST with advanced log_numbers for some column families only after
|
|
1094
|
+
// syncing the WAL. So during second crash, RocksDB will skip the corrupted
|
|
1095
|
+
// WAL files as they have been moved to different folder. Since newly synced
|
|
1096
|
+
// WAL file's sequence number (sentinel WriteBatch) will be the next
|
|
1097
|
+
// sequence number immediately after the largest sequence number recovered
|
|
1098
|
+
// from previous WALs and MANIFEST, db will be in consistent state and opens
|
|
1099
|
+
// successfully.
|
|
1100
|
+
//
|
|
1101
|
+
// Case2: If avoid_flush_during_recovery = false, the corrupted WAL is below
|
|
1102
|
+
// this number. So during a second crash after persisting the new MANIFEST,
|
|
1103
|
+
// RocksDB will skip the corrupted WAL(s) because they are all below this
|
|
1104
|
+
// bound. Therefore, we won't hit the "column family inconsistency" error
|
|
1105
|
+
// message.
|
|
1106
|
+
{
|
|
1107
|
+
options.avoid_flush_during_recovery = avoid_flush_during_recovery_;
|
|
1108
|
+
ASSERT_OK(DB::Open(options, dbname_, cf_descs, &handles, &db_));
|
|
1109
|
+
for (auto* h : handles) {
|
|
1110
|
+
delete h;
|
|
1111
|
+
}
|
|
1112
|
+
handles.clear();
|
|
1113
|
+
CloseDb();
|
|
1114
|
+
}
|
|
901
1115
|
}
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
1116
|
+
|
|
1117
|
+
// In case of TransactionDB, it enables two-phase-commit. The prepare section of
|
|
1118
|
+
// an uncommitted transaction always need to be kept. Even if we perform flush
|
|
1119
|
+
// during recovery, we may still need to hold an old WAL. The
|
|
1120
|
+
// min_log_number_to_keep won't change, and "Column family inconsistency: SST
|
|
1121
|
+
// file contains data beyond the point of corruption" error will be hit, causing
|
|
1122
|
+
// recovery to fail.
|
|
1123
|
+
//
|
|
1124
|
+
// After adding the fix, corrupted WALs whose numbers are larger than the
|
|
1125
|
+
// corrupted wal and smaller than the new WAL are moved to a separate folder.
|
|
1126
|
+
// Only after new WAL is synced, RocksDB persist a new MANIFEST with column
|
|
1127
|
+
// families to ensure RocksDB is in consistent state.
|
|
1128
|
+
// RocksDB writes an empty WriteBatch as a sentinel to the new WAL which is
|
|
1129
|
+
// synced immediately afterwards. The sequence number of the sentinel
|
|
1130
|
+
// WriteBatch will be the next sequence number immediately after the largest
|
|
1131
|
+
// sequence number recovered from previous WALs and MANIFEST because of which DB
|
|
1132
|
+
// will be in consistent state.
|
|
1133
|
+
TEST_P(CrashDuringRecoveryWithCorruptionTest, TxnDbCrashDuringRecovery) {
|
|
1134
|
+
CloseDb();
|
|
1135
|
+
Options options;
|
|
1136
|
+
options.wal_recovery_mode = WALRecoveryMode::kPointInTimeRecovery;
|
|
1137
|
+
options.track_and_verify_wals_in_manifest =
|
|
1138
|
+
track_and_verify_wals_in_manifest_;
|
|
1139
|
+
options.avoid_flush_during_recovery = false;
|
|
1140
|
+
options.env = env_;
|
|
1141
|
+
ASSERT_OK(DestroyDB(dbname_, options));
|
|
1142
|
+
options.create_if_missing = true;
|
|
1143
|
+
options.max_write_buffer_number = 3;
|
|
1144
|
+
Reopen(&options);
|
|
1145
|
+
|
|
1146
|
+
// Create cf test_cf_name.
|
|
1147
|
+
ColumnFamilyHandle* cfh = nullptr;
|
|
1148
|
+
const std::string test_cf_name = "test_cf";
|
|
1149
|
+
Status s = db_->CreateColumnFamily(options, test_cf_name, &cfh);
|
|
1150
|
+
ASSERT_OK(s);
|
|
1151
|
+
delete cfh;
|
|
1152
|
+
CloseDb();
|
|
1153
|
+
|
|
1154
|
+
std::vector<ColumnFamilyDescriptor> cf_descs;
|
|
1155
|
+
cf_descs.emplace_back(kDefaultColumnFamilyName, options);
|
|
1156
|
+
cf_descs.emplace_back(test_cf_name, options);
|
|
1157
|
+
std::vector<ColumnFamilyHandle*> handles;
|
|
1158
|
+
|
|
1159
|
+
TransactionDB* txn_db = nullptr;
|
|
1160
|
+
TransactionDBOptions txn_db_opts;
|
|
1161
|
+
|
|
1162
|
+
// 1. Open and populate the DB. Write and flush default_cf several times to
|
|
1163
|
+
// advance wal number so that some column families have advanced log_number
|
|
1164
|
+
// while other don't.
|
|
1165
|
+
{
|
|
1166
|
+
options.avoid_flush_during_recovery = avoid_flush_during_recovery_;
|
|
1167
|
+
ASSERT_OK(TransactionDB::Open(options, txn_db_opts, dbname_, cf_descs,
|
|
1168
|
+
&handles, &txn_db));
|
|
1169
|
+
|
|
1170
|
+
auto* txn = txn_db->BeginTransaction(WriteOptions(), TransactionOptions());
|
|
1171
|
+
// Put cf1
|
|
1172
|
+
ASSERT_OK(txn->Put(handles[1], "foo", "value"));
|
|
1173
|
+
ASSERT_OK(txn->SetName("txn0"));
|
|
1174
|
+
ASSERT_OK(txn->Prepare());
|
|
1175
|
+
delete txn;
|
|
1176
|
+
txn = nullptr;
|
|
1177
|
+
|
|
1178
|
+
auto* dbimpl = static_cast_with_check<DBImpl>(txn_db->GetRootDB());
|
|
1179
|
+
assert(dbimpl);
|
|
1180
|
+
|
|
1181
|
+
// Put and flush cf0
|
|
1182
|
+
for (int i = 0; i < 2; ++i) {
|
|
1183
|
+
ASSERT_OK(txn_db->Put(WriteOptions(), "dontcare", "value"));
|
|
1184
|
+
ASSERT_OK(dbimpl->TEST_SwitchMemtable());
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
// Put cf1
|
|
1188
|
+
txn = txn_db->BeginTransaction(WriteOptions(), TransactionOptions());
|
|
1189
|
+
ASSERT_OK(txn->Put(handles[1], "foo1", "value"));
|
|
1190
|
+
ASSERT_OK(txn->Commit());
|
|
1191
|
+
|
|
1192
|
+
delete txn;
|
|
1193
|
+
txn = nullptr;
|
|
1194
|
+
for (auto* h : handles) {
|
|
1195
|
+
delete h;
|
|
1196
|
+
}
|
|
1197
|
+
handles.clear();
|
|
1198
|
+
delete txn_db;
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
// 2. Corrupt second last wal to emulate power reset which caused the DB to
|
|
1202
|
+
// lose the un-synced WAL.
|
|
1203
|
+
{
|
|
1204
|
+
std::vector<uint64_t> file_nums;
|
|
1205
|
+
GetSortedWalFiles(file_nums);
|
|
1206
|
+
size_t size = file_nums.size();
|
|
1207
|
+
uint64_t log_num = file_nums[size - 2];
|
|
1208
|
+
CorruptFileWithTruncation(FileType::kWalFile, log_num,
|
|
1209
|
+
/*bytes_to_truncate=*/8);
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
// 3. After first crash reopen the DB which contains corrupted WAL. Default
|
|
1213
|
+
// family has higher log number than corrupted wal number. There may be old
|
|
1214
|
+
// WAL files that it must not delete because they can contain data of
|
|
1215
|
+
// uncommitted transactions. As a result, min_log_number_to_keep won't change.
|
|
1216
|
+
{
|
|
1217
|
+
options.avoid_flush_during_recovery = avoid_flush_during_recovery_;
|
|
1218
|
+
ASSERT_OK(TransactionDB::Open(options, txn_db_opts, dbname_, cf_descs,
|
|
1219
|
+
&handles, &txn_db));
|
|
1220
|
+
|
|
1221
|
+
for (auto* h : handles) {
|
|
1222
|
+
delete h;
|
|
1223
|
+
}
|
|
1224
|
+
handles.clear();
|
|
1225
|
+
delete txn_db;
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
// 4. Corrupt max_wal_num to emulate second power reset which caused the
|
|
1229
|
+
// DB to again lose the un-synced WAL.
|
|
1230
|
+
{
|
|
1231
|
+
std::vector<uint64_t> file_nums;
|
|
1232
|
+
GetSortedWalFiles(file_nums);
|
|
1233
|
+
size_t size = file_nums.size();
|
|
1234
|
+
uint64_t log_num = file_nums[size - 1];
|
|
1235
|
+
CorruptFileWithTruncation(FileType::kWalFile, log_num);
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
// 5. After second crash reopen the db with second corruption. Default family
|
|
1239
|
+
// has higher log number than corrupted wal number.
|
|
1240
|
+
// We persist a new MANIFEST with advanced log_numbers for some column
|
|
1241
|
+
// families only after syncing the WAL. So during second crash, RocksDB will
|
|
1242
|
+
// skip the corrupted WAL files as they have been moved to different folder.
|
|
1243
|
+
// Since newly synced WAL file's sequence number (sentinel WriteBatch) will be
|
|
1244
|
+
// the next sequence number immediately after the largest sequence number
|
|
1245
|
+
// recovered from previous WALs and MANIFEST, db will be in consistent state
|
|
1246
|
+
// and opens successfully.
|
|
1247
|
+
{
|
|
1248
|
+
options.avoid_flush_during_recovery = false;
|
|
1249
|
+
|
|
1250
|
+
ASSERT_OK(TransactionDB::Open(options, txn_db_opts, dbname_, cf_descs,
|
|
1251
|
+
&handles, &txn_db));
|
|
1252
|
+
for (auto* h : handles) {
|
|
1253
|
+
delete h;
|
|
1254
|
+
}
|
|
1255
|
+
delete txn_db;
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
905
1260
|
|
|
906
1261
|
int main(int argc, char** argv) {
|
|
907
1262
|
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|