@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
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
|
|
17
17
|
namespace ROCKSDB_NAMESPACE {
|
|
18
18
|
|
|
19
|
-
|
|
20
19
|
DBImplReadOnly::DBImplReadOnly(const DBOptions& db_options,
|
|
21
20
|
const std::string& dbname)
|
|
22
21
|
: DBImpl(db_options, dbname, /*seq_per_batch*/ false,
|
|
@@ -33,7 +32,8 @@ Status DBImplReadOnly::GetImpl(const ReadOptions& read_options,
|
|
|
33
32
|
const Slice& key,
|
|
34
33
|
GetImplOptions& get_impl_options) {
|
|
35
34
|
assert(get_impl_options.value != nullptr ||
|
|
36
|
-
get_impl_options.columns != nullptr
|
|
35
|
+
get_impl_options.columns != nullptr ||
|
|
36
|
+
get_impl_options.merge_operands != nullptr);
|
|
37
37
|
assert(get_impl_options.column_family);
|
|
38
38
|
|
|
39
39
|
Status s;
|
|
@@ -87,7 +87,11 @@ Status DBImplReadOnly::GetImpl(const ReadOptions& read_options,
|
|
|
87
87
|
return s;
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
+
// Prepare to store a list of merge operations if merge occurs.
|
|
90
91
|
MergeContext merge_context;
|
|
92
|
+
// TODO - Large Result Optimization for Read Only DB
|
|
93
|
+
// (https://github.com/facebook/rocksdb/pull/10458)
|
|
94
|
+
|
|
91
95
|
SequenceNumber max_covering_tombstone_seq = 0;
|
|
92
96
|
LookupKey lkey(key, snapshot, read_options.timestamp);
|
|
93
97
|
PERF_TIMER_STOP(get_snapshot_time);
|
|
@@ -98,7 +102,8 @@ Status DBImplReadOnly::GetImpl(const ReadOptions& read_options,
|
|
|
98
102
|
get_impl_options.value ? get_impl_options.value->GetSelf() : nullptr,
|
|
99
103
|
get_impl_options.columns, ts, &s, &merge_context,
|
|
100
104
|
&max_covering_tombstone_seq, read_options,
|
|
101
|
-
false /* immutable_memtable */, &read_cb
|
|
105
|
+
false /* immutable_memtable */, &read_cb,
|
|
106
|
+
/*is_blob_index=*/nullptr, /*do_merge=*/get_impl_options.get_value)) {
|
|
102
107
|
if (get_impl_options.value) {
|
|
103
108
|
get_impl_options.value->PinSelf();
|
|
104
109
|
}
|
|
@@ -112,7 +117,7 @@ Status DBImplReadOnly::GetImpl(const ReadOptions& read_options,
|
|
|
112
117
|
/*value_found*/ nullptr,
|
|
113
118
|
/*key_exists*/ nullptr, /*seq*/ nullptr, &read_cb,
|
|
114
119
|
/*is_blob*/ nullptr,
|
|
115
|
-
/*do_merge
|
|
120
|
+
/*do_merge=*/get_impl_options.get_value);
|
|
116
121
|
RecordTick(stats_, MEMTABLE_MISS);
|
|
117
122
|
}
|
|
118
123
|
{
|
|
@@ -122,6 +127,14 @@ Status DBImplReadOnly::GetImpl(const ReadOptions& read_options,
|
|
|
122
127
|
size = get_impl_options.value->size();
|
|
123
128
|
} else if (get_impl_options.columns) {
|
|
124
129
|
size = get_impl_options.columns->serialized_size();
|
|
130
|
+
} else if (get_impl_options.merge_operands) {
|
|
131
|
+
*get_impl_options.number_of_operands =
|
|
132
|
+
static_cast<int>(merge_context.GetNumOperands());
|
|
133
|
+
for (const Slice& sl : merge_context.GetOperands()) {
|
|
134
|
+
size += sl.size();
|
|
135
|
+
get_impl_options.merge_operands->PinSelf(sl);
|
|
136
|
+
get_impl_options.merge_operands++;
|
|
137
|
+
}
|
|
125
138
|
}
|
|
126
139
|
RecordTick(stats_, BYTES_READ, size);
|
|
127
140
|
RecordInHistogram(stats_, BYTES_PER_READ, size);
|
|
@@ -172,16 +185,10 @@ Iterator* DBImplReadOnly::NewIterator(const ReadOptions& _read_options,
|
|
|
172
185
|
? static_cast<const SnapshotImpl*>(read_options.snapshot)->number_
|
|
173
186
|
: latest_snapshot;
|
|
174
187
|
ReadCallback* read_callback = nullptr; // No read callback provided.
|
|
175
|
-
|
|
176
|
-
env_, read_options,
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
super_version->version_number, read_callback);
|
|
180
|
-
auto internal_iter = NewInternalIterator(
|
|
181
|
-
db_iter->GetReadOptions(), cfd, super_version, db_iter->GetArena(),
|
|
182
|
-
read_seq, /* allow_unprepared_value */ true, db_iter);
|
|
183
|
-
db_iter->SetIterUnderDBIter(internal_iter);
|
|
184
|
-
return db_iter;
|
|
188
|
+
return NewArenaWrappedDbIterator(
|
|
189
|
+
env_, read_options, cfh, super_version, read_seq, read_callback, this,
|
|
190
|
+
/*expose_blob_index=*/false, /*allow_refresh=*/false,
|
|
191
|
+
/*allow_mark_memtable_for_flush=*/false);
|
|
185
192
|
}
|
|
186
193
|
|
|
187
194
|
Status DBImplReadOnly::NewIterators(
|
|
@@ -218,36 +225,32 @@ Status DBImplReadOnly::NewIterators(
|
|
|
218
225
|
? static_cast<const SnapshotImpl*>(read_options.snapshot)->number_
|
|
219
226
|
: latest_snapshot;
|
|
220
227
|
|
|
221
|
-
autovector<std::tuple<
|
|
228
|
+
autovector<std::tuple<ColumnFamilyHandleImpl*, SuperVersion*>> cfh_to_sv;
|
|
222
229
|
|
|
223
230
|
const bool check_read_ts =
|
|
224
231
|
read_options.timestamp && read_options.timestamp->size() > 0;
|
|
225
232
|
for (auto cfh : column_families) {
|
|
226
233
|
auto* cfd = static_cast_with_check<ColumnFamilyHandleImpl>(cfh)->cfd();
|
|
227
234
|
auto* sv = cfd->GetSuperVersion()->Ref();
|
|
228
|
-
|
|
235
|
+
cfh_to_sv.emplace_back(static_cast_with_check<ColumnFamilyHandleImpl>(cfh),
|
|
236
|
+
sv);
|
|
229
237
|
if (check_read_ts) {
|
|
230
238
|
const Status s =
|
|
231
239
|
FailIfReadCollapsedHistory(cfd, sv, *(read_options.timestamp));
|
|
232
240
|
if (!s.ok()) {
|
|
233
|
-
for (auto prev_entry :
|
|
241
|
+
for (auto prev_entry : cfh_to_sv) {
|
|
234
242
|
std::get<1>(prev_entry)->Unref();
|
|
235
243
|
}
|
|
236
244
|
return s;
|
|
237
245
|
}
|
|
238
246
|
}
|
|
239
247
|
}
|
|
240
|
-
assert(
|
|
241
|
-
for (auto [
|
|
248
|
+
assert(cfh_to_sv.size() == column_families.size());
|
|
249
|
+
for (auto [cfh, sv] : cfh_to_sv) {
|
|
242
250
|
auto* db_iter = NewArenaWrappedDbIterator(
|
|
243
|
-
env_, read_options,
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
sv->version_number, read_callback);
|
|
247
|
-
auto* internal_iter = NewInternalIterator(
|
|
248
|
-
db_iter->GetReadOptions(), cfd, sv, db_iter->GetArena(), read_seq,
|
|
249
|
-
/* allow_unprepared_value */ true, db_iter);
|
|
250
|
-
db_iter->SetIterUnderDBIter(internal_iter);
|
|
251
|
+
env_, read_options, cfh, sv, read_seq, read_callback, this,
|
|
252
|
+
/*expose_blob_index=*/false, /*allow_refresh=*/false,
|
|
253
|
+
/*allow_mark_memtable_for_flush=*/false);
|
|
251
254
|
iterators->push_back(db_iter);
|
|
252
255
|
}
|
|
253
256
|
|
|
@@ -276,7 +279,8 @@ Status OpenForReadOnlyCheckExistence(const DBOptions& db_options,
|
|
|
276
279
|
} // namespace
|
|
277
280
|
|
|
278
281
|
Status DB::OpenForReadOnly(const Options& options, const std::string& dbname,
|
|
279
|
-
DB
|
|
282
|
+
std::unique_ptr<DB>* dbptr,
|
|
283
|
+
bool /*error_if_wal_file_exists*/) {
|
|
280
284
|
Status s = OpenForReadOnlyCheckExistence(options, dbname);
|
|
281
285
|
if (!s.ok()) {
|
|
282
286
|
return s;
|
|
@@ -310,7 +314,7 @@ Status DB::OpenForReadOnly(const Options& options, const std::string& dbname,
|
|
|
310
314
|
Status DB::OpenForReadOnly(
|
|
311
315
|
const DBOptions& db_options, const std::string& dbname,
|
|
312
316
|
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
313
|
-
std::vector<ColumnFamilyHandle*>* handles, DB
|
|
317
|
+
std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr,
|
|
314
318
|
bool error_if_wal_file_exists) {
|
|
315
319
|
// If dbname does not exist in the file system, should not do anything
|
|
316
320
|
Status s = OpenForReadOnlyCheckExistence(db_options, dbname);
|
|
@@ -326,7 +330,7 @@ Status DB::OpenForReadOnly(
|
|
|
326
330
|
Status DBImplReadOnly::OpenForReadOnlyWithoutCheck(
|
|
327
331
|
const DBOptions& db_options, const std::string& dbname,
|
|
328
332
|
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
329
|
-
std::vector<ColumnFamilyHandle*>* handles, DB
|
|
333
|
+
std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr,
|
|
330
334
|
bool error_if_wal_file_exists) {
|
|
331
335
|
*dbptr = nullptr;
|
|
332
336
|
handles->clear();
|
|
@@ -357,7 +361,7 @@ Status DBImplReadOnly::OpenForReadOnlyWithoutCheck(
|
|
|
357
361
|
impl->mutex_.Unlock();
|
|
358
362
|
sv_context.Clean();
|
|
359
363
|
if (s.ok()) {
|
|
360
|
-
|
|
364
|
+
dbptr->reset(impl);
|
|
361
365
|
for (auto* h : *handles) {
|
|
362
366
|
impl->NewThreadStatusCfInfo(
|
|
363
367
|
static_cast_with_check<ColumnFamilyHandleImpl>(h)->cfd());
|
|
@@ -372,5 +376,4 @@ Status DBImplReadOnly::OpenForReadOnlyWithoutCheck(
|
|
|
372
376
|
return s;
|
|
373
377
|
}
|
|
374
378
|
|
|
375
|
-
|
|
376
379
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
#pragma once
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
#include <string>
|
|
10
9
|
#include <vector>
|
|
11
10
|
|
|
@@ -156,6 +155,29 @@ class DBImplReadOnly : public DBImpl {
|
|
|
156
155
|
return Status::NotSupported("Not supported operation in read only mode.");
|
|
157
156
|
}
|
|
158
157
|
|
|
158
|
+
using DB::CreateColumnFamily;
|
|
159
|
+
using DBImpl::CreateColumnFamily;
|
|
160
|
+
Status CreateColumnFamily(const ColumnFamilyOptions& /*cf_options*/,
|
|
161
|
+
const std::string& /*column_family*/,
|
|
162
|
+
ColumnFamilyHandle** /*handle*/) override {
|
|
163
|
+
return Status::NotSupported("Not supported operation in read only mode.");
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
using DB::CreateColumnFamilies;
|
|
167
|
+
using DBImpl::CreateColumnFamilies;
|
|
168
|
+
Status CreateColumnFamilies(
|
|
169
|
+
const ColumnFamilyOptions& /*cf_options*/,
|
|
170
|
+
const std::vector<std::string>& /*column_family_names*/,
|
|
171
|
+
std::vector<ColumnFamilyHandle*>* /*handles*/) override {
|
|
172
|
+
return Status::NotSupported("Not supported operation in read only mode.");
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
Status CreateColumnFamilies(
|
|
176
|
+
const std::vector<ColumnFamilyDescriptor>& /*column_families*/,
|
|
177
|
+
std::vector<ColumnFamilyHandle*>* /*handles*/) override {
|
|
178
|
+
return Status::NotSupported("Not supported operation in read only mode.");
|
|
179
|
+
}
|
|
180
|
+
|
|
159
181
|
// FIXME: some missing overrides for more "write" functions
|
|
160
182
|
|
|
161
183
|
protected:
|
|
@@ -172,7 +194,7 @@ class DBImplReadOnly : public DBImpl {
|
|
|
172
194
|
static Status OpenForReadOnlyWithoutCheck(
|
|
173
195
|
const DBOptions& db_options, const std::string& dbname,
|
|
174
196
|
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
175
|
-
std::vector<ColumnFamilyHandle*>* handles, DB
|
|
197
|
+
std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr,
|
|
176
198
|
bool error_if_wal_file_exists = false);
|
|
177
199
|
friend class DB;
|
|
178
200
|
};
|
|
@@ -55,9 +55,9 @@ Status DBImplSecondary::Recover(
|
|
|
55
55
|
// Initial max_total_in_memory_state_ before recovery logs.
|
|
56
56
|
max_total_in_memory_state_ = 0;
|
|
57
57
|
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
|
58
|
-
auto
|
|
59
|
-
max_total_in_memory_state_ += mutable_cf_options
|
|
60
|
-
mutable_cf_options
|
|
58
|
+
const auto& mutable_cf_options = cfd->GetLatestMutableCFOptions();
|
|
59
|
+
max_total_in_memory_state_ += mutable_cf_options.write_buffer_size *
|
|
60
|
+
mutable_cf_options.max_write_buffer_number;
|
|
61
61
|
}
|
|
62
62
|
if (s.ok()) {
|
|
63
63
|
default_cf_handle_ = new ColumnFamilyHandleImpl(
|
|
@@ -270,10 +270,8 @@ Status DBImplSecondary::RecoverLogFiles(
|
|
|
270
270
|
if (!cfd->mem()->IsEmpty() &&
|
|
271
271
|
(curr_log_num == std::numeric_limits<uint64_t>::max() ||
|
|
272
272
|
curr_log_num != log_number)) {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
MemTable* new_mem =
|
|
276
|
-
cfd->ConstructNewMemtable(mutable_cf_options, seq_of_batch);
|
|
273
|
+
MemTable* new_mem = cfd->ConstructNewMemtable(
|
|
274
|
+
cfd->GetLatestMutableCFOptions(), seq_of_batch);
|
|
277
275
|
cfd->mem()->SetNextLogNumber(log_number);
|
|
278
276
|
cfd->mem()->ConstructFragmentedRangeTombstones();
|
|
279
277
|
cfd->imm()->Add(cfd->mem(), &job_context->memtables_to_free);
|
|
@@ -344,7 +342,8 @@ Status DBImplSecondary::GetImpl(const ReadOptions& read_options,
|
|
|
344
342
|
const Slice& key,
|
|
345
343
|
GetImplOptions& get_impl_options) {
|
|
346
344
|
assert(get_impl_options.value != nullptr ||
|
|
347
|
-
get_impl_options.columns != nullptr
|
|
345
|
+
get_impl_options.columns != nullptr ||
|
|
346
|
+
get_impl_options.merge_operands != nullptr);
|
|
348
347
|
assert(get_impl_options.column_family);
|
|
349
348
|
|
|
350
349
|
Status s;
|
|
@@ -399,37 +398,64 @@ Status DBImplSecondary::GetImpl(const ReadOptions& read_options,
|
|
|
399
398
|
}
|
|
400
399
|
}
|
|
401
400
|
MergeContext merge_context;
|
|
401
|
+
// TODO - Large Result Optimization for Secondary DB
|
|
402
|
+
// (https://github.com/facebook/rocksdb/pull/10458)
|
|
403
|
+
|
|
402
404
|
SequenceNumber max_covering_tombstone_seq = 0;
|
|
403
405
|
LookupKey lkey(key, snapshot, read_options.timestamp);
|
|
404
406
|
PERF_TIMER_STOP(get_snapshot_time);
|
|
405
407
|
bool done = false;
|
|
406
408
|
|
|
407
409
|
// Look up starts here
|
|
408
|
-
if (
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
410
|
+
if (get_impl_options.get_value) {
|
|
411
|
+
if (super_version->mem->Get(
|
|
412
|
+
lkey,
|
|
413
|
+
get_impl_options.value ? get_impl_options.value->GetSelf()
|
|
414
|
+
: nullptr,
|
|
415
|
+
get_impl_options.columns, ts, &s, &merge_context,
|
|
416
|
+
&max_covering_tombstone_seq, read_options,
|
|
417
|
+
false /* immutable_memtable */, &read_cb,
|
|
418
|
+
/*is_blob_index=*/nullptr, /*do_merge=*/true)) {
|
|
419
|
+
done = true;
|
|
420
|
+
if (get_impl_options.value) {
|
|
421
|
+
get_impl_options.value->PinSelf();
|
|
422
|
+
}
|
|
423
|
+
RecordTick(stats_, MEMTABLE_HIT);
|
|
424
|
+
} else if ((s.ok() || s.IsMergeInProgress()) &&
|
|
425
|
+
super_version->imm->Get(
|
|
426
|
+
lkey,
|
|
427
|
+
get_impl_options.value ? get_impl_options.value->GetSelf()
|
|
428
|
+
: nullptr,
|
|
429
|
+
get_impl_options.columns, ts, &s, &merge_context,
|
|
430
|
+
&max_covering_tombstone_seq, read_options, &read_cb)) {
|
|
431
|
+
done = true;
|
|
432
|
+
if (get_impl_options.value) {
|
|
433
|
+
get_impl_options.value->PinSelf();
|
|
434
|
+
}
|
|
435
|
+
RecordTick(stats_, MEMTABLE_HIT);
|
|
417
436
|
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
437
|
+
} else {
|
|
438
|
+
// GetMergeOperands
|
|
439
|
+
if (super_version->mem->Get(
|
|
440
|
+
lkey,
|
|
441
|
+
get_impl_options.value ? get_impl_options.value->GetSelf()
|
|
442
|
+
: nullptr,
|
|
443
|
+
get_impl_options.columns, ts, &s, &merge_context,
|
|
444
|
+
&max_covering_tombstone_seq, read_options,
|
|
445
|
+
false /* immutable_memtable */, &read_cb,
|
|
446
|
+
/*is_blob_index=*/nullptr, /*do_merge=*/false)) {
|
|
447
|
+
done = true;
|
|
448
|
+
RecordTick(stats_, MEMTABLE_HIT);
|
|
449
|
+
} else if ((s.ok() || s.IsMergeInProgress()) &&
|
|
450
|
+
super_version->imm->GetMergeOperands(lkey, &s, &merge_context,
|
|
451
|
+
&max_covering_tombstone_seq,
|
|
452
|
+
read_options)) {
|
|
453
|
+
done = true;
|
|
454
|
+
RecordTick(stats_, MEMTABLE_HIT);
|
|
429
455
|
}
|
|
430
|
-
RecordTick(stats_, MEMTABLE_HIT);
|
|
431
456
|
}
|
|
432
|
-
if (!
|
|
457
|
+
if (!s.ok() && !s.IsMergeInProgress() && !s.IsNotFound()) {
|
|
458
|
+
assert(done);
|
|
433
459
|
ReturnAndCleanupSuperVersion(cfd, super_version);
|
|
434
460
|
return s;
|
|
435
461
|
}
|
|
@@ -453,6 +479,14 @@ Status DBImplSecondary::GetImpl(const ReadOptions& read_options,
|
|
|
453
479
|
size = get_impl_options.value->size();
|
|
454
480
|
} else if (get_impl_options.columns) {
|
|
455
481
|
size = get_impl_options.columns->serialized_size();
|
|
482
|
+
} else if (get_impl_options.merge_operands) {
|
|
483
|
+
*get_impl_options.number_of_operands =
|
|
484
|
+
static_cast<int>(merge_context.GetNumOperands());
|
|
485
|
+
for (const Slice& sl : merge_context.GetOperands()) {
|
|
486
|
+
size += sl.size();
|
|
487
|
+
get_impl_options.merge_operands->PinSelf(sl);
|
|
488
|
+
get_impl_options.merge_operands++;
|
|
489
|
+
}
|
|
456
490
|
}
|
|
457
491
|
RecordTick(stats_, BYTES_READ, size);
|
|
458
492
|
RecordTimeToHistogram(stats_, BYTES_PER_READ, size);
|
|
@@ -532,17 +566,10 @@ ArenaWrappedDBIter* DBImplSecondary::NewIteratorImpl(
|
|
|
532
566
|
assert(snapshot == kMaxSequenceNumber);
|
|
533
567
|
snapshot = versions_->LastSequence();
|
|
534
568
|
assert(snapshot != kMaxSequenceNumber);
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
super_version->version_number, read_callback, cfh, expose_blob_index,
|
|
540
|
-
allow_refresh);
|
|
541
|
-
auto internal_iter = NewInternalIterator(
|
|
542
|
-
db_iter->GetReadOptions(), cfh->cfd(), super_version, db_iter->GetArena(),
|
|
543
|
-
snapshot, /* allow_unprepared_value */ true, db_iter);
|
|
544
|
-
db_iter->SetIterUnderDBIter(internal_iter);
|
|
545
|
-
return db_iter;
|
|
569
|
+
return NewArenaWrappedDbIterator(env_, read_options, cfh, super_version,
|
|
570
|
+
snapshot, read_callback, this,
|
|
571
|
+
expose_blob_index, allow_refresh,
|
|
572
|
+
/*allow_mark_memtable_for_flush=*/false);
|
|
546
573
|
}
|
|
547
574
|
|
|
548
575
|
Status DBImplSecondary::NewIterators(
|
|
@@ -671,13 +698,13 @@ Status DBImplSecondary::CheckConsistency() {
|
|
|
671
698
|
|
|
672
699
|
Status DBImplSecondary::TryCatchUpWithPrimary() {
|
|
673
700
|
assert(versions_.get() != nullptr);
|
|
674
|
-
assert(manifest_reader_.get() != nullptr);
|
|
675
701
|
Status s;
|
|
676
702
|
// read the manifest and apply new changes to the secondary instance
|
|
677
703
|
std::unordered_set<ColumnFamilyData*> cfds_changed;
|
|
678
704
|
JobContext job_context(0, true /*create_superversion*/);
|
|
679
705
|
{
|
|
680
706
|
InstrumentedMutexLock lock_guard(&mutex_);
|
|
707
|
+
assert(manifest_reader_.get() != nullptr);
|
|
681
708
|
s = static_cast_with_check<ReactiveVersionSet>(versions_.get())
|
|
682
709
|
->ReadAndApply(&mutex_, &manifest_reader_,
|
|
683
710
|
manifest_reader_status_.get(), &cfds_changed,
|
|
@@ -701,13 +728,13 @@ Status DBImplSecondary::TryCatchUpWithPrimary() {
|
|
|
701
728
|
// instance
|
|
702
729
|
if (s.ok()) {
|
|
703
730
|
s = FindAndRecoverLogFiles(&cfds_changed, &job_context);
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
731
|
+
if (s.IsPathNotFound()) {
|
|
732
|
+
ROCKS_LOG_INFO(
|
|
733
|
+
immutable_db_options_.info_log,
|
|
734
|
+
"Secondary tries to read WAL, but WAL file(s) have already "
|
|
735
|
+
"been purged by primary.");
|
|
736
|
+
s = Status::OK();
|
|
737
|
+
}
|
|
711
738
|
}
|
|
712
739
|
if (s.ok()) {
|
|
713
740
|
for (auto cfd : cfds_changed) {
|
|
@@ -737,7 +764,8 @@ Status DBImplSecondary::TryCatchUpWithPrimary() {
|
|
|
737
764
|
}
|
|
738
765
|
|
|
739
766
|
Status DB::OpenAsSecondary(const Options& options, const std::string& dbname,
|
|
740
|
-
const std::string& secondary_path,
|
|
767
|
+
const std::string& secondary_path,
|
|
768
|
+
std::unique_ptr<DB>* dbptr) {
|
|
741
769
|
*dbptr = nullptr;
|
|
742
770
|
|
|
743
771
|
DBOptions db_options(options);
|
|
@@ -759,7 +787,7 @@ Status DB::OpenAsSecondary(
|
|
|
759
787
|
const DBOptions& db_options, const std::string& dbname,
|
|
760
788
|
const std::string& secondary_path,
|
|
761
789
|
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
762
|
-
std::vector<ColumnFamilyHandle*>* handles, DB
|
|
790
|
+
std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr) {
|
|
763
791
|
*dbptr = nullptr;
|
|
764
792
|
|
|
765
793
|
DBOptions tmp_opts(db_options);
|
|
@@ -826,7 +854,7 @@ Status DB::OpenAsSecondary(
|
|
|
826
854
|
impl->mutex_.Unlock();
|
|
827
855
|
sv_context.Clean();
|
|
828
856
|
if (s.ok()) {
|
|
829
|
-
|
|
857
|
+
dbptr->reset(impl);
|
|
830
858
|
for (auto h : *handles) {
|
|
831
859
|
impl->NewThreadStatusCfInfo(
|
|
832
860
|
static_cast_with_check<ColumnFamilyHandleImpl>(h)->cfd());
|
|
@@ -864,21 +892,24 @@ Status DBImplSecondary::CompactWithoutInstallation(
|
|
|
864
892
|
ColumnFamilyMetaData cf_meta;
|
|
865
893
|
version->GetColumnFamilyMetaData(&cf_meta);
|
|
866
894
|
|
|
867
|
-
const MutableCFOptions* mutable_cf_options = cfd->GetLatestMutableCFOptions();
|
|
868
|
-
ColumnFamilyOptions cf_options = cfd->GetLatestCFOptions();
|
|
869
895
|
VersionStorageInfo* vstorage = version->storage_info();
|
|
870
896
|
|
|
871
897
|
// Use comp_options to reuse some CompactFiles functions
|
|
872
898
|
CompactionOptions comp_options;
|
|
873
899
|
comp_options.compression = kDisableCompressionOption;
|
|
874
900
|
comp_options.output_file_size_limit = MaxFileSizeForLevel(
|
|
875
|
-
|
|
876
|
-
vstorage->base_level(),
|
|
901
|
+
cfd->GetLatestMutableCFOptions(), input.output_level,
|
|
902
|
+
cfd->ioptions().compaction_style, vstorage->base_level(),
|
|
903
|
+
cfd->ioptions().level_compaction_dynamic_level_bytes);
|
|
877
904
|
|
|
878
905
|
std::vector<CompactionInputFiles> input_files;
|
|
879
906
|
Status s = cfd->compaction_picker()->GetCompactionInputsFromFileNumbers(
|
|
880
907
|
&input_files, &input_set, vstorage, comp_options);
|
|
881
908
|
if (!s.ok()) {
|
|
909
|
+
ROCKS_LOG_ERROR(
|
|
910
|
+
immutable_db_options_.info_log,
|
|
911
|
+
"GetCompactionInputsFromFileNumbers() failed - %s.\n DebugString: %s",
|
|
912
|
+
s.ToString().c_str(), version->DebugString(/*hex=*/true).c_str());
|
|
882
913
|
return s;
|
|
883
914
|
}
|
|
884
915
|
|
|
@@ -886,7 +917,7 @@ Status DBImplSecondary::CompactWithoutInstallation(
|
|
|
886
917
|
assert(cfd->compaction_picker());
|
|
887
918
|
c.reset(cfd->compaction_picker()->CompactFiles(
|
|
888
919
|
comp_options, input_files, input.output_level, vstorage,
|
|
889
|
-
|
|
920
|
+
cfd->GetLatestMutableCFOptions(), mutable_db_options_, 0));
|
|
890
921
|
assert(c != nullptr);
|
|
891
922
|
|
|
892
923
|
c->FinalizeInputInfo(version);
|
|
@@ -902,7 +933,10 @@ Status DBImplSecondary::CompactWithoutInstallation(
|
|
|
902
933
|
immutable_db_options_.info_log.get());
|
|
903
934
|
|
|
904
935
|
const int job_id = next_job_id_.fetch_add(1);
|
|
905
|
-
|
|
936
|
+
JobContext job_context(0, true /*create_superversion*/);
|
|
937
|
+
std::vector<SequenceNumber> snapshots = input.snapshots;
|
|
938
|
+
job_context.InitSnapshotContext(nullptr, nullptr, kMaxSequenceNumber,
|
|
939
|
+
std::move(snapshots));
|
|
906
940
|
// use primary host's db_id for running the compaction, but db_session_id is
|
|
907
941
|
// using the local one, which is to make sure the unique id is unique from
|
|
908
942
|
// the remote compactors. Because the id is generated from db_id,
|
|
@@ -913,10 +947,12 @@ Status DBImplSecondary::CompactWithoutInstallation(
|
|
|
913
947
|
job_id, c.get(), immutable_db_options_, mutable_db_options_,
|
|
914
948
|
file_options_for_compaction_, versions_.get(), &shutting_down_,
|
|
915
949
|
&log_buffer, output_dir.get(), stats_, &mutex_, &error_handler_,
|
|
916
|
-
|
|
950
|
+
&job_context, table_cache_, &event_logger_, dbname_, io_tracer_,
|
|
917
951
|
options.canceled ? *options.canceled : kManualCompactionCanceledFalse_,
|
|
918
952
|
input.db_id, db_session_id_, secondary_path_, input, result);
|
|
919
953
|
|
|
954
|
+
compaction_job.Prepare();
|
|
955
|
+
|
|
920
956
|
mutex_.Unlock();
|
|
921
957
|
s = compaction_job.Run();
|
|
922
958
|
mutex_.Lock();
|
|
@@ -951,9 +987,10 @@ Status DB::OpenAndCompact(
|
|
|
951
987
|
}
|
|
952
988
|
|
|
953
989
|
// 2. Load the options
|
|
954
|
-
DBOptions
|
|
990
|
+
DBOptions base_db_options;
|
|
955
991
|
ConfigOptions config_options;
|
|
956
992
|
config_options.env = override_options.env;
|
|
993
|
+
config_options.ignore_unknown_options = true;
|
|
957
994
|
std::vector<ColumnFamilyDescriptor> all_column_families;
|
|
958
995
|
|
|
959
996
|
TEST_SYNC_POINT_CALLBACK(
|
|
@@ -963,13 +1000,22 @@ Status DB::OpenAndCompact(
|
|
|
963
1000
|
std::string options_file_name =
|
|
964
1001
|
OptionsFileName(name, compaction_input.options_file_number);
|
|
965
1002
|
|
|
966
|
-
s = LoadOptionsFromFile(config_options, options_file_name, &
|
|
1003
|
+
s = LoadOptionsFromFile(config_options, options_file_name, &base_db_options,
|
|
967
1004
|
&all_column_families);
|
|
968
1005
|
if (!s.ok()) {
|
|
969
1006
|
return s;
|
|
970
1007
|
}
|
|
971
1008
|
|
|
972
|
-
// 3.
|
|
1009
|
+
// 3. Options to Override
|
|
1010
|
+
// Override serializable configurations from override_options.options_map
|
|
1011
|
+
DBOptions db_options;
|
|
1012
|
+
s = GetDBOptionsFromMap(config_options, base_db_options,
|
|
1013
|
+
override_options.options_map, &db_options);
|
|
1014
|
+
if (!s.ok()) {
|
|
1015
|
+
return s;
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
// Override options that are directly set as shared ptrs in
|
|
973
1019
|
// CompactionServiceOptionsOverride
|
|
974
1020
|
db_options.env = override_options.env;
|
|
975
1021
|
db_options.file_checksum_gen_factory =
|
|
@@ -980,6 +1026,7 @@ Status DB::OpenAndCompact(
|
|
|
980
1026
|
// We will close the DB after the compaction anyway.
|
|
981
1027
|
// Open as many files as needed for the compaction.
|
|
982
1028
|
db_options.max_open_files = -1;
|
|
1029
|
+
db_options.info_log = override_options.info_log;
|
|
983
1030
|
|
|
984
1031
|
// 4. Filter CFs that are needed for OpenAndCompact()
|
|
985
1032
|
// We do not need to open all column families for the remote compaction.
|
|
@@ -989,6 +1036,18 @@ Status DB::OpenAndCompact(
|
|
|
989
1036
|
std::vector<ColumnFamilyDescriptor> column_families;
|
|
990
1037
|
for (auto& cf : all_column_families) {
|
|
991
1038
|
if (cf.name == compaction_input.cf_name) {
|
|
1039
|
+
ColumnFamilyOptions cf_options;
|
|
1040
|
+
// Override serializable configurations from override_options.options_map
|
|
1041
|
+
s = GetColumnFamilyOptionsFromMap(config_options, cf.options,
|
|
1042
|
+
override_options.options_map,
|
|
1043
|
+
&cf_options);
|
|
1044
|
+
if (!s.ok()) {
|
|
1045
|
+
return s;
|
|
1046
|
+
}
|
|
1047
|
+
cf.options = std::move(cf_options);
|
|
1048
|
+
|
|
1049
|
+
// Override options that are directly set as shared ptrs in
|
|
1050
|
+
// CompactionServiceOptionsOverride
|
|
992
1051
|
cf.options.comparator = override_options.comparator;
|
|
993
1052
|
cf.options.merge_operator = override_options.merge_operator;
|
|
994
1053
|
cf.options.compaction_filter = override_options.compaction_filter;
|
|
@@ -1000,6 +1059,7 @@ Status DB::OpenAndCompact(
|
|
|
1000
1059
|
override_options.sst_partitioner_factory;
|
|
1001
1060
|
cf.options.table_properties_collector_factories =
|
|
1002
1061
|
override_options.table_properties_collector_factories;
|
|
1062
|
+
|
|
1003
1063
|
column_families.emplace_back(cf);
|
|
1004
1064
|
} else if (cf.name == kDefaultColumnFamilyName) {
|
|
1005
1065
|
column_families.emplace_back(cf);
|
|
@@ -1016,6 +1076,9 @@ Status DB::OpenAndCompact(
|
|
|
1016
1076
|
}
|
|
1017
1077
|
assert(db);
|
|
1018
1078
|
|
|
1079
|
+
TEST_SYNC_POINT_CALLBACK(
|
|
1080
|
+
"DBImplSecondary::OpenAndCompact::AfterOpenAsSecondary:0", db);
|
|
1081
|
+
|
|
1019
1082
|
// 6. Find the handle of the Column Family that this will compact
|
|
1020
1083
|
ColumnFamilyHandle* cfh = nullptr;
|
|
1021
1084
|
for (auto* handle : handles) {
|
|
@@ -1057,5 +1120,4 @@ Status DB::OpenAndCompact(
|
|
|
1057
1120
|
output, override_options);
|
|
1058
1121
|
}
|
|
1059
1122
|
|
|
1060
|
-
|
|
1061
1123
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
#pragma once
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
#include <string>
|
|
10
9
|
#include <vector>
|
|
11
10
|
|
|
@@ -53,7 +52,8 @@ class LogReaderContainer {
|
|
|
53
52
|
Logger* info_log;
|
|
54
53
|
std::string fname;
|
|
55
54
|
Status* status; // nullptr if immutable_db_options_.paranoid_checks==false
|
|
56
|
-
void Corruption(size_t bytes, const Status& s
|
|
55
|
+
void Corruption(size_t bytes, const Status& s,
|
|
56
|
+
uint64_t /*log_number*/ = kMaxSequenceNumber) override {
|
|
57
57
|
ROCKS_LOG_WARN(info_log, "%s%s: dropping %d bytes; %s",
|
|
58
58
|
(this->status == nullptr ? "(ignoring error) " : ""),
|
|
59
59
|
fname.c_str(), static_cast<int>(bytes),
|