@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
|
@@ -630,7 +630,8 @@ class VersionStorageInfo {
|
|
|
630
630
|
const Slice& largest_user_key,
|
|
631
631
|
int last_level, int last_l0_idx);
|
|
632
632
|
|
|
633
|
-
Env::WriteLifeTimeHint CalculateSSTWriteHint(
|
|
633
|
+
Env::WriteLifeTimeHint CalculateSSTWriteHint(
|
|
634
|
+
int level, CompactionStyleSet compaction_style_set) const;
|
|
634
635
|
|
|
635
636
|
const Comparator* user_comparator() const { return user_comparator_; }
|
|
636
637
|
|
|
@@ -703,13 +704,6 @@ class VersionStorageInfo {
|
|
|
703
704
|
// file that is not yet compacted
|
|
704
705
|
std::vector<int> next_file_to_compact_by_size_;
|
|
705
706
|
|
|
706
|
-
// Only the first few entries of files_by_compaction_pri_ are sorted.
|
|
707
|
-
// There is no need to sort all the files because it is likely
|
|
708
|
-
// that on a running system, we need to look at only the first
|
|
709
|
-
// few largest files because a new version is created every few
|
|
710
|
-
// seconds/minutes (because of concurrent compactions).
|
|
711
|
-
static const size_t number_of_files_to_sort_ = 50;
|
|
712
|
-
|
|
713
707
|
// This vector contains list of files marked for compaction and also not
|
|
714
708
|
// currently being compacted. It is protected by DB mutex. It is calculated in
|
|
715
709
|
// ComputeCompactionScore(). Used by Leveled and Universal Compaction.
|
|
@@ -965,8 +959,7 @@ class Version {
|
|
|
965
959
|
// Loads some stats information from files (if update_stats is set) and
|
|
966
960
|
// populates derived data structures. Call without mutex held. It needs to be
|
|
967
961
|
// called before appending the version to the version set.
|
|
968
|
-
void PrepareAppend(const
|
|
969
|
-
const ReadOptions& read_options, bool update_stats);
|
|
962
|
+
void PrepareAppend(const ReadOptions& read_options, bool update_stats);
|
|
970
963
|
|
|
971
964
|
// Reference count management (so Versions do not disappear out from
|
|
972
965
|
// under live iterators)
|
|
@@ -1001,17 +994,21 @@ class Version {
|
|
|
1001
994
|
const FileMetaData* file_meta,
|
|
1002
995
|
const std::string* fname = nullptr) const;
|
|
1003
996
|
|
|
1004
|
-
// REQUIRES: lock is held
|
|
1005
997
|
// On success, *props will be populated with all SSTables' table properties.
|
|
1006
998
|
// The keys of `props` are the sst file name, the values of `props` are the
|
|
1007
999
|
// tables' properties, represented as std::shared_ptr.
|
|
1008
1000
|
Status GetPropertiesOfAllTables(const ReadOptions& read_options,
|
|
1009
|
-
TablePropertiesCollection* props);
|
|
1001
|
+
TablePropertiesCollection* props) const;
|
|
1010
1002
|
Status GetPropertiesOfAllTables(const ReadOptions& read_options,
|
|
1011
|
-
TablePropertiesCollection* props,
|
|
1003
|
+
TablePropertiesCollection* props,
|
|
1004
|
+
int level) const;
|
|
1012
1005
|
Status GetPropertiesOfTablesInRange(const ReadOptions& read_options,
|
|
1013
1006
|
const autovector<UserKeyRange>& ranges,
|
|
1014
1007
|
TablePropertiesCollection* props) const;
|
|
1008
|
+
Status GetPropertiesOfTablesByLevel(
|
|
1009
|
+
const ReadOptions& read_options,
|
|
1010
|
+
std::vector<std::unique_ptr<TablePropertiesCollection>>* props_by_level)
|
|
1011
|
+
const;
|
|
1015
1012
|
|
|
1016
1013
|
// Print summary of range delete tombstones in SST files into out_str,
|
|
1017
1014
|
// with maximum max_entries_to_print entries printed out.
|
|
@@ -1146,7 +1143,7 @@ class Version {
|
|
|
1146
1143
|
bool use_async_io_;
|
|
1147
1144
|
|
|
1148
1145
|
Version(ColumnFamilyData* cfd, VersionSet* vset, const FileOptions& file_opt,
|
|
1149
|
-
MutableCFOptions mutable_cf_options,
|
|
1146
|
+
const MutableCFOptions& mutable_cf_options,
|
|
1150
1147
|
const std::shared_ptr<IOTracer>& io_tracer,
|
|
1151
1148
|
uint64_t version_number = 0,
|
|
1152
1149
|
EpochNumberRequirement epoch_number_requirement =
|
|
@@ -1182,6 +1179,9 @@ class AtomicGroupReadBuffer {
|
|
|
1182
1179
|
// VersionSet is the collection of versions of all the column families of the
|
|
1183
1180
|
// database. Each database owns one VersionSet. A VersionSet has access to all
|
|
1184
1181
|
// column families via ColumnFamilySet, i.e. set of the column families.
|
|
1182
|
+
// `unchanging` means the LSM tree structure of the column families will not
|
|
1183
|
+
// change during the lifetime of this VersionSet (true for read-only instance,
|
|
1184
|
+
// but false for secondary instance or writable DB).
|
|
1185
1185
|
class VersionSet {
|
|
1186
1186
|
public:
|
|
1187
1187
|
VersionSet(const std::string& dbname, const ImmutableDBOptions* db_options,
|
|
@@ -1192,7 +1192,7 @@ class VersionSet {
|
|
|
1192
1192
|
const std::shared_ptr<IOTracer>& io_tracer,
|
|
1193
1193
|
const std::string& db_id, const std::string& db_session_id,
|
|
1194
1194
|
const std::string& daily_offpeak_time_utc,
|
|
1195
|
-
ErrorHandler*
|
|
1195
|
+
ErrorHandler* error_handler, bool unchanging);
|
|
1196
1196
|
// No copying allowed
|
|
1197
1197
|
VersionSet(const VersionSet&) = delete;
|
|
1198
1198
|
void operator=(const VersionSet&) = delete;
|
|
@@ -1207,60 +1207,52 @@ class VersionSet {
|
|
|
1207
1207
|
FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
|
|
1208
1208
|
const ColumnFamilyOptions* column_family_options = nullptr) {
|
|
1209
1209
|
ColumnFamilyData* default_cf = GetColumnFamilySet()->GetDefault();
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
return LogAndApply(default_cf, *cf_options, read_options, write_options,
|
|
1213
|
-
edit, mu, dir_contains_current_file, new_descriptor_log,
|
|
1210
|
+
return LogAndApply(default_cf, read_options, write_options, edit, mu,
|
|
1211
|
+
dir_contains_current_file, new_descriptor_log,
|
|
1214
1212
|
column_family_options);
|
|
1215
1213
|
}
|
|
1216
1214
|
|
|
1217
1215
|
// Apply *edit to the current version to form a new descriptor that
|
|
1218
1216
|
// is both saved to persistent state and installed as the new
|
|
1219
1217
|
// current version. Will release *mu while actually writing to the file.
|
|
1220
|
-
// column_family_options has to be set if edit is column family add
|
|
1218
|
+
// column_family_options has to be set if edit is column family add.
|
|
1221
1219
|
// REQUIRES: *mu is held on entry.
|
|
1222
1220
|
// REQUIRES: no other thread concurrently calls LogAndApply()
|
|
1223
1221
|
Status LogAndApply(
|
|
1224
|
-
ColumnFamilyData* column_family_data,
|
|
1225
|
-
const
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
|
|
1222
|
+
ColumnFamilyData* column_family_data, const ReadOptions& read_options,
|
|
1223
|
+
const WriteOptions& write_options, VersionEdit* edit,
|
|
1224
|
+
InstrumentedMutex* mu, FSDirectory* dir_contains_current_file,
|
|
1225
|
+
bool new_descriptor_log = false,
|
|
1229
1226
|
const ColumnFamilyOptions* column_family_options = nullptr,
|
|
1230
|
-
const std::function<void(const Status&)>& manifest_wcb = {}
|
|
1227
|
+
const std::function<void(const Status&)>& manifest_wcb = {},
|
|
1228
|
+
const std::function<Status()>& pre_cb = {}) {
|
|
1231
1229
|
autovector<ColumnFamilyData*> cfds;
|
|
1232
1230
|
cfds.emplace_back(column_family_data);
|
|
1233
|
-
autovector<const MutableCFOptions*> mutable_cf_options_list;
|
|
1234
|
-
mutable_cf_options_list.emplace_back(&mutable_cf_options);
|
|
1235
1231
|
autovector<autovector<VersionEdit*>> edit_lists;
|
|
1236
1232
|
autovector<VersionEdit*> edit_list;
|
|
1237
1233
|
edit_list.emplace_back(edit);
|
|
1238
1234
|
edit_lists.emplace_back(edit_list);
|
|
1239
|
-
return LogAndApply(cfds,
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
{manifest_wcb});
|
|
1235
|
+
return LogAndApply(cfds, read_options, write_options, edit_lists, mu,
|
|
1236
|
+
dir_contains_current_file, new_descriptor_log,
|
|
1237
|
+
column_family_options, {manifest_wcb}, pre_cb);
|
|
1243
1238
|
}
|
|
1244
1239
|
// The batch version. If edit_list.size() > 1, caller must ensure that
|
|
1245
1240
|
// no edit in the list column family add or drop
|
|
1246
1241
|
Status LogAndApply(
|
|
1247
|
-
ColumnFamilyData* column_family_data,
|
|
1248
|
-
const
|
|
1249
|
-
const ReadOptions& read_options, const WriteOptions& write_options,
|
|
1242
|
+
ColumnFamilyData* column_family_data, const ReadOptions& read_options,
|
|
1243
|
+
const WriteOptions& write_options,
|
|
1250
1244
|
const autovector<VersionEdit*>& edit_list, InstrumentedMutex* mu,
|
|
1251
1245
|
FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
|
|
1252
1246
|
const ColumnFamilyOptions* column_family_options = nullptr,
|
|
1253
|
-
const std::function<void(const Status&)>& manifest_wcb = {}
|
|
1247
|
+
const std::function<void(const Status&)>& manifest_wcb = {},
|
|
1248
|
+
const std::function<Status()>& pre_cb = {}) {
|
|
1254
1249
|
autovector<ColumnFamilyData*> cfds;
|
|
1255
1250
|
cfds.emplace_back(column_family_data);
|
|
1256
|
-
autovector<const MutableCFOptions*> mutable_cf_options_list;
|
|
1257
|
-
mutable_cf_options_list.emplace_back(&mutable_cf_options);
|
|
1258
1251
|
autovector<autovector<VersionEdit*>> edit_lists;
|
|
1259
1252
|
edit_lists.emplace_back(edit_list);
|
|
1260
|
-
return LogAndApply(cfds,
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
{manifest_wcb});
|
|
1253
|
+
return LogAndApply(cfds, read_options, write_options, edit_lists, mu,
|
|
1254
|
+
dir_contains_current_file, new_descriptor_log,
|
|
1255
|
+
column_family_options, {manifest_wcb}, pre_cb);
|
|
1264
1256
|
}
|
|
1265
1257
|
|
|
1266
1258
|
// The across-multi-cf batch version. If edit_lists contain more than
|
|
@@ -1268,20 +1260,22 @@ class VersionSet {
|
|
|
1268
1260
|
// family manipulation.
|
|
1269
1261
|
virtual Status LogAndApply(
|
|
1270
1262
|
const autovector<ColumnFamilyData*>& cfds,
|
|
1271
|
-
const autovector<const MutableCFOptions*>& mutable_cf_options_list,
|
|
1272
1263
|
const ReadOptions& read_options, const WriteOptions& write_options,
|
|
1273
1264
|
const autovector<autovector<VersionEdit*>>& edit_lists,
|
|
1274
1265
|
InstrumentedMutex* mu, FSDirectory* dir_contains_current_file,
|
|
1275
1266
|
bool new_descriptor_log = false,
|
|
1276
1267
|
const ColumnFamilyOptions* new_cf_options = nullptr,
|
|
1277
|
-
const std::vector<std::function<void(const Status&)>>& manifest_wcbs =
|
|
1278
|
-
|
|
1268
|
+
const std::vector<std::function<void(const Status&)>>& manifest_wcbs = {},
|
|
1269
|
+
const std::function<Status()>& pre_cb = {});
|
|
1279
1270
|
|
|
1280
1271
|
void WakeUpWaitingManifestWriters();
|
|
1281
1272
|
|
|
1282
1273
|
// Recover the last saved descriptor (MANIFEST) from persistent storage.
|
|
1283
|
-
//
|
|
1284
|
-
//
|
|
1274
|
+
// Unlike `unchanging` on the VersionSet, `read_only` here and in other
|
|
1275
|
+
// functions below refers to the CF receiving no writes or modifications
|
|
1276
|
+
// through this VersionSet, but could through external manifest updates
|
|
1277
|
+
// etc. Thus, `read_only=true` for secondary instances as well as read-only
|
|
1278
|
+
// instances.
|
|
1285
1279
|
Status Recover(const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
1286
1280
|
bool read_only = false, std::string* db_id = nullptr,
|
|
1287
1281
|
bool no_error_if_files_missing = false, bool is_retry = false,
|
|
@@ -1359,6 +1353,8 @@ class VersionSet {
|
|
|
1359
1353
|
return min_log_number_to_keep_.load();
|
|
1360
1354
|
}
|
|
1361
1355
|
|
|
1356
|
+
bool unchanging() const { return unchanging_; }
|
|
1357
|
+
|
|
1362
1358
|
// Allocate and return a new file number
|
|
1363
1359
|
uint64_t NewFileNumber() { return next_file_number_.fetch_add(1); }
|
|
1364
1360
|
|
|
@@ -1580,17 +1576,18 @@ class VersionSet {
|
|
|
1580
1576
|
void TEST_CreateAndAppendVersion(ColumnFamilyData* cfd) {
|
|
1581
1577
|
assert(cfd);
|
|
1582
1578
|
|
|
1583
|
-
const
|
|
1584
|
-
|
|
1585
|
-
new Version(cfd, this, file_options_, mutable_cf_options, io_tracer_);
|
|
1579
|
+
Version* const version = new Version(
|
|
1580
|
+
cfd, this, file_options_, cfd->GetLatestMutableCFOptions(), io_tracer_);
|
|
1586
1581
|
|
|
1587
1582
|
constexpr bool update_stats = false;
|
|
1588
1583
|
// TODO: plumb Env::IOActivity, Env::IOPriority
|
|
1589
1584
|
const ReadOptions read_options;
|
|
1590
|
-
version->PrepareAppend(
|
|
1585
|
+
version->PrepareAppend(read_options, update_stats);
|
|
1591
1586
|
AppendVersion(cfd, version);
|
|
1592
1587
|
}
|
|
1593
1588
|
|
|
1589
|
+
bool& TEST_unchanging() { return const_cast<bool&>(unchanging_); }
|
|
1590
|
+
|
|
1594
1591
|
protected:
|
|
1595
1592
|
struct ManifestWriter;
|
|
1596
1593
|
|
|
@@ -1603,7 +1600,8 @@ class VersionSet {
|
|
|
1603
1600
|
|
|
1604
1601
|
struct LogReporter : public log::Reader::Reporter {
|
|
1605
1602
|
Status* status;
|
|
1606
|
-
void Corruption(size_t /*bytes*/, const Status& s
|
|
1603
|
+
void Corruption(size_t /*bytes*/, const Status& s,
|
|
1604
|
+
uint64_t /*log_number*/ = kMaxSequenceNumber) override {
|
|
1607
1605
|
if (status->ok()) {
|
|
1608
1606
|
*status = s;
|
|
1609
1607
|
}
|
|
@@ -1642,7 +1640,7 @@ class VersionSet {
|
|
|
1642
1640
|
|
|
1643
1641
|
ColumnFamilyData* CreateColumnFamily(const ColumnFamilyOptions& cf_options,
|
|
1644
1642
|
const ReadOptions& read_options,
|
|
1645
|
-
const VersionEdit* edit);
|
|
1643
|
+
const VersionEdit* edit, bool read_only);
|
|
1646
1644
|
|
|
1647
1645
|
Status VerifyFileMetadata(const ReadOptions& read_options,
|
|
1648
1646
|
ColumnFamilyData* cfd, const std::string& fpath,
|
|
@@ -1739,7 +1737,7 @@ class VersionSet {
|
|
|
1739
1737
|
VersionEdit* edit, SequenceNumber* max_last_sequence,
|
|
1740
1738
|
InstrumentedMutex* mu);
|
|
1741
1739
|
|
|
1742
|
-
const bool
|
|
1740
|
+
const bool unchanging_;
|
|
1743
1741
|
bool closed_;
|
|
1744
1742
|
};
|
|
1745
1743
|
|
|
@@ -1798,14 +1796,13 @@ class ReactiveVersionSet : public VersionSet {
|
|
|
1798
1796
|
|
|
1799
1797
|
Status LogAndApply(
|
|
1800
1798
|
const autovector<ColumnFamilyData*>& /*cfds*/,
|
|
1801
|
-
const autovector<const MutableCFOptions*>& /*mutable_cf_options_list*/,
|
|
1802
1799
|
const ReadOptions& /* read_options */,
|
|
1803
1800
|
const WriteOptions& /* write_options */,
|
|
1804
1801
|
const autovector<autovector<VersionEdit*>>& /*edit_lists*/,
|
|
1805
1802
|
InstrumentedMutex* /*mu*/, FSDirectory* /*dir_contains_current_file*/,
|
|
1806
1803
|
bool /*new_descriptor_log*/, const ColumnFamilyOptions* /*new_cf_option*/,
|
|
1807
|
-
const std::vector<std::function<void(const Status&)>>& /*manifest_wcbs
|
|
1808
|
-
override {
|
|
1804
|
+
const std::vector<std::function<void(const Status&)>>& /*manifest_wcbs*/,
|
|
1805
|
+
const std::function<Status()>& /*pre_cb*/) override {
|
|
1809
1806
|
return Status::NotSupported("not supported in reactive mode");
|
|
1810
1807
|
}
|
|
1811
1808
|
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
#include "test_util/mock_time_env.h"
|
|
27
27
|
#include "test_util/testharness.h"
|
|
28
28
|
#include "test_util/testutil.h"
|
|
29
|
+
#include "util/defer.h"
|
|
29
30
|
#include "util/string_util.h"
|
|
30
31
|
|
|
31
32
|
namespace ROCKSDB_NAMESPACE {
|
|
@@ -1408,8 +1409,8 @@ class VersionSetTestBase {
|
|
|
1408
1409
|
Status LogAndApplyToDefaultCF(VersionEdit& edit) {
|
|
1409
1410
|
mutex_.Lock();
|
|
1410
1411
|
Status s = versions_->LogAndApply(
|
|
1411
|
-
versions_->GetColumnFamilySet()->GetDefault(),
|
|
1412
|
-
|
|
1412
|
+
versions_->GetColumnFamilySet()->GetDefault(), read_options_,
|
|
1413
|
+
write_options_, &edit, &mutex_, nullptr);
|
|
1413
1414
|
mutex_.Unlock();
|
|
1414
1415
|
return s;
|
|
1415
1416
|
}
|
|
@@ -1422,8 +1423,8 @@ class VersionSetTestBase {
|
|
|
1422
1423
|
}
|
|
1423
1424
|
mutex_.Lock();
|
|
1424
1425
|
Status s = versions_->LogAndApply(
|
|
1425
|
-
versions_->GetColumnFamilySet()->GetDefault(),
|
|
1426
|
-
|
|
1426
|
+
versions_->GetColumnFamilySet()->GetDefault(), read_options_,
|
|
1427
|
+
write_options_, vedits, &mutex_, nullptr);
|
|
1427
1428
|
mutex_.Unlock();
|
|
1428
1429
|
return s;
|
|
1429
1430
|
}
|
|
@@ -1434,9 +1435,8 @@ class VersionSetTestBase {
|
|
|
1434
1435
|
mutex_.Lock();
|
|
1435
1436
|
VersionEdit dummy;
|
|
1436
1437
|
ASSERT_OK(versions_->LogAndApply(
|
|
1437
|
-
versions_->GetColumnFamilySet()->GetDefault(),
|
|
1438
|
-
|
|
1439
|
-
new_descriptor_log));
|
|
1438
|
+
versions_->GetColumnFamilySet()->GetDefault(), read_options_,
|
|
1439
|
+
write_options_, &dummy, &mutex_, db_directory, new_descriptor_log));
|
|
1440
1440
|
mutex_.Unlock();
|
|
1441
1441
|
}
|
|
1442
1442
|
|
|
@@ -1452,8 +1452,7 @@ class VersionSetTestBase {
|
|
|
1452
1452
|
cf_options.persist_user_defined_timestamps);
|
|
1453
1453
|
Status s;
|
|
1454
1454
|
mutex_.Lock();
|
|
1455
|
-
s = versions_->LogAndApply(/*column_family_data=*/nullptr,
|
|
1456
|
-
MutableCFOptions(cf_options), read_options_,
|
|
1455
|
+
s = versions_->LogAndApply(/*column_family_data=*/nullptr, read_options_,
|
|
1457
1456
|
write_options_, &new_cf, &mutex_,
|
|
1458
1457
|
/*db_directory=*/nullptr,
|
|
1459
1458
|
/*new_descriptor_log=*/false, &cf_options);
|
|
@@ -1510,11 +1509,9 @@ TEST_F(VersionSetTest, SameColumnFamilyGroupCommit) {
|
|
|
1510
1509
|
edits.emplace_back(VersionEdit());
|
|
1511
1510
|
}
|
|
1512
1511
|
autovector<ColumnFamilyData*> cfds;
|
|
1513
|
-
autovector<const MutableCFOptions*> all_mutable_cf_options;
|
|
1514
1512
|
autovector<autovector<VersionEdit*>> edit_lists;
|
|
1515
1513
|
for (int i = 0; i != kGroupSize; ++i) {
|
|
1516
1514
|
cfds.emplace_back(versions_->GetColumnFamilySet()->GetDefault());
|
|
1517
|
-
all_mutable_cf_options.emplace_back(&mutable_cf_options_);
|
|
1518
1515
|
autovector<VersionEdit*> edit_list;
|
|
1519
1516
|
edit_list.emplace_back(&edits[i]);
|
|
1520
1517
|
edit_lists.emplace_back(edit_list);
|
|
@@ -1531,9 +1528,8 @@ TEST_F(VersionSetTest, SameColumnFamilyGroupCommit) {
|
|
|
1531
1528
|
});
|
|
1532
1529
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
1533
1530
|
mutex_.Lock();
|
|
1534
|
-
Status s =
|
|
1535
|
-
|
|
1536
|
-
write_options, edit_lists, &mutex_, nullptr);
|
|
1531
|
+
Status s = versions_->LogAndApply(cfds, read_options, write_options,
|
|
1532
|
+
edit_lists, &mutex_, nullptr);
|
|
1537
1533
|
mutex_.Unlock();
|
|
1538
1534
|
EXPECT_OK(s);
|
|
1539
1535
|
EXPECT_EQ(kGroupSize - 1, count);
|
|
@@ -1734,8 +1730,8 @@ TEST_F(VersionSetTest, ObsoleteBlobFile) {
|
|
|
1734
1730
|
|
|
1735
1731
|
mutex_.Lock();
|
|
1736
1732
|
Status s = versions_->LogAndApply(
|
|
1737
|
-
versions_->GetColumnFamilySet()->GetDefault(),
|
|
1738
|
-
|
|
1733
|
+
versions_->GetColumnFamilySet()->GetDefault(), read_options_,
|
|
1734
|
+
write_options_, &edit, &mutex_, nullptr);
|
|
1739
1735
|
mutex_.Unlock();
|
|
1740
1736
|
|
|
1741
1737
|
ASSERT_OK(s);
|
|
@@ -1910,7 +1906,7 @@ TEST_F(VersionSetTest, WalAddition) {
|
|
|
1910
1906
|
&write_buffer_manager_, &write_controller_,
|
|
1911
1907
|
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
1912
1908
|
/*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
|
|
1913
|
-
/*error_handler=*/nullptr, /*
|
|
1909
|
+
/*error_handler=*/nullptr, /*unchanging=*/false));
|
|
1914
1910
|
ASSERT_OK(new_versions->Recover(column_families_, /*read_only=*/false));
|
|
1915
1911
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
1916
1912
|
ASSERT_EQ(wals.size(), 1);
|
|
@@ -1978,7 +1974,7 @@ TEST_F(VersionSetTest, WalCloseWithoutSync) {
|
|
|
1978
1974
|
&write_buffer_manager_, &write_controller_,
|
|
1979
1975
|
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
1980
1976
|
/*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
|
|
1981
|
-
/*error_handler=*/nullptr, /*
|
|
1977
|
+
/*error_handler=*/nullptr, /*unchanging=*/false));
|
|
1982
1978
|
ASSERT_OK(new_versions->Recover(column_families_, false));
|
|
1983
1979
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
1984
1980
|
ASSERT_EQ(wals.size(), 2);
|
|
@@ -2032,7 +2028,7 @@ TEST_F(VersionSetTest, WalDeletion) {
|
|
|
2032
2028
|
&write_buffer_manager_, &write_controller_,
|
|
2033
2029
|
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2034
2030
|
/*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
|
|
2035
|
-
/*error_handler=*/nullptr, /*
|
|
2031
|
+
/*error_handler=*/nullptr, /*unchanging=*/false));
|
|
2036
2032
|
ASSERT_OK(new_versions->Recover(column_families_, false));
|
|
2037
2033
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
2038
2034
|
ASSERT_EQ(wals.size(), 1);
|
|
@@ -2071,7 +2067,7 @@ TEST_F(VersionSetTest, WalDeletion) {
|
|
|
2071
2067
|
&write_buffer_manager_, &write_controller_,
|
|
2072
2068
|
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2073
2069
|
/*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
|
|
2074
|
-
/*error_handler=*/nullptr, /*
|
|
2070
|
+
/*error_handler=*/nullptr, /*unchanging=*/false));
|
|
2075
2071
|
ASSERT_OK(new_versions->Recover(column_families_, false));
|
|
2076
2072
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
2077
2073
|
ASSERT_EQ(wals.size(), 1);
|
|
@@ -2192,7 +2188,7 @@ TEST_F(VersionSetTest, DeleteWalsBeforeNonExistingWalNumber) {
|
|
|
2192
2188
|
&write_buffer_manager_, &write_controller_,
|
|
2193
2189
|
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2194
2190
|
/*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
|
|
2195
|
-
/*error_handler=*/nullptr, /*
|
|
2191
|
+
/*error_handler=*/nullptr, /*unchanging=*/false));
|
|
2196
2192
|
ASSERT_OK(new_versions->Recover(column_families_, false));
|
|
2197
2193
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
2198
2194
|
ASSERT_EQ(wals.size(), 1);
|
|
@@ -2229,7 +2225,7 @@ TEST_F(VersionSetTest, DeleteAllWals) {
|
|
|
2229
2225
|
&write_buffer_manager_, &write_controller_,
|
|
2230
2226
|
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2231
2227
|
/*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
|
|
2232
|
-
/*error_handler=*/nullptr, /*
|
|
2228
|
+
/*error_handler=*/nullptr, /*unchanging=*/false));
|
|
2233
2229
|
ASSERT_OK(new_versions->Recover(column_families_, false));
|
|
2234
2230
|
const auto& wals = new_versions->GetWalSet().GetWals();
|
|
2235
2231
|
ASSERT_EQ(wals.size(), 0);
|
|
@@ -2272,7 +2268,7 @@ TEST_F(VersionSetTest, AtomicGroupWithWalEdits) {
|
|
|
2272
2268
|
&write_buffer_manager_, &write_controller_,
|
|
2273
2269
|
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2274
2270
|
/*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
|
|
2275
|
-
/*error_handler=*/nullptr, /*
|
|
2271
|
+
/*error_handler=*/nullptr, /*unchanging=*/false));
|
|
2276
2272
|
std::string db_id;
|
|
2277
2273
|
ASSERT_OK(
|
|
2278
2274
|
new_versions->Recover(column_families_, /*read_only=*/false, &db_id));
|
|
@@ -2425,7 +2421,6 @@ class VersionSetWithTimestampTest : public VersionSetTest {
|
|
|
2425
2421
|
options.comparator = test::BytewiseComparatorWithU64TsWrapper();
|
|
2426
2422
|
cfd_ = CreateColumnFamily(kNewCfName, options);
|
|
2427
2423
|
EXPECT_NE(nullptr, cfd_);
|
|
2428
|
-
EXPECT_NE(nullptr, cfd_->GetLatestMutableCFOptions());
|
|
2429
2424
|
column_families_.emplace_back(kNewCfName, options);
|
|
2430
2425
|
}
|
|
2431
2426
|
|
|
@@ -2453,7 +2448,7 @@ class VersionSetWithTimestampTest : public VersionSetTest {
|
|
|
2453
2448
|
&write_buffer_manager_, &write_controller_,
|
|
2454
2449
|
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2455
2450
|
/*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
|
|
2456
|
-
/*error_handler=*/nullptr, /*
|
|
2451
|
+
/*error_handler=*/nullptr, /*unchanging=*/false));
|
|
2457
2452
|
ASSERT_OK(vset->Recover(column_families_, /*read_only=*/false,
|
|
2458
2453
|
/*db_id=*/nullptr));
|
|
2459
2454
|
for (auto* cfd : *(vset->GetColumnFamilySet())) {
|
|
@@ -2475,9 +2470,8 @@ class VersionSetWithTimestampTest : public VersionSetTest {
|
|
|
2475
2470
|
|
|
2476
2471
|
Status s;
|
|
2477
2472
|
mutex_.Lock();
|
|
2478
|
-
s = versions_->LogAndApply(cfd_,
|
|
2479
|
-
|
|
2480
|
-
nullptr);
|
|
2473
|
+
s = versions_->LogAndApply(cfd_, read_options_, write_options_, edits_,
|
|
2474
|
+
&mutex_, nullptr);
|
|
2481
2475
|
mutex_.Unlock();
|
|
2482
2476
|
ASSERT_OK(s);
|
|
2483
2477
|
VerifyFullHistoryTsLow(*std::max_element(ts_lbs.begin(), ts_lbs.end()));
|
|
@@ -3370,9 +3364,8 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
|
|
|
3370
3364
|
cfd_to_drop->Ref();
|
|
3371
3365
|
drop_cf_edit.SetColumnFamily(cfd_to_drop->GetID());
|
|
3372
3366
|
mutex_.Lock();
|
|
3373
|
-
Status s = versions_->LogAndApply(
|
|
3374
|
-
|
|
3375
|
-
write_options, &drop_cf_edit, &mutex_, nullptr);
|
|
3367
|
+
Status s = versions_->LogAndApply(cfd_to_drop, read_options, write_options,
|
|
3368
|
+
&drop_cf_edit, &mutex_, nullptr);
|
|
3376
3369
|
mutex_.Unlock();
|
|
3377
3370
|
ASSERT_OK(s);
|
|
3378
3371
|
|
|
@@ -3380,7 +3373,6 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
|
|
|
3380
3373
|
uint32_t remaining = kAtomicGroupSize;
|
|
3381
3374
|
size_t i = 0;
|
|
3382
3375
|
autovector<ColumnFamilyData*> cfds;
|
|
3383
|
-
autovector<const MutableCFOptions*> mutable_cf_options_list;
|
|
3384
3376
|
autovector<autovector<VersionEdit*>> edit_lists;
|
|
3385
3377
|
for (const auto& cf_name : non_default_cf_names) {
|
|
3386
3378
|
auto cfd = (cf_name != cf_to_drop_name)
|
|
@@ -3388,7 +3380,6 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
|
|
|
3388
3380
|
: cfd_to_drop;
|
|
3389
3381
|
ASSERT_NE(nullptr, cfd);
|
|
3390
3382
|
cfds.push_back(cfd);
|
|
3391
|
-
mutable_cf_options_list.emplace_back(cfd->GetLatestMutableCFOptions());
|
|
3392
3383
|
edits[i].SetColumnFamily(cfd->GetID());
|
|
3393
3384
|
edits[i].SetLogNumber(0);
|
|
3394
3385
|
edits[i].SetNextFile(2);
|
|
@@ -3421,8 +3412,8 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
|
|
|
3421
3412
|
});
|
|
3422
3413
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
3423
3414
|
mutex_.Lock();
|
|
3424
|
-
s = versions_->LogAndApply(cfds,
|
|
3425
|
-
|
|
3415
|
+
s = versions_->LogAndApply(cfds, read_options, write_options, edit_lists,
|
|
3416
|
+
&mutex_, nullptr);
|
|
3426
3417
|
mutex_.Unlock();
|
|
3427
3418
|
ASSERT_OK(s);
|
|
3428
3419
|
ASSERT_EQ(1, called);
|
|
@@ -3759,6 +3750,8 @@ TEST_P(VersionSetTestEmptyDb, OpenCompleteManifest) {
|
|
|
3759
3750
|
}
|
|
3760
3751
|
std::string db_id;
|
|
3761
3752
|
bool has_missing_table_file = false;
|
|
3753
|
+
SaveAndRestore<bool> override_unchanging(&versions_->TEST_unchanging(),
|
|
3754
|
+
read_only);
|
|
3762
3755
|
s = versions_->TryRecoverFromOneManifest(manifest_path, column_families,
|
|
3763
3756
|
read_only, &db_id,
|
|
3764
3757
|
&has_missing_table_file);
|
|
@@ -43,9 +43,8 @@ class OfflineManifestWriter {
|
|
|
43
43
|
// Use `mutex` to imitate a locked DB mutex when calling `LogAndApply()`.
|
|
44
44
|
InstrumentedMutex mutex;
|
|
45
45
|
mutex.Lock();
|
|
46
|
-
Status s = versions_.LogAndApply(cfd,
|
|
47
|
-
|
|
48
|
-
dir_contains_current_file,
|
|
46
|
+
Status s = versions_.LogAndApply(cfd, read_options, write_options, edit,
|
|
47
|
+
&mutex, dir_contains_current_file,
|
|
49
48
|
false /* new_descriptor_log */);
|
|
50
49
|
mutex.Unlock();
|
|
51
50
|
return s;
|
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
|
|
35
35
|
namespace ROCKSDB_NAMESPACE {
|
|
36
36
|
|
|
37
|
-
|
|
38
37
|
Status WalManager::DeleteFile(const std::string& fname, uint64_t number) {
|
|
39
38
|
auto s = env_->DeleteFile(wal_dir_ + "/" + fname);
|
|
40
39
|
if (s.ok()) {
|
|
@@ -284,6 +283,7 @@ void WalManager::ArchiveWALFile(const std::string& fname, uint64_t number) {
|
|
|
284
283
|
// The sync point below is used in (DBTest,TransactionLogIteratorRace)
|
|
285
284
|
TEST_SYNC_POINT("WalManager::PurgeObsoleteFiles:1");
|
|
286
285
|
Status s = env_->RenameFile(fname, archived_log_name);
|
|
286
|
+
IGNORE_STATUS_IF_ERROR(s);
|
|
287
287
|
// The sync point below is used in (DBTest,TransactionLogIteratorRace)
|
|
288
288
|
TEST_SYNC_POINT("WalManager::PurgeObsoleteFiles:2");
|
|
289
289
|
// The sync point below is used in
|
|
@@ -469,7 +469,8 @@ Status WalManager::ReadFirstLine(const std::string& fname,
|
|
|
469
469
|
|
|
470
470
|
Status* status;
|
|
471
471
|
bool ignore_error; // true if db_options_.paranoid_checks==false
|
|
472
|
-
void Corruption(size_t bytes, const Status& s
|
|
472
|
+
void Corruption(size_t bytes, const Status& s,
|
|
473
|
+
uint64_t /*log_number*/ = kMaxSequenceNumber) override {
|
|
473
474
|
ROCKS_LOG_WARN(info_log, "[WalManager] %s%s: dropping %d bytes; %s",
|
|
474
475
|
(this->ignore_error ? "(ignoring error) " : ""), fname,
|
|
475
476
|
static_cast<int>(bytes), s.ToString().c_str());
|
|
@@ -551,9 +551,6 @@ Status WriteBatchInternal::Iterate(const WriteBatch* wb,
|
|
|
551
551
|
|
|
552
552
|
if (LIKELY(!s.IsTryAgain())) {
|
|
553
553
|
last_was_try_again = false;
|
|
554
|
-
tag = 0;
|
|
555
|
-
column_family = 0; // default
|
|
556
|
-
|
|
557
554
|
s = ReadRecordFromWriteBatch(&input, &tag, &column_family, &key, &value,
|
|
558
555
|
&blob, &xid, &write_unix_time);
|
|
559
556
|
if (!s.ok()) {
|
|
@@ -815,6 +812,12 @@ WriteBatchInternal::GetColumnFamilyIdAndTimestampSize(
|
|
|
815
812
|
s = Status::InvalidArgument("Default cf timestamp size mismatch");
|
|
816
813
|
}
|
|
817
814
|
}
|
|
815
|
+
auto* cfd =
|
|
816
|
+
static_cast_with_check<ColumnFamilyHandleImpl>(column_family)->cfd();
|
|
817
|
+
if (cfd && cfd->ioptions().disallow_memtable_writes) {
|
|
818
|
+
s = Status::InvalidArgument(
|
|
819
|
+
"This column family has disallow_memtable_writes=true");
|
|
820
|
+
}
|
|
818
821
|
} else if (b->default_cf_ts_sz_ > 0) {
|
|
819
822
|
ts_sz = b->default_cf_ts_sz_;
|
|
820
823
|
}
|
|
@@ -836,6 +839,12 @@ Status CheckColumnFamilyTimestampSize(ColumnFamilyHandle* column_family,
|
|
|
836
839
|
if (cf_ts_sz != ts.size()) {
|
|
837
840
|
return Status::InvalidArgument("timestamp size mismatch");
|
|
838
841
|
}
|
|
842
|
+
auto* cfd =
|
|
843
|
+
static_cast_with_check<ColumnFamilyHandleImpl>(column_family)->cfd();
|
|
844
|
+
if (cfd && cfd->ioptions().disallow_memtable_writes) {
|
|
845
|
+
return Status::InvalidArgument(
|
|
846
|
+
"This column family has disallow_memtable_writes=true");
|
|
847
|
+
}
|
|
839
848
|
return Status::OK();
|
|
840
849
|
}
|
|
841
850
|
} // anonymous namespace
|
|
@@ -1885,7 +1894,6 @@ Status WriteBatch::VerifyChecksum() const {
|
|
|
1885
1894
|
// ReadRecordFromWriteBatch
|
|
1886
1895
|
key.clear();
|
|
1887
1896
|
value.clear();
|
|
1888
|
-
column_family = 0;
|
|
1889
1897
|
s = ReadRecordFromWriteBatch(&input, &tag, &column_family, &key, &value,
|
|
1890
1898
|
&blob, &xid, /*write_unix_time=*/nullptr);
|
|
1891
1899
|
if (!s.ok()) {
|
|
@@ -2185,6 +2193,13 @@ class MemTableInserter : public WriteBatch::Handler {
|
|
|
2185
2193
|
}
|
|
2186
2194
|
return false;
|
|
2187
2195
|
}
|
|
2196
|
+
auto* current = cf_mems_->current();
|
|
2197
|
+
if (current && current->ioptions().disallow_memtable_writes) {
|
|
2198
|
+
*s = Status::InvalidArgument(
|
|
2199
|
+
"This column family has disallow_memtable_writes=true");
|
|
2200
|
+
return false;
|
|
2201
|
+
}
|
|
2202
|
+
|
|
2188
2203
|
if (recovering_log_number_ != 0 &&
|
|
2189
2204
|
recovering_log_number_ < cf_mems_->GetLogNumber()) {
|
|
2190
2205
|
// This is true only in recovery environment (recovering_log_number_ is
|
|
@@ -2928,10 +2943,9 @@ class MemTableInserter : public WriteBatch::Handler {
|
|
|
2928
2943
|
auto* cfd = cf_mems_->current();
|
|
2929
2944
|
|
|
2930
2945
|
assert(cfd);
|
|
2931
|
-
assert(cfd->ioptions());
|
|
2932
2946
|
|
|
2933
2947
|
const size_t size_to_maintain = static_cast<size_t>(
|
|
2934
|
-
cfd->ioptions()
|
|
2948
|
+
cfd->ioptions().max_write_buffer_size_to_maintain);
|
|
2935
2949
|
|
|
2936
2950
|
if (size_to_maintain > 0) {
|
|
2937
2951
|
MemTableList* const imm = cfd->imm();
|
|
@@ -3196,11 +3210,11 @@ Status WriteBatchInternal::InsertInto(
|
|
|
3196
3210
|
ColumnFamilyMemTables* memtables, FlushScheduler* flush_scheduler,
|
|
3197
3211
|
TrimHistoryScheduler* trim_history_scheduler,
|
|
3198
3212
|
bool ignore_missing_column_families, uint64_t recovery_log_number, DB* db,
|
|
3199
|
-
bool
|
|
3213
|
+
bool seq_per_batch, bool batch_per_txn) {
|
|
3200
3214
|
MemTableInserter inserter(
|
|
3201
3215
|
sequence, memtables, flush_scheduler, trim_history_scheduler,
|
|
3202
3216
|
ignore_missing_column_families, recovery_log_number, db,
|
|
3203
|
-
concurrent_memtable_writes, nullptr /* prot_info */,
|
|
3217
|
+
/*concurrent_memtable_writes=*/false, nullptr /* prot_info */,
|
|
3204
3218
|
nullptr /*has_valid_writes*/, seq_per_batch, batch_per_txn);
|
|
3205
3219
|
for (auto w : write_group) {
|
|
3206
3220
|
if (w->CallbackFailed()) {
|