@nxtedition/rocksdb 13.5.8 → 13.5.9
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 +209 -2
- package/deps/rocksdb/rocksdb/BUCK +12 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
- package/deps/rocksdb/rocksdb/Makefile +28 -23
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
- package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
- package/deps/rocksdb/rocksdb/db/builder.h +5 -4
- package/deps/rocksdb/rocksdb/db/c.cc +556 -15
- package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
- package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
- package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
- package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
- package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
- package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
- package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
- package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
- package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
- package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
- package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
- package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
- package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
- package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
- package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
- package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
- package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
- package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
- package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
- package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
- package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
- package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
- package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
- package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
- package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
- package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
- package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
- package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
- package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
- package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
- package/deps/rocksdb/rocksdb/env/env.cc +32 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
- package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
- package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
- package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
- package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
- package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
- package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
- package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
- package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
- package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
- package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
- package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
- package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
- package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
- package/deps/rocksdb/rocksdb/options/options.cc +296 -305
- package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
- package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
- package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
- package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
- package/deps/rocksdb/rocksdb/port/lang.h +2 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
- package/deps/rocksdb/rocksdb/src.mk +17 -11
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
- package/deps/rocksdb/rocksdb/table/format.cc +62 -44
- package/deps/rocksdb/rocksdb/table/format.h +35 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
- package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
- package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
- package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
- package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
- package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
- package/deps/rocksdb/rocksdb/util/compression.h +348 -232
- package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
- package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
- package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
- package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
- package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
- package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
- package/deps/rocksdb/rocksdb.gyp +5 -0
- package/index.js +47 -2
- package/package.json +8 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
|
@@ -20,6 +20,12 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
20
20
|
* add/remove fields to this structure, builds would fail. The way to fix the
|
|
21
21
|
* builds would be to add the appropriate fields to the
|
|
22
22
|
* DEF_PERF_CONTEXT_LEVEL_METRICS() macro in the perf_context.cc file.
|
|
23
|
+
*
|
|
24
|
+
* If you plan to add new metrics, please read documentation in perf_level.h and
|
|
25
|
+
* try to come up with a metric name that follows the naming conventions
|
|
26
|
+
* mentioned there. It helps to indicate the metric's starting enabling P
|
|
27
|
+
* erfLevel. Document this starting PerfLevel if the metric name cannot meet the
|
|
28
|
+
* naming conventions.
|
|
23
29
|
*/
|
|
24
30
|
|
|
25
31
|
// Break down performance counters by level and store per-level perf context in
|
|
@@ -189,6 +195,7 @@ struct PerfContextBase {
|
|
|
189
195
|
// total nanos spent on writing to WAL
|
|
190
196
|
uint64_t write_wal_time;
|
|
191
197
|
// total nanos spent on writing to mem tables
|
|
198
|
+
// This metric gets collected starting from PerfLevel::kEnableWait
|
|
192
199
|
uint64_t write_memtable_time;
|
|
193
200
|
// total nanos spent on delaying or throttling write
|
|
194
201
|
uint64_t write_delay_time;
|
|
@@ -230,6 +237,8 @@ struct PerfContextBase {
|
|
|
230
237
|
uint64_t bloom_sst_miss_count;
|
|
231
238
|
|
|
232
239
|
// Time spent waiting on key locks in transaction lock manager.
|
|
240
|
+
// This metric gets collected starting from
|
|
241
|
+
// PerfLevel::kEnableTimeExceptForMutex
|
|
233
242
|
uint64_t key_lock_wait_time;
|
|
234
243
|
// number of times acquiring a lock was blocked by another transaction.
|
|
235
244
|
uint64_t key_lock_wait_count;
|
|
@@ -275,6 +284,12 @@ struct PerfContextBase {
|
|
|
275
284
|
uint64_t decrypt_data_nanos;
|
|
276
285
|
|
|
277
286
|
uint64_t number_async_seek;
|
|
287
|
+
|
|
288
|
+
// Metrics for file ingestion
|
|
289
|
+
// Time spent end to end in an IngestExternalFile call.
|
|
290
|
+
uint64_t file_ingestion_nanos;
|
|
291
|
+
// Time IngestExternalFile blocked live writes.
|
|
292
|
+
uint64_t file_ingestion_blocking_live_writes_nanos;
|
|
278
293
|
};
|
|
279
294
|
|
|
280
295
|
struct PerfContext : public PerfContextBase {
|
|
@@ -14,19 +14,39 @@
|
|
|
14
14
|
namespace ROCKSDB_NAMESPACE {
|
|
15
15
|
|
|
16
16
|
// How much perf stats to collect. Affects perf_context and iostats_context.
|
|
17
|
+
// These levels are incremental, which means a new set of metrics will get
|
|
18
|
+
// collected when PerfLevel is upgraded from level n to level n + 1.
|
|
19
|
+
// Each level's documentation specifies the incremental set of metrics it
|
|
20
|
+
// enables. As an example, kEnableWait will also enable collecting all the
|
|
21
|
+
// metrics that kEnableCount enables, and its documentation only specifies which
|
|
22
|
+
// extra metrics it also enables.
|
|
23
|
+
//
|
|
24
|
+
// These metrics are identified with some naming conventions, but not all
|
|
25
|
+
// metrics follow exactly this convention. The metrics' own documentation should
|
|
26
|
+
// be source of truth if they diverge.
|
|
17
27
|
enum PerfLevel : unsigned char {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
+
// Unknown setting
|
|
29
|
+
kUninitialized = 0,
|
|
30
|
+
// Disable perf stats
|
|
31
|
+
kDisable = 1,
|
|
32
|
+
// Starts enabling count metrics. These metrics usually don't have time
|
|
33
|
+
// related keywords, and are likely to have keywords like "count" or "byte".
|
|
34
|
+
kEnableCount = 2,
|
|
35
|
+
// Starts enabling metrics that measure time spent by user threads blocked in
|
|
36
|
+
// RocksDB waiting for RocksDB to take actions, as opposed to waiting for
|
|
37
|
+
// external resources such as mutexes and IO.
|
|
38
|
+
// These metrics usually have this pattern: "_[wait|delay]_*_[time|nanos]".
|
|
39
|
+
kEnableWait = 3,
|
|
40
|
+
// Starts enabling metrics that measure the end to end time of an operation.
|
|
41
|
+
// These metrics' names have keywords "time" or "nanos". Check other time
|
|
42
|
+
// measuring metrics with similar but more specific naming conventions.
|
|
43
|
+
kEnableTimeExceptForMutex = 4,
|
|
44
|
+
// Starts enabling metrics that measure the cpu time of an operation. These
|
|
45
|
+
// metrics' name usually this pattern "_cpu_*_[time|nanos]".
|
|
28
46
|
kEnableTimeAndCPUTimeExceptForMutex = 5,
|
|
29
|
-
|
|
47
|
+
// Starts enabling metrics that measure time for mutex. These metrics' name
|
|
48
|
+
// usually have this pattern: "_[mutex|condition]_*_[time|nanos]".
|
|
49
|
+
kEnableTime = 6,
|
|
30
50
|
kOutOfBounds = 7 // N.B. Must always be the last value!
|
|
31
51
|
};
|
|
32
52
|
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
#include <cassert>
|
|
22
22
|
#include <cstddef>
|
|
23
|
+
#include <cstdint>
|
|
23
24
|
#include <cstdio>
|
|
24
25
|
#include <cstring>
|
|
25
26
|
#include <string>
|
|
@@ -129,6 +130,46 @@ class Slice {
|
|
|
129
130
|
// Intentionally copyable
|
|
130
131
|
};
|
|
131
132
|
|
|
133
|
+
// A likely more efficient alternative to std::optional<Slice>. For example,
|
|
134
|
+
// an empty key might be distinct from "not specified" (and Slice* as an
|
|
135
|
+
// optional is more troublesome to deal with).
|
|
136
|
+
class OptSlice {
|
|
137
|
+
public:
|
|
138
|
+
OptSlice() : slice_(nullptr, SIZE_MAX) {}
|
|
139
|
+
/*implicit*/ OptSlice(const Slice& s) : slice_(s) {}
|
|
140
|
+
/*implicit*/ OptSlice(const std::string& s) : slice_(s) {}
|
|
141
|
+
/*implicit*/ OptSlice(const std::string_view& sv) : slice_(sv) {}
|
|
142
|
+
/*implicit*/ OptSlice(const char* c_str) : slice_(c_str) {}
|
|
143
|
+
// For easier migrating from APIs uing Slice* as an optional type.
|
|
144
|
+
// CAUTION: OptSlice{nullptr} is "no value" while Slice{nullptr} is "empty"
|
|
145
|
+
/*implicit*/ OptSlice(std::nullptr_t) : OptSlice() {}
|
|
146
|
+
|
|
147
|
+
bool has_value() const noexcept { return slice_.size() != SIZE_MAX; }
|
|
148
|
+
explicit operator bool() const noexcept { return has_value(); }
|
|
149
|
+
|
|
150
|
+
const Slice& value() const noexcept {
|
|
151
|
+
assert(has_value());
|
|
152
|
+
return slice_;
|
|
153
|
+
}
|
|
154
|
+
const Slice& operator*() const noexcept { return value(); }
|
|
155
|
+
const Slice* operator->() const noexcept { return &value(); }
|
|
156
|
+
|
|
157
|
+
const Slice* AsPtr() const noexcept {
|
|
158
|
+
return has_value() ? &slice_ : nullptr;
|
|
159
|
+
}
|
|
160
|
+
// Populate from an optional pointer. This is a very explicit conversion
|
|
161
|
+
// to minimize risk of bugs as in
|
|
162
|
+
// Slice start, limit;
|
|
163
|
+
// RangeOpt rng = {&start, &limit};
|
|
164
|
+
// start = ...; // BUG: would not affect rng
|
|
165
|
+
static OptSlice CopyFromPtr(const Slice* ptr) {
|
|
166
|
+
return ptr ? OptSlice{*ptr} : OptSlice{};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
protected:
|
|
170
|
+
Slice slice_;
|
|
171
|
+
};
|
|
172
|
+
|
|
132
173
|
/**
|
|
133
174
|
* A Slice that can be pinned with some cleanup tasks, which will be run upon
|
|
134
175
|
* ::Reset() or object destruction, whichever is invoked first. This can be used
|
|
@@ -34,7 +34,7 @@ struct ConfigOptions;
|
|
|
34
34
|
// including data loss, unreported corruption, deadlocks, and more.
|
|
35
35
|
class SliceTransform : public Customizable {
|
|
36
36
|
public:
|
|
37
|
-
virtual ~SliceTransform(){}
|
|
37
|
+
virtual ~SliceTransform() {}
|
|
38
38
|
|
|
39
39
|
// Return the name of this transformation.
|
|
40
40
|
const char* Name() const override = 0;
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
#pragma once
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
#include "rocksdb/iterator.h"
|
|
10
9
|
#include "rocksdb/options.h"
|
|
11
10
|
#include "rocksdb/slice.h"
|
|
@@ -31,6 +30,11 @@ class SstFileReader {
|
|
|
31
30
|
// If "snapshot" is nullptr, the iterator returns only the latest keys.
|
|
32
31
|
Iterator* NewIterator(const ReadOptions& options);
|
|
33
32
|
|
|
33
|
+
// MultiGet to fetch a set of keys from the SST
|
|
34
|
+
std::vector<Status> MultiGet(const ReadOptions& options,
|
|
35
|
+
const std::vector<Slice>& keys,
|
|
36
|
+
std::vector<std::string>* values);
|
|
37
|
+
|
|
34
38
|
// Returns a new iterator over the table contents as a raw table iterator,
|
|
35
39
|
// a.k.a a `TableIterator`that iterates all point data entries in the table
|
|
36
40
|
// including logically invisible entries like delete entries.
|
|
@@ -516,14 +516,16 @@ enum Tickers : uint32_t {
|
|
|
516
516
|
// Number of FIFO compactions that drop files based on different reasons
|
|
517
517
|
FIFO_MAX_SIZE_COMPACTIONS,
|
|
518
518
|
FIFO_TTL_COMPACTIONS,
|
|
519
|
+
FIFO_CHANGE_TEMPERATURE_COMPACTIONS,
|
|
519
520
|
|
|
520
521
|
// Number of bytes prefetched during user initiated scan
|
|
521
522
|
PREFETCH_BYTES,
|
|
522
523
|
|
|
523
|
-
// Number of prefetched bytes that were actually useful
|
|
524
|
+
// Number of prefetched bytes that were actually useful during user initiated
|
|
525
|
+
// scan
|
|
524
526
|
PREFETCH_BYTES_USEFUL,
|
|
525
527
|
|
|
526
|
-
// Number of FS reads avoided due to scan
|
|
528
|
+
// Number of FS reads avoided due to prefetching during user initiated scan
|
|
527
529
|
PREFETCH_HITS,
|
|
528
530
|
|
|
529
531
|
// Footer corruption detected when opening an SST file for reading
|
|
@@ -534,6 +536,12 @@ enum Tickers : uint32_t {
|
|
|
534
536
|
FILE_READ_CORRUPTION_RETRY_COUNT,
|
|
535
537
|
FILE_READ_CORRUPTION_RETRY_SUCCESS_COUNT,
|
|
536
538
|
|
|
539
|
+
// Counter for the number of times a WBWI is ingested into the DB. This
|
|
540
|
+
// happens when IngestWriteBatchWithIndex() is used and when large
|
|
541
|
+
// transaction optimization is enabled through
|
|
542
|
+
// TransactionOptions::large_txn_commit_optimize_threshold.
|
|
543
|
+
NUMBER_WBWI_INGEST,
|
|
544
|
+
|
|
537
545
|
TICKER_ENUM_MAX
|
|
538
546
|
};
|
|
539
547
|
|
|
@@ -657,16 +665,23 @@ enum Histograms : uint32_t {
|
|
|
657
665
|
ASYNC_READ_BYTES,
|
|
658
666
|
POLL_WAIT_MICROS,
|
|
659
667
|
|
|
668
|
+
// Number of bytes for RocksDB's prefetching (as opposed to file
|
|
669
|
+
// system's prefetch) on SST file during compaction read
|
|
670
|
+
COMPACTION_PREFETCH_BYTES,
|
|
671
|
+
|
|
660
672
|
// Number of prefetched bytes discarded by RocksDB.
|
|
661
673
|
PREFETCHED_BYTES_DISCARDED,
|
|
662
674
|
|
|
663
675
|
// Wait time for aborting async read in FilePrefetchBuffer destructor
|
|
664
676
|
ASYNC_PREFETCH_ABORT_MICROS,
|
|
665
677
|
|
|
666
|
-
// Number of bytes
|
|
678
|
+
// Number of bytes for RocksDB's prefetching contents (as opposed to file
|
|
667
679
|
// system's prefetch) from the end of SST table during block based table open
|
|
668
680
|
TABLE_OPEN_PREFETCH_TAIL_READ_BYTES,
|
|
669
681
|
|
|
682
|
+
// Number of operations per transaction.
|
|
683
|
+
NUM_OP_PER_TRANSACTION,
|
|
684
|
+
|
|
670
685
|
HISTOGRAM_ENUM_MAX
|
|
671
686
|
};
|
|
672
687
|
|
|
@@ -316,6 +316,8 @@ class Status {
|
|
|
316
316
|
return Status(kInvalidArgument, kTxnNotPrepared, msg, msg2);
|
|
317
317
|
}
|
|
318
318
|
|
|
319
|
+
static Status LockLimit() { return Status(kAborted, kLockLimit); }
|
|
320
|
+
|
|
319
321
|
// Returns true iff the status indicates success.
|
|
320
322
|
bool ok() const {
|
|
321
323
|
MarkChecked();
|
|
@@ -126,7 +126,15 @@ struct CacheUsageOptions {
|
|
|
126
126
|
};
|
|
127
127
|
|
|
128
128
|
// Configures how SST files using the block-based table format (standard)
|
|
129
|
-
// are written and read.
|
|
129
|
+
// are written and read. With few exceptions, each option only affects either
|
|
130
|
+
// (a) how new SST files are written, or (b) how SST files are read. If an
|
|
131
|
+
// option seems to affect how the SST file is constructed, e.g. format_version,
|
|
132
|
+
// that option *ONLY* has an effect at construction time. Contrast this with
|
|
133
|
+
// options like the various `cache` and `pin` options, that only affect
|
|
134
|
+
// in-memory and IO behavior at read time. In general, any version of RocksDB
|
|
135
|
+
// able to read the full key-value and indexing data in the SST file will read
|
|
136
|
+
// it as written regardless of current options for writing new files. See
|
|
137
|
+
// filter_policy regarding filters.
|
|
130
138
|
//
|
|
131
139
|
// Except as specifically noted, all options here are "mutable" using
|
|
132
140
|
// SetOptions(), with the caveat that only new table builders and new table
|
|
@@ -480,6 +488,10 @@ struct BlockBasedTableOptions {
|
|
|
480
488
|
// If non-nullptr, use the specified filter policy to reduce disk reads.
|
|
481
489
|
// Many applications will benefit from passing the result of
|
|
482
490
|
// NewBloomFilterPolicy() here.
|
|
491
|
+
//
|
|
492
|
+
// Because filters only impact performance and are not data-critical, an
|
|
493
|
+
// SST file can be opened and used without filters if (a) the filter
|
|
494
|
+
// policy name or schema is unrecognized, or (b) filter_policy is nullptr.
|
|
483
495
|
std::shared_ptr<const FilterPolicy> filter_policy = nullptr;
|
|
484
496
|
|
|
485
497
|
// If true, place whole keys in the filter (not just prefixes).
|
|
@@ -524,13 +536,9 @@ struct BlockBasedTableOptions {
|
|
|
524
536
|
// Default: 0 (disabled)
|
|
525
537
|
uint32_t read_amp_bytes_per_bit = 0;
|
|
526
538
|
|
|
527
|
-
// We currently have these versions:
|
|
528
|
-
// 0 --
|
|
529
|
-
//
|
|
530
|
-
// 1 -- Can be read by RocksDB's versions since 3.0. Supports non-default
|
|
531
|
-
// checksum, like xxHash. It is written by RocksDB when
|
|
532
|
-
// BlockBasedTableOptions::checksum is something other than kCRC32c. (version
|
|
533
|
-
// 0 is silently upconverted)
|
|
539
|
+
// We currently have these format versions:
|
|
540
|
+
// 0 - 1 -- Unsupported for writing new files and quietly sanitized to 2.
|
|
541
|
+
// Read support is deprecated and could be removed in the future.
|
|
534
542
|
// 2 -- Can be read by RocksDB's versions since 3.10. Changes the way we
|
|
535
543
|
// encode compressed blocks with LZ4, BZip2 and Zlib compression. If you
|
|
536
544
|
// don't plan to run RocksDB before version 3.10, you should probably use
|
|
@@ -553,6 +561,10 @@ struct BlockBasedTableOptions {
|
|
|
553
561
|
// misplaced within or between files is as likely to fail checksum
|
|
554
562
|
// verification as random corruption. Also checksum-protects SST footer.
|
|
555
563
|
// Can be read by RocksDB versions >= 8.6.0.
|
|
564
|
+
// 7 -- Support for custom compression algorithms with a CompressionManager
|
|
565
|
+
// using a non-built-in CompatibilityName(). See `compression_manager` in
|
|
566
|
+
// ColumnFamilyOptions. Also changes the format of TableProperties field
|
|
567
|
+
// `compression_name`. Can be read by RocksDB versions >= 10.4.0.
|
|
556
568
|
//
|
|
557
569
|
// Using the default setting of format_version is strongly recommended, so
|
|
558
570
|
// that available enhancements are adopted eventually and automatically. The
|
|
@@ -109,6 +109,10 @@ class TablePropertiesCollector {
|
|
|
109
109
|
// table.
|
|
110
110
|
// @params key the user key that is inserted into the table.
|
|
111
111
|
// @params value the value that is inserted into the table.
|
|
112
|
+
// @params file_size the current file size. For BlockBasedTable, this
|
|
113
|
+
// includes all the data blocks written so far, upto but not including
|
|
114
|
+
// the current block being built. With parallel compression, data
|
|
115
|
+
// blocks are written async so it depends on the compression progress.
|
|
112
116
|
virtual Status AddUserKey(const Slice& key, const Slice& value,
|
|
113
117
|
EntryType /*type*/, SequenceNumber /*seq*/,
|
|
114
118
|
uint64_t /*file_size*/) {
|
|
@@ -143,7 +147,7 @@ class TablePropertiesCollector {
|
|
|
143
147
|
// The name of the properties collector can be used for debugging purpose.
|
|
144
148
|
virtual const char* Name() const = 0;
|
|
145
149
|
|
|
146
|
-
//
|
|
150
|
+
// Return whether the output file should be further compacted
|
|
147
151
|
virtual bool NeedCompact() const { return false; }
|
|
148
152
|
|
|
149
153
|
// For internal use only.
|
|
@@ -344,7 +348,20 @@ struct TableProperties {
|
|
|
344
348
|
// {collector_name[1]},{collector_name[2]},{collector_name[3]} ..
|
|
345
349
|
std::string property_collectors_names;
|
|
346
350
|
|
|
347
|
-
//
|
|
351
|
+
// Identifies the compression algorithm or schema used in the file.
|
|
352
|
+
// Specifically:
|
|
353
|
+
// * For format_version < 7, it is one of several names for built-in
|
|
354
|
+
// compression types. Because of how some previous versions of RocksDB
|
|
355
|
+
// behave, this must be set to "ZSTD" if any blocks are compressed
|
|
356
|
+
// with zstd and must NOT be set to "NoCompression" if any blocks are
|
|
357
|
+
// compressed.
|
|
358
|
+
// * For format_version >= 7, the format is
|
|
359
|
+
// <compatibility_name>;<hex-coded compression types>;<future use>
|
|
360
|
+
// where <compatibility_name> is the CompatibilityName() of the
|
|
361
|
+
// CompressionManager used for the file, or empty if compression was
|
|
362
|
+
// disabled; <hex-coded compression types> represents a sorted set of
|
|
363
|
+
// CompressionType values used in the file other than kNoCompression, each
|
|
364
|
+
// as 2-digit hex, e.g. 04 for LZ$, 07 for ZSTD, etc.
|
|
348
365
|
std::string compression_name;
|
|
349
366
|
|
|
350
367
|
// Compression options used to compress the SST files.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates. 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
|
+
#pragma once
|
|
7
|
+
|
|
8
|
+
#include "rocksdb/db.h"
|
|
9
|
+
|
|
10
|
+
namespace ROCKSDB_NAMESPACE {
|
|
11
|
+
|
|
12
|
+
struct TransactionDBOptions;
|
|
13
|
+
class TransactionDB;
|
|
14
|
+
class OptimisticTransactionDB;
|
|
15
|
+
|
|
16
|
+
namespace blob_db {
|
|
17
|
+
struct BlobDBOptions;
|
|
18
|
+
class BlobDB;
|
|
19
|
+
} // namespace blob_db
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* ToolHooks is currently a WORK IN PROGRESS, API is subject to change.
|
|
23
|
+
* ToolHooks is a class that allows users to override the default behavior of
|
|
24
|
+
* the various OpenDB calls used by db_bench_tool. This allows users to easily
|
|
25
|
+
* extend the functionality of db_bench_tool to support their own open
|
|
26
|
+
* implementations.
|
|
27
|
+
*/
|
|
28
|
+
class ToolHooks {
|
|
29
|
+
public:
|
|
30
|
+
ToolHooks() = default;
|
|
31
|
+
virtual ~ToolHooks() = default;
|
|
32
|
+
virtual Status Open(const Options& db_options, const std::string& name,
|
|
33
|
+
DB** dbptr) = 0;
|
|
34
|
+
virtual Status Open(
|
|
35
|
+
const DBOptions& db_options, const std::string& name,
|
|
36
|
+
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
37
|
+
std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) = 0;
|
|
38
|
+
virtual Status OpenForReadOnly(const Options& options,
|
|
39
|
+
const std::string& name, DB** dbptr,
|
|
40
|
+
bool error_if_wal_file_exists) = 0;
|
|
41
|
+
virtual Status OpenForReadOnly(
|
|
42
|
+
const Options& options, const std::string& name,
|
|
43
|
+
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
44
|
+
std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) = 0;
|
|
45
|
+
virtual Status OpenTransactionDB(const Options& db_options,
|
|
46
|
+
const TransactionDBOptions& txn_db_options,
|
|
47
|
+
const std::string& dbname,
|
|
48
|
+
TransactionDB** dbptr) = 0;
|
|
49
|
+
virtual Status OpenTransactionDB(
|
|
50
|
+
const DBOptions& db_options, const TransactionDBOptions& txn_db_options,
|
|
51
|
+
const std::string& dbname,
|
|
52
|
+
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
53
|
+
std::vector<ColumnFamilyHandle*>* handles, TransactionDB** dbptr) = 0;
|
|
54
|
+
virtual Status OpenOptimisticTransactionDB(
|
|
55
|
+
const Options& options, const std::string& dbname,
|
|
56
|
+
OptimisticTransactionDB** dbptr) = 0;
|
|
57
|
+
virtual Status OpenOptimisticTransactionDB(
|
|
58
|
+
const DBOptions& db_options, const std::string& dbname,
|
|
59
|
+
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
60
|
+
std::vector<ColumnFamilyHandle*>* handles,
|
|
61
|
+
OptimisticTransactionDB** dbptr) = 0;
|
|
62
|
+
virtual Status OpenAsSecondary(const Options& options,
|
|
63
|
+
const std::string& name,
|
|
64
|
+
const std::string& secondary_path,
|
|
65
|
+
DB** dbptr) = 0;
|
|
66
|
+
virtual Status OpenAsFollower(const Options& options, const std::string& name,
|
|
67
|
+
const std::string& leader_path,
|
|
68
|
+
std::unique_ptr<DB>* dbptr) = 0;
|
|
69
|
+
virtual Status Open(const Options& options,
|
|
70
|
+
const blob_db::BlobDBOptions& bdb_options,
|
|
71
|
+
const std::string& dbname, blob_db::BlobDB** blob_db) = 0;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
class DefaultHooks : public ToolHooks {
|
|
75
|
+
public:
|
|
76
|
+
DefaultHooks() = default;
|
|
77
|
+
~DefaultHooks() override = default;
|
|
78
|
+
virtual Status Open(const Options& db_options, const std::string& name,
|
|
79
|
+
DB** dbptr) override;
|
|
80
|
+
virtual Status Open(
|
|
81
|
+
const DBOptions& db_options, const std::string& name,
|
|
82
|
+
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
83
|
+
std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) override;
|
|
84
|
+
virtual Status OpenForReadOnly(const Options& options,
|
|
85
|
+
const std::string& name, DB** dbptr,
|
|
86
|
+
bool error_if_wal_file_exists) override;
|
|
87
|
+
virtual Status OpenForReadOnly(
|
|
88
|
+
const Options& options, const std::string& name,
|
|
89
|
+
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
90
|
+
std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) override;
|
|
91
|
+
virtual Status OpenTransactionDB(const Options& db_options,
|
|
92
|
+
const TransactionDBOptions& txn_db_options,
|
|
93
|
+
const std::string& dbname,
|
|
94
|
+
TransactionDB** dbptr) override;
|
|
95
|
+
virtual Status OpenTransactionDB(
|
|
96
|
+
const DBOptions& db_options, const TransactionDBOptions& txn_db_options,
|
|
97
|
+
const std::string& dbname,
|
|
98
|
+
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
99
|
+
std::vector<ColumnFamilyHandle*>* handles,
|
|
100
|
+
TransactionDB** dbptr) override;
|
|
101
|
+
virtual Status OpenOptimisticTransactionDB(
|
|
102
|
+
const Options& options, const std::string& dbname,
|
|
103
|
+
OptimisticTransactionDB** dbptr) override;
|
|
104
|
+
virtual Status OpenOptimisticTransactionDB(
|
|
105
|
+
const DBOptions& db_options, const std::string& dbname,
|
|
106
|
+
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
107
|
+
std::vector<ColumnFamilyHandle*>* handles,
|
|
108
|
+
OptimisticTransactionDB** dbptr) override;
|
|
109
|
+
virtual Status OpenAsSecondary(const Options& options,
|
|
110
|
+
const std::string& name,
|
|
111
|
+
const std::string& secondary_path,
|
|
112
|
+
DB** dbptr) override;
|
|
113
|
+
virtual Status OpenAsFollower(const Options& options, const std::string& name,
|
|
114
|
+
const std::string& leader_path,
|
|
115
|
+
std::unique_ptr<DB>* dbptr) override;
|
|
116
|
+
virtual Status Open(const Options& options,
|
|
117
|
+
const blob_db::BlobDBOptions& bdb_options,
|
|
118
|
+
const std::string& dbname,
|
|
119
|
+
blob_db::BlobDB** blob_db) override;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
extern DefaultHooks defaultHooks;
|
|
123
|
+
|
|
124
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -111,6 +111,26 @@ class CompactionOptionsUniversal {
|
|
|
111
111
|
// Default: false
|
|
112
112
|
bool incremental;
|
|
113
113
|
|
|
114
|
+
// EXPERIMENTAL
|
|
115
|
+
//
|
|
116
|
+
// If true, auto universal compaction picking will adjust to minimize locking
|
|
117
|
+
// of input files when bottom priority compactions are waiting to run. This
|
|
118
|
+
// can increase the likelihood of existing L0s being selected for compaction,
|
|
119
|
+
// thereby improving write stall and reducing read regression. It may increase
|
|
120
|
+
// the overrall write amplification and compaction load on low priority
|
|
121
|
+
// threads.
|
|
122
|
+
//
|
|
123
|
+
// Default: false (disabled)
|
|
124
|
+
//
|
|
125
|
+
// This options does not apply to manual compactions.
|
|
126
|
+
//
|
|
127
|
+
// This option is temporary in case turning on this feature causes problems
|
|
128
|
+
// and users need to undo it quickly. This option is planned for removal in
|
|
129
|
+
// the near future with default value set to true.
|
|
130
|
+
//
|
|
131
|
+
// Dynamically changeable through the SetOptions() API.
|
|
132
|
+
bool reduce_file_locking;
|
|
133
|
+
|
|
114
134
|
// Default set of parameters
|
|
115
135
|
CompactionOptionsUniversal()
|
|
116
136
|
: size_ratio(1),
|
|
@@ -121,7 +141,12 @@ class CompactionOptionsUniversal {
|
|
|
121
141
|
max_read_amp(-1),
|
|
122
142
|
stop_style(kCompactionStopStyleTotalSize),
|
|
123
143
|
allow_trivial_move(false),
|
|
124
|
-
incremental(false)
|
|
144
|
+
incremental(false),
|
|
145
|
+
reduce_file_locking(false) {}
|
|
146
|
+
|
|
147
|
+
#if __cplusplus >= 202002L
|
|
148
|
+
bool operator==(const CompactionOptionsUniversal& rhs) const = default;
|
|
149
|
+
#endif
|
|
125
150
|
};
|
|
126
151
|
|
|
127
152
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -77,6 +77,15 @@ struct BackupEngineOptions {
|
|
|
77
77
|
// Default: true
|
|
78
78
|
bool backup_log_files;
|
|
79
79
|
|
|
80
|
+
// Size of the buffer in bytes used for reading files.
|
|
81
|
+
// Enables optimally configuring the IO size based on the storage backend.
|
|
82
|
+
// If specified, takes precendence over the rate limiter burst size (if
|
|
83
|
+
// specified) as well as kDefaultCopyFileBufferSize.
|
|
84
|
+
// If 0, the rate limiter burst size (if specified) or
|
|
85
|
+
// kDefaultCopyFileBufferSize will be used.
|
|
86
|
+
// Default: 0
|
|
87
|
+
uint64_t io_buffer_size;
|
|
88
|
+
|
|
80
89
|
// Max bytes that can be transferred in a second during backup.
|
|
81
90
|
// If 0, go as fast as you can
|
|
82
91
|
// This limit only applies to writes. To also limit reads,
|
|
@@ -117,8 +126,8 @@ struct BackupEngineOptions {
|
|
|
117
126
|
// Default: true
|
|
118
127
|
bool share_files_with_checksum;
|
|
119
128
|
|
|
120
|
-
// Up to this many background threads will copy files
|
|
121
|
-
// and RestoreDBFromBackup()
|
|
129
|
+
// Up to this many background threads will be used to copy files & compute
|
|
130
|
+
// checksums for CreateNewBackup() and RestoreDBFromBackup().
|
|
122
131
|
// Default: 1
|
|
123
132
|
int max_background_operations;
|
|
124
133
|
|
|
@@ -228,8 +237,9 @@ struct BackupEngineOptions {
|
|
|
228
237
|
const std::string& _backup_dir, Env* _backup_env = nullptr,
|
|
229
238
|
bool _share_table_files = true, Logger* _info_log = nullptr,
|
|
230
239
|
bool _sync = true, bool _destroy_old_data = false,
|
|
231
|
-
bool _backup_log_files = true, uint64_t
|
|
232
|
-
uint64_t
|
|
240
|
+
bool _backup_log_files = true, uint64_t _io_buffer_size = 0,
|
|
241
|
+
uint64_t _backup_rate_limit = 0, uint64_t _restore_rate_limit = 0,
|
|
242
|
+
int _max_background_operations = 1,
|
|
233
243
|
uint64_t _callback_trigger_interval_size = 4 * 1024 * 1024,
|
|
234
244
|
int _max_valid_backups_to_open = INT_MAX,
|
|
235
245
|
ShareFilesNaming _share_files_with_checksum_naming =
|
|
@@ -241,6 +251,7 @@ struct BackupEngineOptions {
|
|
|
241
251
|
sync(_sync),
|
|
242
252
|
destroy_old_data(_destroy_old_data),
|
|
243
253
|
backup_log_files(_backup_log_files),
|
|
254
|
+
io_buffer_size(_io_buffer_size),
|
|
244
255
|
backup_rate_limit(_backup_rate_limit),
|
|
245
256
|
restore_rate_limit(_restore_rate_limit),
|
|
246
257
|
share_files_with_checksum(true),
|
|
@@ -338,6 +349,39 @@ struct CreateBackupOptions {
|
|
|
338
349
|
};
|
|
339
350
|
|
|
340
351
|
struct RestoreOptions {
|
|
352
|
+
// Enum reflecting tiered approach to restores.
|
|
353
|
+
//
|
|
354
|
+
// Options `kKeepLatestDbSessionIdFiles`, `kVerifyChecksum` introduce
|
|
355
|
+
// incremental restore capability and are intended to be used separately.
|
|
356
|
+
enum Mode : uint32_t {
|
|
357
|
+
// Most efficient way to restore a healthy / non-corrupted DB from
|
|
358
|
+
// the backup(s). This mode can almost always successfully recover from
|
|
359
|
+
// incomplete / missing files, as in an incomplete copy of a DB.
|
|
360
|
+
// This mode is also integrated with `exclude_files_callback` feature
|
|
361
|
+
// and will opportunistically try to find excluded files in existing db
|
|
362
|
+
// filesystem if missing in all supplied backup directories.
|
|
363
|
+
//
|
|
364
|
+
// Effective on data files following modern share files naming schemes.
|
|
365
|
+
kKeepLatestDbSessionIdFiles = 1U,
|
|
366
|
+
|
|
367
|
+
// Recommended when db is suspected to be unhealthy, ex. we want to retain
|
|
368
|
+
// most of the files (therefore saving on write I/O) with an exception of
|
|
369
|
+
// a few corrupted ones.
|
|
370
|
+
//
|
|
371
|
+
// When opted-in, restore engine will scan the db file, compute the
|
|
372
|
+
// checksum and compare it against the checksum hardened in the backup file
|
|
373
|
+
// metadata. If checksums match, existing file will be retained as-is.
|
|
374
|
+
// Otherwise, it will be deleted and replaced it with its' restored backup
|
|
375
|
+
// counterpart. If backup file doesn't have a checksum hardened in the
|
|
376
|
+
// metadata, we'll schedule an async task to compute it.
|
|
377
|
+
kVerifyChecksum = 2U,
|
|
378
|
+
|
|
379
|
+
// Zero trust. Least efficient.
|
|
380
|
+
//
|
|
381
|
+
// Purge all the destination files and restores all files from the backup.
|
|
382
|
+
kPurgeAllFiles = 0xffffU,
|
|
383
|
+
};
|
|
384
|
+
|
|
341
385
|
// If true, restore won't overwrite the existing log files in wal_dir. It will
|
|
342
386
|
// also move all log files from archive directory to wal_dir. Use this option
|
|
343
387
|
// in combination with BackupEngineOptions::backup_log_files = false for
|
|
@@ -350,8 +394,13 @@ struct RestoreOptions {
|
|
|
350
394
|
// directories known to contain the required files.
|
|
351
395
|
std::forward_list<BackupEngineReadOnlyBase*> alternate_dirs;
|
|
352
396
|
|
|
353
|
-
|
|
354
|
-
|
|
397
|
+
// Specifies the level of incremental restore. 'kPurgeAllFiles' by default.
|
|
398
|
+
Mode mode;
|
|
399
|
+
|
|
400
|
+
// FIXME(https://github.com/facebook/rocksdb/issues/13293)
|
|
401
|
+
explicit RestoreOptions(bool _keep_log_files = false,
|
|
402
|
+
Mode _mode = Mode::kPurgeAllFiles)
|
|
403
|
+
: keep_log_files(_keep_log_files), mode(_mode) {}
|
|
355
404
|
};
|
|
356
405
|
|
|
357
406
|
using BackupID = uint32_t;
|