@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
|
@@ -67,7 +67,7 @@ class SubcompactionState;
|
|
|
67
67
|
// if needed.
|
|
68
68
|
//
|
|
69
69
|
// CompactionJob has 2 main stats:
|
|
70
|
-
// 1. CompactionJobStats
|
|
70
|
+
// 1. CompactionJobStats job_stats_
|
|
71
71
|
// CompactionJobStats is a public data structure which is part of Compaction
|
|
72
72
|
// event listener that rocksdb share the job stats with the user.
|
|
73
73
|
// Internally it's an aggregation of all the compaction_job_stats from each
|
|
@@ -81,7 +81,7 @@ class SubcompactionState;
|
|
|
81
81
|
// +------------------------+ |
|
|
82
82
|
// | CompactionJob | | +------------------------+
|
|
83
83
|
// | | | | SubcompactionState |
|
|
84
|
-
// |
|
|
84
|
+
// | job_stats +-----+ | |
|
|
85
85
|
// | | +--------->| compaction_job_stats |
|
|
86
86
|
// | | | | |
|
|
87
87
|
// +------------------------+ | +------------------------+
|
|
@@ -98,16 +98,13 @@ class SubcompactionState;
|
|
|
98
98
|
// +--------->+ |
|
|
99
99
|
// +------------------------+
|
|
100
100
|
//
|
|
101
|
-
// 2. CompactionStatsFull
|
|
101
|
+
// 2. CompactionStatsFull internal_stats_
|
|
102
102
|
// `CompactionStatsFull` is an internal stats about the compaction, which
|
|
103
103
|
// is eventually sent to `ColumnFamilyData::internal_stats_` and used for
|
|
104
104
|
// logging and public metrics.
|
|
105
105
|
// Internally, it's an aggregation of stats_ from each `SubcompactionState`.
|
|
106
|
-
// It has 2 parts,
|
|
107
|
-
//
|
|
108
|
-
// `SubcompactionState` maintains the CompactionOutputs for normal output and
|
|
109
|
-
// the penultimate level output if exists, the per_level stats is
|
|
110
|
-
// stored with the outputs.
|
|
106
|
+
// It has 2 parts, ordinary output level stats and the proximal level output
|
|
107
|
+
// stats.
|
|
111
108
|
// +---------------------------+
|
|
112
109
|
// | SubcompactionState |
|
|
113
110
|
// | |
|
|
@@ -119,15 +116,15 @@ class SubcompactionState;
|
|
|
119
116
|
// | | |
|
|
120
117
|
// | | +----------------------+ |
|
|
121
118
|
// +--------------------------------+ | | | CompactionOutputs | |
|
|
122
|
-
// | CompactionJob | | | | (
|
|
119
|
+
// | CompactionJob | | | | (proximal_level) | |
|
|
123
120
|
// | | +--------->| stats_ | |
|
|
124
|
-
// |
|
|
121
|
+
// | internal_stats_ | | | | +----------------------+ |
|
|
125
122
|
// | +-------------------------+ | | | | |
|
|
126
|
-
// | |
|
|
123
|
+
// | |output_level_stats |------|----+ +---------------------------+
|
|
127
124
|
// | +-------------------------+ | | |
|
|
128
125
|
// | | | |
|
|
129
126
|
// | +-------------------------+ | | | +---------------------------+
|
|
130
|
-
// | |
|
|
127
|
+
// | |proximal_level_stats |------+ | | SubcompactionState |
|
|
131
128
|
// | +-------------------------+ | | | | |
|
|
132
129
|
// | | | | | +----------------------+ |
|
|
133
130
|
// | | | | | | CompactionOutputs | |
|
|
@@ -137,7 +134,7 @@ class SubcompactionState;
|
|
|
137
134
|
// | | |
|
|
138
135
|
// | | +----------------------+ |
|
|
139
136
|
// | | | CompactionOutputs | |
|
|
140
|
-
// | | | (
|
|
137
|
+
// | | | (proximal_level) | |
|
|
141
138
|
// +--------->| stats_ | |
|
|
142
139
|
// | +----------------------+ |
|
|
143
140
|
// | |
|
|
@@ -145,27 +142,27 @@ class SubcompactionState;
|
|
|
145
142
|
|
|
146
143
|
class CompactionJob {
|
|
147
144
|
public:
|
|
148
|
-
CompactionJob(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
145
|
+
CompactionJob(int job_id, Compaction* compaction,
|
|
146
|
+
const ImmutableDBOptions& db_options,
|
|
147
|
+
const MutableDBOptions& mutable_db_options,
|
|
148
|
+
const FileOptions& file_options, VersionSet* versions,
|
|
149
|
+
const std::atomic<bool>* shutting_down, LogBuffer* log_buffer,
|
|
150
|
+
FSDirectory* db_directory, FSDirectory* output_directory,
|
|
151
|
+
FSDirectory* blob_output_directory, Statistics* stats,
|
|
152
|
+
InstrumentedMutex* db_mutex, ErrorHandler* db_error_handler,
|
|
153
|
+
JobContext* job_context, std::shared_ptr<Cache> table_cache,
|
|
154
|
+
EventLogger* event_logger, bool paranoid_file_checks,
|
|
155
|
+
bool measure_io_stats, const std::string& dbname,
|
|
156
|
+
CompactionJobStats* compaction_job_stats,
|
|
157
|
+
Env::Priority thread_pri,
|
|
158
|
+
const std::shared_ptr<IOTracer>& io_tracer,
|
|
159
|
+
const std::atomic<bool>& manual_compaction_canceled,
|
|
160
|
+
const std::string& db_id = "",
|
|
161
|
+
const std::string& db_session_id = "",
|
|
162
|
+
std::string full_history_ts_low = "", std::string trim_ts = "",
|
|
163
|
+
BlobFileCompletionCallback* blob_callback = nullptr,
|
|
164
|
+
int* bg_compaction_scheduled = nullptr,
|
|
165
|
+
int* bg_bottom_compaction_scheduled = nullptr);
|
|
169
166
|
|
|
170
167
|
virtual ~CompactionJob();
|
|
171
168
|
|
|
@@ -176,7 +173,13 @@ class CompactionJob {
|
|
|
176
173
|
|
|
177
174
|
// REQUIRED: mutex held
|
|
178
175
|
// Prepare for the compaction by setting up boundaries for each subcompaction
|
|
179
|
-
|
|
176
|
+
// and organizing seqno <-> time info. `known_single_subcompact` is non-null
|
|
177
|
+
// if we already have a known single subcompaction, with optional key bounds
|
|
178
|
+
// (currently for executing a remote compaction).
|
|
179
|
+
void Prepare(
|
|
180
|
+
std::optional<std::pair<std::optional<Slice>, std::optional<Slice>>>
|
|
181
|
+
known_single_subcompact);
|
|
182
|
+
|
|
180
183
|
// REQUIRED mutex not held
|
|
181
184
|
// Launch threads for each subcompaction and wait for them to finish. After
|
|
182
185
|
// that, verify table is usable and finally do bookkeeping to unify
|
|
@@ -187,30 +190,15 @@ class CompactionJob {
|
|
|
187
190
|
// Add compaction input/output to the current version
|
|
188
191
|
// Releases compaction file through Compaction::ReleaseCompactionFiles().
|
|
189
192
|
// Sets *compaction_released to true if compaction is released.
|
|
190
|
-
Status Install(
|
|
191
|
-
bool* compaction_released);
|
|
193
|
+
Status Install(bool* compaction_released);
|
|
192
194
|
|
|
193
195
|
// Return the IO status
|
|
194
196
|
IOStatus io_status() const { return io_status_; }
|
|
195
197
|
|
|
196
198
|
protected:
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
// - bytes_read_non_output_levels
|
|
201
|
-
// - bytes_read_output_level
|
|
202
|
-
// - num_input_records
|
|
203
|
-
// - bytes_read_blob
|
|
204
|
-
// - num_dropped_records
|
|
205
|
-
//
|
|
206
|
-
// @param num_input_range_del if non-null, will be set to the number of range
|
|
207
|
-
// deletion entries in this compaction input.
|
|
208
|
-
//
|
|
209
|
-
// Returns true iff compaction_stats_.stats.num_input_records and
|
|
210
|
-
// num_input_range_del are calculated successfully.
|
|
211
|
-
bool UpdateCompactionStats(uint64_t* num_input_range_del = nullptr);
|
|
212
|
-
virtual void UpdateCompactionJobStats(
|
|
213
|
-
const InternalStats::CompactionStats& stats) const;
|
|
199
|
+
void UpdateCompactionJobOutputStats(
|
|
200
|
+
const InternalStats::CompactionStatsFull& internal_stats) const;
|
|
201
|
+
|
|
214
202
|
void LogCompaction();
|
|
215
203
|
virtual void RecordCompactionIOStats();
|
|
216
204
|
void CleanupCompaction();
|
|
@@ -219,7 +207,7 @@ class CompactionJob {
|
|
|
219
207
|
void ProcessKeyValueCompaction(SubcompactionState* sub_compact);
|
|
220
208
|
|
|
221
209
|
CompactionState* compact_;
|
|
222
|
-
InternalStats::CompactionStatsFull
|
|
210
|
+
InternalStats::CompactionStatsFull internal_stats_;
|
|
223
211
|
const ImmutableDBOptions& db_options_;
|
|
224
212
|
const MutableDBOptions mutable_db_options_copy_;
|
|
225
213
|
LogBuffer* log_buffer_;
|
|
@@ -232,11 +220,37 @@ class CompactionJob {
|
|
|
232
220
|
|
|
233
221
|
IOStatus io_status_;
|
|
234
222
|
|
|
235
|
-
CompactionJobStats*
|
|
223
|
+
CompactionJobStats* job_stats_;
|
|
236
224
|
|
|
237
225
|
private:
|
|
238
226
|
friend class CompactionJobTestBase;
|
|
239
227
|
|
|
228
|
+
// Collect the following stats from Input Table Properties
|
|
229
|
+
// - num_input_files_in_non_output_levels
|
|
230
|
+
// - num_input_files_in_output_level
|
|
231
|
+
// - bytes_read_non_output_levels
|
|
232
|
+
// - bytes_read_output_level
|
|
233
|
+
// - num_input_records
|
|
234
|
+
// - bytes_read_blob
|
|
235
|
+
// - num_dropped_records
|
|
236
|
+
// and set them in internal_stats_.output_level_stats
|
|
237
|
+
//
|
|
238
|
+
// @param num_input_range_del if non-null, will be set to the number of range
|
|
239
|
+
// deletion entries in this compaction input.
|
|
240
|
+
//
|
|
241
|
+
// Returns true iff internal_stats_.output_level_stats.num_input_records and
|
|
242
|
+
// num_input_range_del are calculated successfully.
|
|
243
|
+
//
|
|
244
|
+
// This should be called only once for compactions (not per subcompaction)
|
|
245
|
+
bool BuildStatsFromInputTableProperties(
|
|
246
|
+
uint64_t* num_input_range_del = nullptr);
|
|
247
|
+
|
|
248
|
+
void UpdateCompactionJobInputStats(
|
|
249
|
+
const InternalStats::CompactionStatsFull& internal_stats,
|
|
250
|
+
uint64_t num_input_range_del) const;
|
|
251
|
+
|
|
252
|
+
Status VerifyInputRecordCount(uint64_t num_input_range_del) const;
|
|
253
|
+
|
|
240
254
|
// Generates a histogram representing potential divisions of key ranges from
|
|
241
255
|
// the input. It adds the starting and/or ending keys of certain input files
|
|
242
256
|
// to the working set and then finds the approximate size of data in between
|
|
@@ -276,8 +290,7 @@ class CompactionJob {
|
|
|
276
290
|
const Slice& next_table_min_key,
|
|
277
291
|
const Slice* comp_start_user_key,
|
|
278
292
|
const Slice* comp_end_user_key);
|
|
279
|
-
Status InstallCompactionResults(
|
|
280
|
-
bool* compaction_released);
|
|
293
|
+
Status InstallCompactionResults(bool* compaction_released);
|
|
281
294
|
Status OpenCompactionOutputFile(SubcompactionState* sub_compact,
|
|
282
295
|
CompactionOutputs& outputs);
|
|
283
296
|
|
|
@@ -308,21 +321,8 @@ class CompactionJob {
|
|
|
308
321
|
FSDirectory* blob_output_directory_;
|
|
309
322
|
InstrumentedMutex* db_mutex_;
|
|
310
323
|
ErrorHandler* db_error_handler_;
|
|
311
|
-
// If there were two snapshots with seq numbers s1 and
|
|
312
|
-
// s2 and s1 < s2, and if we find two instances of a key k1 then lies
|
|
313
|
-
// entirely within s1 and s2, then the earlier version of k1 can be safely
|
|
314
|
-
// deleted because that version is not visible in any snapshot.
|
|
315
|
-
std::vector<SequenceNumber> existing_snapshots_;
|
|
316
324
|
|
|
317
325
|
SequenceNumber earliest_snapshot_;
|
|
318
|
-
|
|
319
|
-
// This is the earliest snapshot that could be used for write-conflict
|
|
320
|
-
// checking by a transaction. For any user-key newer than this snapshot, we
|
|
321
|
-
// should make sure not to remove evidence that a write occurred.
|
|
322
|
-
SequenceNumber earliest_write_conflict_snapshot_;
|
|
323
|
-
|
|
324
|
-
const SnapshotChecker* const snapshot_checker_;
|
|
325
|
-
|
|
326
326
|
JobContext* job_context_;
|
|
327
327
|
|
|
328
328
|
std::shared_ptr<Cache> table_cache_;
|
|
@@ -353,15 +353,18 @@ class CompactionJob {
|
|
|
353
353
|
// it also collects the smallest_seqno -> oldest_ancester_time from the SST.
|
|
354
354
|
SeqnoToTimeMapping seqno_to_time_mapping_;
|
|
355
355
|
|
|
356
|
-
//
|
|
357
|
-
//
|
|
358
|
-
|
|
359
|
-
SequenceNumber preserve_time_min_seqno_ = kMaxSequenceNumber;
|
|
356
|
+
// Max seqno that can be zeroed out in last level, including for preserving
|
|
357
|
+
// write times.
|
|
358
|
+
SequenceNumber preserve_seqno_after_ = kMaxSequenceNumber;
|
|
360
359
|
|
|
361
360
|
// Minimal sequence number to preclude the data from the last level. If the
|
|
362
361
|
// key has bigger (newer) sequence number than this, it will be precluded from
|
|
363
|
-
// the last level (output to
|
|
364
|
-
SequenceNumber
|
|
362
|
+
// the last level (output to proximal level).
|
|
363
|
+
SequenceNumber proximal_after_seqno_ = kMaxSequenceNumber;
|
|
364
|
+
|
|
365
|
+
// Options File Number used for Remote Compaction
|
|
366
|
+
// Setting this requires DBMutex.
|
|
367
|
+
uint64_t options_file_number_ = 0;
|
|
365
368
|
|
|
366
369
|
// Get table file name in where it's outputting to, which should also be in
|
|
367
370
|
// `output_directory_`.
|
|
@@ -411,8 +414,9 @@ struct CompactionServiceInput {
|
|
|
411
414
|
// CompactionServiceOutputFile is the metadata for the output SST file
|
|
412
415
|
struct CompactionServiceOutputFile {
|
|
413
416
|
std::string file_name;
|
|
414
|
-
|
|
415
|
-
SequenceNumber
|
|
417
|
+
uint64_t file_size{};
|
|
418
|
+
SequenceNumber smallest_seqno{};
|
|
419
|
+
SequenceNumber largest_seqno{};
|
|
416
420
|
std::string smallest_internal_key;
|
|
417
421
|
std::string largest_internal_key;
|
|
418
422
|
uint64_t oldest_ancester_time = kUnknownOldestAncesterTime;
|
|
@@ -420,21 +424,26 @@ struct CompactionServiceOutputFile {
|
|
|
420
424
|
uint64_t epoch_number = kUnknownEpochNumber;
|
|
421
425
|
std::string file_checksum = kUnknownFileChecksum;
|
|
422
426
|
std::string file_checksum_func_name = kUnknownFileChecksumFuncName;
|
|
423
|
-
uint64_t paranoid_hash;
|
|
427
|
+
uint64_t paranoid_hash{};
|
|
424
428
|
bool marked_for_compaction;
|
|
425
429
|
UniqueId64x2 unique_id{};
|
|
426
430
|
TableProperties table_properties;
|
|
431
|
+
bool is_proximal_level_output;
|
|
432
|
+
Temperature file_temperature = Temperature::kUnknown;
|
|
427
433
|
|
|
428
434
|
CompactionServiceOutputFile() = default;
|
|
429
435
|
CompactionServiceOutputFile(
|
|
430
|
-
const std::string& name,
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
uint64_t
|
|
436
|
+
const std::string& name, uint64_t size, SequenceNumber smallest,
|
|
437
|
+
SequenceNumber largest, std::string _smallest_internal_key,
|
|
438
|
+
std::string _largest_internal_key, uint64_t _oldest_ancester_time,
|
|
439
|
+
uint64_t _file_creation_time, uint64_t _epoch_number,
|
|
440
|
+
const std::string& _file_checksum,
|
|
434
441
|
const std::string& _file_checksum_func_name, uint64_t _paranoid_hash,
|
|
435
442
|
bool _marked_for_compaction, UniqueId64x2 _unique_id,
|
|
436
|
-
const TableProperties& _table_properties
|
|
443
|
+
const TableProperties& _table_properties, bool _is_proximal_level_output,
|
|
444
|
+
Temperature _file_temperature)
|
|
437
445
|
: file_name(name),
|
|
446
|
+
file_size(size),
|
|
438
447
|
smallest_seqno(smallest),
|
|
439
448
|
largest_seqno(largest),
|
|
440
449
|
smallest_internal_key(std::move(_smallest_internal_key)),
|
|
@@ -447,7 +456,9 @@ struct CompactionServiceOutputFile {
|
|
|
447
456
|
paranoid_hash(_paranoid_hash),
|
|
448
457
|
marked_for_compaction(_marked_for_compaction),
|
|
449
458
|
unique_id(std::move(_unique_id)),
|
|
450
|
-
table_properties(_table_properties)
|
|
459
|
+
table_properties(_table_properties),
|
|
460
|
+
is_proximal_level_output(_is_proximal_level_output),
|
|
461
|
+
file_temperature(_file_temperature) {}
|
|
451
462
|
};
|
|
452
463
|
|
|
453
464
|
// CompactionServiceResult contains the compaction result from a different db
|
|
@@ -463,8 +474,21 @@ struct CompactionServiceResult {
|
|
|
463
474
|
|
|
464
475
|
uint64_t bytes_read = 0;
|
|
465
476
|
uint64_t bytes_written = 0;
|
|
477
|
+
|
|
478
|
+
// Job-level Compaction Stats.
|
|
479
|
+
//
|
|
480
|
+
// NOTE: Job level stats cannot be rebuilt from scratch by simply aggregating
|
|
481
|
+
// per-level stats due to some fields populated directly during compaction
|
|
482
|
+
// (e.g. RecordDroppedKeys()). This is why we need both job-level stats and
|
|
483
|
+
// per-level in the serialized result. If rebuilding job-level stats from
|
|
484
|
+
// per-level stats become possible in the future, consider deprecating this
|
|
485
|
+
// field.
|
|
466
486
|
CompactionJobStats stats;
|
|
467
487
|
|
|
488
|
+
// Per-level Compaction Stats for both output_level_stats and
|
|
489
|
+
// proximal_level_stats
|
|
490
|
+
InternalStats::CompactionStatsFull internal_stats;
|
|
491
|
+
|
|
468
492
|
// serialization interface to read and write the object
|
|
469
493
|
static Status Read(const std::string& data_str, CompactionServiceResult* obj);
|
|
470
494
|
Status Write(std::string* output);
|
|
@@ -487,15 +511,19 @@ class CompactionServiceCompactionJob : private CompactionJob {
|
|
|
487
511
|
const std::atomic<bool>* shutting_down, LogBuffer* log_buffer,
|
|
488
512
|
FSDirectory* output_directory, Statistics* stats,
|
|
489
513
|
InstrumentedMutex* db_mutex, ErrorHandler* db_error_handler,
|
|
490
|
-
std::
|
|
491
|
-
|
|
492
|
-
const std::
|
|
514
|
+
JobContext* job_context, std::shared_ptr<Cache> table_cache,
|
|
515
|
+
EventLogger* event_logger, const std::string& dbname,
|
|
516
|
+
const std::shared_ptr<IOTracer>& io_tracer,
|
|
493
517
|
const std::atomic<bool>& manual_compaction_canceled,
|
|
494
518
|
const std::string& db_id, const std::string& db_session_id,
|
|
495
519
|
std::string output_path,
|
|
496
520
|
const CompactionServiceInput& compaction_service_input,
|
|
497
521
|
CompactionServiceResult* compaction_service_result);
|
|
498
522
|
|
|
523
|
+
// REQUIRED: mutex held
|
|
524
|
+
// Like CompactionJob::Prepare()
|
|
525
|
+
void Prepare();
|
|
526
|
+
|
|
499
527
|
// Run the compaction in current thread and return the result
|
|
500
528
|
Status Run();
|
|
501
529
|
|
|
@@ -506,9 +534,6 @@ class CompactionServiceCompactionJob : private CompactionJob {
|
|
|
506
534
|
protected:
|
|
507
535
|
void RecordCompactionIOStats() override;
|
|
508
536
|
|
|
509
|
-
void UpdateCompactionJobStats(
|
|
510
|
-
const InternalStats::CompactionStats& stats) const override;
|
|
511
|
-
|
|
512
537
|
private:
|
|
513
538
|
// Get table file name in output_path
|
|
514
539
|
std::string GetTableFileName(uint64_t file_number) override;
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
4
|
// (found in the LICENSE.Apache file in the root directory).
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
#include "db/compaction/compaction_job.h"
|
|
8
7
|
|
|
9
8
|
#include <algorithm>
|
|
@@ -44,7 +43,6 @@ void VerifyInitializationOfCompactionJobStats(
|
|
|
44
43
|
ASSERT_EQ(compaction_job_stats.elapsed_micros, 0U);
|
|
45
44
|
|
|
46
45
|
ASSERT_EQ(compaction_job_stats.num_input_records, 0U);
|
|
47
|
-
ASSERT_EQ(compaction_job_stats.num_input_files, 0U);
|
|
48
46
|
ASSERT_EQ(compaction_job_stats.num_input_files_at_output_level, 0U);
|
|
49
47
|
|
|
50
48
|
ASSERT_EQ(compaction_job_stats.num_output_records, 0U);
|
|
@@ -53,7 +51,6 @@ void VerifyInitializationOfCompactionJobStats(
|
|
|
53
51
|
ASSERT_TRUE(compaction_job_stats.is_manual_compaction);
|
|
54
52
|
ASSERT_FALSE(compaction_job_stats.is_remote_compaction);
|
|
55
53
|
|
|
56
|
-
ASSERT_EQ(compaction_job_stats.total_input_bytes, 0U);
|
|
57
54
|
ASSERT_EQ(compaction_job_stats.total_output_bytes, 0U);
|
|
58
55
|
|
|
59
56
|
ASSERT_EQ(compaction_job_stats.total_input_raw_key_bytes, 0U);
|
|
@@ -302,7 +299,7 @@ class CompactionJobTestBase : public testing::Test {
|
|
|
302
299
|
std::unique_ptr<TableBuilder> table_builder(
|
|
303
300
|
cf_options_.table_factory->NewTableBuilder(
|
|
304
301
|
TableBuilderOptions(
|
|
305
|
-
|
|
302
|
+
cfd_->ioptions(), mutable_cf_options_, read_options,
|
|
306
303
|
write_options, cfd_->internal_comparator(),
|
|
307
304
|
cfd_->internal_tbl_prop_coll_factories(),
|
|
308
305
|
CompressionType::kNoCompression, CompressionOptions(),
|
|
@@ -398,8 +395,8 @@ class CompactionJobTestBase : public testing::Test {
|
|
|
398
395
|
|
|
399
396
|
mutex_.Lock();
|
|
400
397
|
EXPECT_OK(versions_->LogAndApply(
|
|
401
|
-
versions_->GetColumnFamilySet()->GetDefault(),
|
|
402
|
-
|
|
398
|
+
versions_->GetColumnFamilySet()->GetDefault(), read_options_,
|
|
399
|
+
write_options_, &edit, &mutex_, nullptr));
|
|
403
400
|
mutex_.Unlock();
|
|
404
401
|
}
|
|
405
402
|
|
|
@@ -461,9 +458,10 @@ class CompactionJobTestBase : public testing::Test {
|
|
|
461
458
|
ReadOptions read_opts;
|
|
462
459
|
Status s = cf_options_.table_factory->NewTableReader(
|
|
463
460
|
read_opts,
|
|
464
|
-
TableReaderOptions(
|
|
461
|
+
TableReaderOptions(cfd->ioptions(), /*prefix_extractor=*/nullptr,
|
|
462
|
+
/*compression_manager=*/nullptr, FileOptions(),
|
|
465
463
|
cfd_->internal_comparator(),
|
|
466
|
-
|
|
464
|
+
/*block_protection_bytes_per_key=*/0),
|
|
467
465
|
std::move(freader), file_size, &table_reader, false);
|
|
468
466
|
ASSERT_OK(s);
|
|
469
467
|
assert(table_reader);
|
|
@@ -596,11 +594,11 @@ class CompactionJobTestBase : public testing::Test {
|
|
|
596
594
|
const std::vector<std::vector<FileMetaData*>>& input_files,
|
|
597
595
|
const std::vector<int> input_levels,
|
|
598
596
|
std::function<void(Compaction& comp)>&& verify_func,
|
|
599
|
-
|
|
597
|
+
std::vector<SequenceNumber>&& snapshots = {}) {
|
|
600
598
|
const int kLastLevel = cf_options_.num_levels - 1;
|
|
601
599
|
verify_per_key_placement_ = std::move(verify_func);
|
|
602
600
|
mock::KVVector empty_map;
|
|
603
|
-
RunCompaction(input_files, input_levels, {empty_map}, snapshots,
|
|
601
|
+
RunCompaction(input_files, input_levels, {empty_map}, std::move(snapshots),
|
|
604
602
|
kMaxSequenceNumber, kLastLevel, false);
|
|
605
603
|
}
|
|
606
604
|
|
|
@@ -609,7 +607,7 @@ class CompactionJobTestBase : public testing::Test {
|
|
|
609
607
|
const std::vector<std::vector<FileMetaData*>>& input_files,
|
|
610
608
|
const std::vector<int>& input_levels,
|
|
611
609
|
const std::vector<mock::KVVector>& expected_results,
|
|
612
|
-
|
|
610
|
+
std::vector<SequenceNumber>&& snapshots = {},
|
|
613
611
|
SequenceNumber earliest_write_conflict_snapshot = kMaxSequenceNumber,
|
|
614
612
|
int output_level = 1, bool verify = true,
|
|
615
613
|
std::vector<uint64_t> expected_oldest_blob_file_numbers = {},
|
|
@@ -646,12 +644,12 @@ class CompactionJobTestBase : public testing::Test {
|
|
|
646
644
|
}
|
|
647
645
|
|
|
648
646
|
Compaction compaction(
|
|
649
|
-
cfd->current()->storage_info(),
|
|
650
|
-
|
|
647
|
+
cfd->current()->storage_info(), cfd->ioptions(),
|
|
648
|
+
cfd->GetLatestMutableCFOptions(), mutable_db_options_,
|
|
651
649
|
compaction_input_files, output_level,
|
|
652
650
|
mutable_cf_options_.target_file_size_base,
|
|
653
651
|
mutable_cf_options_.max_compaction_bytes, 0, kNoCompression,
|
|
654
|
-
cfd->GetLatestMutableCFOptions()
|
|
652
|
+
cfd->GetLatestMutableCFOptions().compression_opts,
|
|
655
653
|
Temperature::kUnknown, max_subcompactions, grandparents,
|
|
656
654
|
/*earliest_snapshot*/ std::nullopt, /*snapshot_checker*/ nullptr, true);
|
|
657
655
|
compaction.FinalizeInputInfo(cfd->current());
|
|
@@ -666,27 +664,28 @@ class CompactionJobTestBase : public testing::Test {
|
|
|
666
664
|
ucmp_->timestamp_size() == full_history_ts_low_.size());
|
|
667
665
|
const std::atomic<bool> kManualCompactionCanceledFalse{false};
|
|
668
666
|
JobContext job_context(1, false /* create_superversion */);
|
|
667
|
+
job_context.InitSnapshotContext(snapshot_checker, nullptr,
|
|
668
|
+
earliest_write_conflict_snapshot,
|
|
669
|
+
std::move(snapshots));
|
|
669
670
|
CompactionJob compaction_job(
|
|
670
671
|
0, &compaction, db_options_, mutable_db_options_, env_options_,
|
|
671
672
|
versions_.get(), &shutting_down_, &log_buffer, nullptr, nullptr,
|
|
672
|
-
nullptr, nullptr, &mutex_, &error_handler_,
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
&compaction_job_stats_, Env::Priority::USER, nullptr /* IOTracer */,
|
|
673
|
+
nullptr, nullptr, &mutex_, &error_handler_, &job_context, table_cache_,
|
|
674
|
+
&event_logger, false, false, dbname_, &compaction_job_stats_,
|
|
675
|
+
Env::Priority::USER, nullptr /* IOTracer */,
|
|
676
676
|
/*manual_compaction_canceled=*/kManualCompactionCanceledFalse,
|
|
677
677
|
env_->GenerateUniqueId(), DBImpl::GenerateDbSessionId(nullptr),
|
|
678
678
|
full_history_ts_low_);
|
|
679
679
|
VerifyInitializationOfCompactionJobStats(compaction_job_stats_);
|
|
680
680
|
|
|
681
|
-
compaction_job.Prepare();
|
|
681
|
+
compaction_job.Prepare(std::nullopt /*subcompact to be computed*/);
|
|
682
682
|
mutex_.Unlock();
|
|
683
683
|
Status s = compaction_job.Run();
|
|
684
684
|
ASSERT_OK(s);
|
|
685
685
|
ASSERT_OK(compaction_job.io_status());
|
|
686
686
|
mutex_.Lock();
|
|
687
687
|
bool compaction_released = false;
|
|
688
|
-
ASSERT_OK(compaction_job.Install(
|
|
689
|
-
&compaction_released));
|
|
688
|
+
ASSERT_OK(compaction_job.Install(&compaction_released));
|
|
690
689
|
ASSERT_OK(compaction_job.io_status());
|
|
691
690
|
mutex_.Unlock();
|
|
692
691
|
log_buffer.FlushBufferToLog();
|
|
@@ -1476,7 +1475,7 @@ TEST_F(CompactionJobTest, OldestBlobFileNumber) {
|
|
|
1476
1475
|
/* expected_oldest_blob_file_numbers */ {19});
|
|
1477
1476
|
}
|
|
1478
1477
|
|
|
1479
|
-
TEST_F(CompactionJobTest,
|
|
1478
|
+
TEST_F(CompactionJobTest, VerifyProximalLevelOutput) {
|
|
1480
1479
|
cf_options_.last_level_temperature = Temperature::kCold;
|
|
1481
1480
|
SyncPoint::GetInstance()->SetCallBack(
|
|
1482
1481
|
"Compaction::SupportsPerKeyPlacement:Enabled", [&](void* arg) {
|
|
@@ -1489,8 +1488,7 @@ TEST_F(CompactionJobTest, VerifyPenultimateLevelOutput) {
|
|
|
1489
1488
|
SyncPoint::GetInstance()->SetCallBack(
|
|
1490
1489
|
"CompactionIterator::PrepareOutput.context", [&](void* arg) {
|
|
1491
1490
|
auto context = static_cast<PerKeyPlacementContext*>(arg);
|
|
1492
|
-
context->
|
|
1493
|
-
context->seq_num > latest_cold_seq;
|
|
1491
|
+
context->output_to_proximal_level = context->seq_num > latest_cold_seq;
|
|
1494
1492
|
});
|
|
1495
1493
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
1496
1494
|
|
|
@@ -1536,14 +1534,11 @@ TEST_F(CompactionJobTest, VerifyPenultimateLevelOutput) {
|
|
|
1536
1534
|
/*verify_func=*/[&](Compaction& comp) {
|
|
1537
1535
|
for (char c = 'a'; c <= 'z'; c++) {
|
|
1538
1536
|
if (c == 'a') {
|
|
1539
|
-
|
|
1540
|
-
|
|
1537
|
+
comp.TEST_AssertWithinProximalLevelOutputRange(
|
|
1538
|
+
"a", true /*expect_failure*/);
|
|
1541
1539
|
} else {
|
|
1542
1540
|
std::string c_str{c};
|
|
1543
|
-
|
|
1544
|
-
// 'z' is the last key, so set seqno properly.
|
|
1545
|
-
ParsedInternalKey pik(c_str, c == 'z' ? 12U : 0U, kTypeValue);
|
|
1546
|
-
ASSERT_TRUE(comp.WithinPenultimateLevelOutputRange(pik));
|
|
1541
|
+
comp.TEST_AssertWithinProximalLevelOutputRange(c_str);
|
|
1547
1542
|
}
|
|
1548
1543
|
}
|
|
1549
1544
|
});
|
|
@@ -1675,6 +1670,7 @@ TEST_F(CompactionJobTest, ResultSerialization) {
|
|
|
1675
1670
|
UniqueId64x2 id{rnd64.Uniform(UINT64_MAX), rnd64.Uniform(UINT64_MAX)};
|
|
1676
1671
|
result.output_files.emplace_back(
|
|
1677
1672
|
rnd.RandomString(rnd.Uniform(kStrMaxLen)) /* file_name */,
|
|
1673
|
+
rnd64.Uniform(UINT64_MAX) /* file_size */,
|
|
1678
1674
|
rnd64.Uniform(UINT64_MAX) /* smallest_seqno */,
|
|
1679
1675
|
rnd64.Uniform(UINT64_MAX) /* largest_seqno */,
|
|
1680
1676
|
rnd.RandomBinaryString(
|
|
@@ -1687,7 +1683,8 @@ TEST_F(CompactionJobTest, ResultSerialization) {
|
|
|
1687
1683
|
file_checksum /* file_checksum */,
|
|
1688
1684
|
file_checksum_func_name /* file_checksum_func_name */,
|
|
1689
1685
|
rnd64.Uniform(UINT64_MAX) /* paranoid_hash */,
|
|
1690
|
-
rnd.OneIn(2) /* marked_for_compaction */, id /* unique_id */, tp
|
|
1686
|
+
rnd.OneIn(2) /* marked_for_compaction */, id /* unique_id */, tp,
|
|
1687
|
+
false /* is_proximal_level_output */, Temperature::kHot);
|
|
1691
1688
|
}
|
|
1692
1689
|
result.output_level = rnd.Uniform(10);
|
|
1693
1690
|
result.output_path = rnd.RandomString(rnd.Uniform(kStrMaxLen));
|
|
@@ -1741,6 +1738,8 @@ TEST_F(CompactionJobTest, ResultSerialization) {
|
|
|
1741
1738
|
ASSERT_EQ(deserialized_tmp.output_files[0].file_checksum, file_checksum);
|
|
1742
1739
|
ASSERT_EQ(deserialized_tmp.output_files[0].file_checksum_func_name,
|
|
1743
1740
|
file_checksum_func_name);
|
|
1741
|
+
ASSERT_EQ(deserialized_tmp.output_files[0].file_temperature,
|
|
1742
|
+
Temperature::kHot);
|
|
1744
1743
|
}
|
|
1745
1744
|
|
|
1746
1745
|
// Test unknown field
|
|
@@ -1900,8 +1899,8 @@ TEST_F(CompactionJobTest, CutToSkipGrandparentFile) {
|
|
|
1900
1899
|
const std::vector<int> input_levels = {0, 1};
|
|
1901
1900
|
auto lvl0_files = cfd_->current()->storage_info()->LevelFiles(0);
|
|
1902
1901
|
auto lvl1_files = cfd_->current()->storage_info()->LevelFiles(1);
|
|
1903
|
-
|
|
1904
|
-
|
|
1902
|
+
RunCompaction({lvl0_files, lvl1_files}, input_levels,
|
|
1903
|
+
{expected_file1, expected_file2});
|
|
1905
1904
|
}
|
|
1906
1905
|
|
|
1907
1906
|
TEST_F(CompactionJobTest, CutToAlignGrandparentBoundary) {
|
|
@@ -1975,8 +1974,8 @@ TEST_F(CompactionJobTest, CutToAlignGrandparentBoundary) {
|
|
|
1975
1974
|
const std::vector<int> input_levels = {0, 1};
|
|
1976
1975
|
auto lvl0_files = cfd_->current()->storage_info()->LevelFiles(0);
|
|
1977
1976
|
auto lvl1_files = cfd_->current()->storage_info()->LevelFiles(1);
|
|
1978
|
-
|
|
1979
|
-
|
|
1977
|
+
RunCompaction({lvl0_files, lvl1_files}, input_levels,
|
|
1978
|
+
{expected_file1, expected_file2});
|
|
1980
1979
|
}
|
|
1981
1980
|
|
|
1982
1981
|
TEST_F(CompactionJobTest, CutToAlignGrandparentBoundarySameKey) {
|
|
@@ -2037,8 +2036,8 @@ TEST_F(CompactionJobTest, CutToAlignGrandparentBoundarySameKey) {
|
|
|
2037
2036
|
for (int i = 80; i <= 100; i++) {
|
|
2038
2037
|
snapshots.emplace_back(i);
|
|
2039
2038
|
}
|
|
2040
|
-
|
|
2041
|
-
|
|
2039
|
+
RunCompaction({lvl0_files, lvl1_files}, input_levels,
|
|
2040
|
+
{expected_file1, expected_file2}, std::move(snapshots));
|
|
2042
2041
|
}
|
|
2043
2042
|
|
|
2044
2043
|
TEST_F(CompactionJobTest, CutForMaxCompactionBytesSameKey) {
|
|
@@ -2097,7 +2096,8 @@ TEST_F(CompactionJobTest, CutForMaxCompactionBytesSameKey) {
|
|
|
2097
2096
|
snapshots.emplace_back(i);
|
|
2098
2097
|
}
|
|
2099
2098
|
RunCompaction({lvl0_files, lvl1_files}, input_levels,
|
|
2100
|
-
{expected_file1, expected_file2, expected_file3},
|
|
2099
|
+
{expected_file1, expected_file2, expected_file3},
|
|
2100
|
+
std::move(snapshots));
|
|
2101
2101
|
}
|
|
2102
2102
|
|
|
2103
2103
|
class CompactionJobTimestampTest : public CompactionJobTestBase {
|