@nxtedition/rocksdb 13.5.7 → 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 +248 -70
- package/binding.gyp +2 -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 +9 -4
- package/index.js +50 -9
- package/package.json +8 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
|
@@ -24,7 +24,14 @@ CompressedSecondaryCache::CompressedSecondaryCache(
|
|
|
24
24
|
cache_res_mgr_(std::make_shared<ConcurrentCacheReservationManager>(
|
|
25
25
|
std::make_shared<CacheReservationManagerImpl<CacheEntryRole::kMisc>>(
|
|
26
26
|
cache_))),
|
|
27
|
-
disable_cache_(opts.capacity == 0) {
|
|
27
|
+
disable_cache_(opts.capacity == 0) {
|
|
28
|
+
auto mgr =
|
|
29
|
+
GetBuiltinCompressionManager(cache_options_.compress_format_version);
|
|
30
|
+
compressor_ = mgr->GetCompressor(cache_options_.compression_opts,
|
|
31
|
+
cache_options_.compression_type);
|
|
32
|
+
decompressor_ =
|
|
33
|
+
mgr->GetDecompressorOptimizeFor(cache_options_.compression_type);
|
|
34
|
+
}
|
|
28
35
|
|
|
29
36
|
CompressedSecondaryCache::~CompressedSecondaryCache() = default;
|
|
30
37
|
|
|
@@ -73,15 +80,16 @@ std::unique_ptr<SecondaryCacheResultHandle> CompressedSecondaryCache::Lookup(
|
|
|
73
80
|
ptr = reinterpret_cast<CacheAllocationPtr*>(handle_value);
|
|
74
81
|
handle_value_charge = cache_->GetCharge(lru_handle);
|
|
75
82
|
data_ptr = ptr->get();
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
const char* limit = ptr->get() + handle_value_charge;
|
|
84
|
+
data_ptr =
|
|
85
|
+
GetVarint32Ptr(data_ptr, limit, static_cast<uint32_t*>(&type_32));
|
|
78
86
|
type = static_cast<CompressionType>(type_32);
|
|
79
|
-
data_ptr =
|
|
80
|
-
|
|
87
|
+
data_ptr =
|
|
88
|
+
GetVarint32Ptr(data_ptr, limit, static_cast<uint32_t*>(&source_32));
|
|
81
89
|
source = static_cast<CacheTier>(source_32);
|
|
82
90
|
uint64_t data_size = 0;
|
|
83
|
-
data_ptr =
|
|
84
|
-
|
|
91
|
+
data_ptr =
|
|
92
|
+
GetVarint64Ptr(data_ptr, limit, static_cast<uint64_t*>(&data_size));
|
|
85
93
|
assert(handle_value_charge > data_size);
|
|
86
94
|
handle_value_charge = data_size;
|
|
87
95
|
}
|
|
@@ -97,25 +105,24 @@ std::unique_ptr<SecondaryCacheResultHandle> CompressedSecondaryCache::Lookup(
|
|
|
97
105
|
kNoCompression, CacheTier::kVolatileTier,
|
|
98
106
|
create_context, allocator, &value, &charge);
|
|
99
107
|
} else {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
108
|
+
// TODO: can we work some magic with create_cb, which might be based on
|
|
109
|
+
// custom compression, to decompress without an extra copy in create_cb?
|
|
110
|
+
Decompressor::Args args;
|
|
111
|
+
args.compressed_data = Slice(data_ptr, handle_value_charge);
|
|
112
|
+
args.compression_type = cache_options_.compression_type;
|
|
113
|
+
s = decompressor_->ExtractUncompressedSize(args);
|
|
114
|
+
assert(s.ok());
|
|
115
|
+
if (s.ok()) {
|
|
116
|
+
auto uncompressed = std::make_unique<char[]>(args.uncompressed_size);
|
|
117
|
+
s = decompressor_->DecompressBlock(args, uncompressed.get());
|
|
118
|
+
assert(s.ok());
|
|
119
|
+
if (s.ok()) {
|
|
120
|
+
s = helper->create_cb(
|
|
121
|
+
Slice(uncompressed.get(), args.uncompressed_size), kNoCompression,
|
|
122
|
+
CacheTier::kVolatileTier, create_context, allocator, &value,
|
|
123
|
+
&charge);
|
|
124
|
+
}
|
|
115
125
|
}
|
|
116
|
-
s = helper->create_cb(Slice(uncompressed.get(), uncompressed_size),
|
|
117
|
-
kNoCompression, CacheTier::kVolatileTier,
|
|
118
|
-
create_context, allocator, &value, &charge);
|
|
119
126
|
}
|
|
120
127
|
} else {
|
|
121
128
|
// The item was not compressed by us. Let the helper create_cb
|
|
@@ -198,20 +205,17 @@ Status CompressedSecondaryCache::InsertInternal(
|
|
|
198
205
|
type == kNoCompression &&
|
|
199
206
|
!cache_options_.do_not_compress_roles.Contains(helper->role)) {
|
|
200
207
|
PERF_COUNTER_ADD(compressed_sec_cache_uncompressed_bytes, data_size);
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
if (!success) {
|
|
214
|
-
return Status::Corruption("Error compressing value.");
|
|
208
|
+
|
|
209
|
+
CompressionType to_type = kNoCompression;
|
|
210
|
+
s = compressor_->CompressBlock(val, &compressed_val, &to_type,
|
|
211
|
+
nullptr /*working_area*/);
|
|
212
|
+
if (!s.ok()) {
|
|
213
|
+
return s;
|
|
214
|
+
}
|
|
215
|
+
// TODO: allow values not compressed when there's no size savings?
|
|
216
|
+
assert(to_type == cache_options_.compression_type);
|
|
217
|
+
if (to_type != cache_options_.compression_type) {
|
|
218
|
+
return Status::Corruption("Failed to compress value.");
|
|
215
219
|
}
|
|
216
220
|
|
|
217
221
|
val = Slice(compressed_val);
|
|
@@ -145,6 +145,8 @@ class CompressedSecondaryCache : public SecondaryCache {
|
|
|
145
145
|
const Cache::CacheItemHelper* GetHelper(bool enable_custom_split_merge) const;
|
|
146
146
|
std::shared_ptr<Cache> cache_;
|
|
147
147
|
CompressedSecondaryCacheOptions cache_options_;
|
|
148
|
+
std::unique_ptr<Compressor> compressor_;
|
|
149
|
+
std::shared_ptr<Decompressor> decompressor_;
|
|
148
150
|
mutable port::Mutex capacity_mutex_;
|
|
149
151
|
std::shared_ptr<ConcurrentCacheReservationManager> cache_res_mgr_;
|
|
150
152
|
bool disable_cache_;
|
|
@@ -93,9 +93,8 @@ void LRUHandleTable::Resize() {
|
|
|
93
93
|
|
|
94
94
|
uint32_t old_length = uint32_t{1} << length_bits_;
|
|
95
95
|
int new_length_bits = length_bits_ + 1;
|
|
96
|
-
std::unique_ptr<LRUHandle*
|
|
97
|
-
|
|
98
|
-
};
|
|
96
|
+
std::unique_ptr<LRUHandle*[]> new_list{
|
|
97
|
+
new LRUHandle* [size_t{1} << new_length_bits] {}};
|
|
99
98
|
[[maybe_unused]] uint32_t count = 0;
|
|
100
99
|
for (uint32_t i = 0; i < old_length; i++) {
|
|
101
100
|
LRUHandle* h = list_[i];
|
|
@@ -546,7 +546,7 @@ TYPED_TEST(ClockCacheTest, Limits) {
|
|
|
546
546
|
// verify usage tracking on detached entries.)
|
|
547
547
|
{
|
|
548
548
|
size_t n = kCapacity * 5 + 1;
|
|
549
|
-
std::unique_ptr<HandleImpl*
|
|
549
|
+
std::unique_ptr<HandleImpl*[]> ha{new HandleImpl* [n] {}};
|
|
550
550
|
Status s;
|
|
551
551
|
for (size_t i = 0; i < n && s.ok(); ++i) {
|
|
552
552
|
hkey[1] = i;
|
|
@@ -713,7 +713,7 @@ TYPED_TEST(ClockCacheTest, ClockEvictionEffortCapTest) {
|
|
|
713
713
|
// evictable entries are present beyond the cache capacity, despite
|
|
714
714
|
// being evictable.
|
|
715
715
|
constexpr size_t kCount = kCapacity - 1;
|
|
716
|
-
std::unique_ptr<HandleImpl*
|
|
716
|
+
std::unique_ptr<HandleImpl*[]> ha{new HandleImpl* [kCount] {}};
|
|
717
717
|
for (size_t i = 0; i < 2 * kCount; ++i) {
|
|
718
718
|
UniqueId64x2 hkey = this->CheapHash(i);
|
|
719
719
|
ASSERT_OK(shard.Insert(
|
|
@@ -121,7 +121,17 @@ CacheWithSecondaryAdapter::~CacheWithSecondaryAdapter() {
|
|
|
121
121
|
assert(s.ok());
|
|
122
122
|
assert(placeholder_usage_ == 0);
|
|
123
123
|
assert(reserved_usage_ == 0);
|
|
124
|
-
|
|
124
|
+
bool pri_cache_res_mismatch =
|
|
125
|
+
pri_cache_res_->GetTotalMemoryUsed() != sec_capacity;
|
|
126
|
+
if (pri_cache_res_mismatch) {
|
|
127
|
+
fprintf(stderr,
|
|
128
|
+
"~CacheWithSecondaryAdapter: Primary cache reservation: "
|
|
129
|
+
"%zu, Secondary cache capacity: %zu, "
|
|
130
|
+
"Secondary cache reserved: %zu\n",
|
|
131
|
+
pri_cache_res_->GetTotalMemoryUsed(), sec_capacity,
|
|
132
|
+
sec_reserved_);
|
|
133
|
+
assert(pri_cache_res_mismatch);
|
|
134
|
+
}
|
|
125
135
|
}
|
|
126
136
|
#endif // NDEBUG
|
|
127
137
|
}
|
|
@@ -951,12 +951,20 @@ TEST_F(DBTieredSecondaryCacheTest, FSBufferTest) {
|
|
|
951
951
|
IODebugContext* dbg) override {
|
|
952
952
|
for (size_t i = 0; i < num_reqs; ++i) {
|
|
953
953
|
FSReadRequest& req = reqs[i];
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
954
|
+
// See https://github.com/facebook/rocksdb/pull/13195 for why we
|
|
955
|
+
// want to set up our test implementation for FSAllocationPtr this
|
|
956
|
+
// way.
|
|
957
|
+
char* internalData = new char[req.len];
|
|
958
958
|
req.status = Read(req.offset, req.len, options, &req.result,
|
|
959
|
-
|
|
959
|
+
internalData, dbg);
|
|
960
|
+
|
|
961
|
+
Slice* internalSlice = new Slice(internalData, req.len);
|
|
962
|
+
FSAllocationPtr internalPtr(internalSlice, [](void* ptr) {
|
|
963
|
+
delete[] static_cast<const char*>(
|
|
964
|
+
static_cast<Slice*>(ptr)->data_);
|
|
965
|
+
delete static_cast<Slice*>(ptr);
|
|
966
|
+
});
|
|
967
|
+
req.fs_scratch = std::move(internalPtr);
|
|
960
968
|
}
|
|
961
969
|
return IOStatus::OK();
|
|
962
970
|
}
|
|
@@ -11,18 +11,29 @@ CRASHTEST_MAKE=$(MAKE) -f crash_test.mk
|
|
|
11
11
|
CRASHTEST_PY=$(PYTHON) -u tools/db_crashtest.py --stress_cmd=$(DB_STRESS_CMD) --cleanup_cmd='$(DB_CLEANUP_CMD)'
|
|
12
12
|
|
|
13
13
|
.PHONY: crash_test crash_test_with_atomic_flush crash_test_with_txn \
|
|
14
|
+
crash_test_with_wc_txn crash_test_with_wp_txn crash_test_with_wup_txn \
|
|
14
15
|
crash_test_with_best_efforts_recovery crash_test_with_ts \
|
|
16
|
+
crash_test_with_multiops_wc_txn \
|
|
17
|
+
crash_test_with_multiops_wp_txn \
|
|
18
|
+
crash_test_with_multiops_wup_txn \
|
|
19
|
+
crash_test_with_optimistic_txn \
|
|
20
|
+
crash_test_with_tiered_storage \
|
|
15
21
|
blackbox_crash_test blackbox_crash_test_with_atomic_flush \
|
|
22
|
+
blackbox_crash_test_with_wc_txn blackbox_crash_test_with_wp_txn \
|
|
23
|
+
blackbox_crash_test_with_wup_txn \
|
|
16
24
|
blackbox_crash_test_with_txn blackbox_crash_test_with_ts \
|
|
17
25
|
blackbox_crash_test_with_best_efforts_recovery \
|
|
18
|
-
whitebox_crash_test whitebox_crash_test_with_atomic_flush \
|
|
19
|
-
whitebox_crash_test_with_txn whitebox_crash_test_with_ts \
|
|
20
26
|
blackbox_crash_test_with_multiops_wc_txn \
|
|
21
27
|
blackbox_crash_test_with_multiops_wp_txn \
|
|
22
|
-
|
|
23
|
-
whitebox_crash_test_with_tiered_storage \
|
|
24
|
-
whitebox_crash_test_with_optimistic_txn \
|
|
28
|
+
blackbox_crash_test_with_multiops_wup_txn \
|
|
25
29
|
blackbox_crash_test_with_optimistic_txn \
|
|
30
|
+
blackbox_crash_test_with_tiered_storage \
|
|
31
|
+
whitebox_crash_test whitebox_crash_test_with_atomic_flush \
|
|
32
|
+
whitebox_crash_test_with_wc_txn whitebox_crash_test_with_wp_txn \
|
|
33
|
+
whitebox_crash_test_with_wup_txn \
|
|
34
|
+
whitebox_crash_test_with_txn whitebox_crash_test_with_ts \
|
|
35
|
+
whitebox_crash_test_with_optimistic_txn \
|
|
36
|
+
whitebox_crash_test_with_tiered_storage \
|
|
26
37
|
|
|
27
38
|
crash_test: $(DB_STRESS_CMD)
|
|
28
39
|
# Do not parallelize
|
|
@@ -34,10 +45,20 @@ crash_test_with_atomic_flush: $(DB_STRESS_CMD)
|
|
|
34
45
|
$(CRASHTEST_MAKE) whitebox_crash_test_with_atomic_flush
|
|
35
46
|
$(CRASHTEST_MAKE) blackbox_crash_test_with_atomic_flush
|
|
36
47
|
|
|
37
|
-
|
|
48
|
+
crash_test_with_wc_txn: $(DB_STRESS_CMD)
|
|
49
|
+
# Do not parallelize
|
|
50
|
+
$(CRASHTEST_MAKE) whitebox_crash_test_with_wc_txn
|
|
51
|
+
$(CRASHTEST_MAKE) blackbox_crash_test_with_wc_txn
|
|
52
|
+
|
|
53
|
+
crash_test_with_wp_txn: $(DB_STRESS_CMD)
|
|
38
54
|
# Do not parallelize
|
|
39
|
-
$(CRASHTEST_MAKE)
|
|
40
|
-
$(CRASHTEST_MAKE)
|
|
55
|
+
$(CRASHTEST_MAKE) whitebox_crash_test_with_wp_txn
|
|
56
|
+
$(CRASHTEST_MAKE) blackbox_crash_test_with_wp_txn
|
|
57
|
+
|
|
58
|
+
crash_test_with_wup_txn: $(DB_STRESS_CMD)
|
|
59
|
+
# Do not parallelize
|
|
60
|
+
$(CRASHTEST_MAKE) whitebox_crash_test_with_wup_txn
|
|
61
|
+
$(CRASHTEST_MAKE) blackbox_crash_test_with_wup_txn
|
|
41
62
|
|
|
42
63
|
crash_test_with_optimistic_txn: $(DB_STRESS_CMD)
|
|
43
64
|
# Do not parallelize
|
|
@@ -62,6 +83,9 @@ crash_test_with_multiops_wc_txn: $(DB_STRESS_CMD)
|
|
|
62
83
|
crash_test_with_multiops_wp_txn: $(DB_STRESS_CMD)
|
|
63
84
|
$(CRASHTEST_MAKE) blackbox_crash_test_with_multiops_wp_txn
|
|
64
85
|
|
|
86
|
+
crash_test_with_multiops_wup_txn: $(DB_STRESS_CMD)
|
|
87
|
+
$(CRASHTEST_MAKE) blackbox_crash_test_with_multiops_wup_txn
|
|
88
|
+
|
|
65
89
|
blackbox_crash_test: $(DB_STRESS_CMD)
|
|
66
90
|
$(CRASHTEST_PY) --simple blackbox $(CRASH_TEST_EXT_ARGS)
|
|
67
91
|
$(CRASHTEST_PY) blackbox $(CRASH_TEST_EXT_ARGS)
|
|
@@ -69,8 +93,14 @@ blackbox_crash_test: $(DB_STRESS_CMD)
|
|
|
69
93
|
blackbox_crash_test_with_atomic_flush: $(DB_STRESS_CMD)
|
|
70
94
|
$(CRASHTEST_PY) --cf_consistency blackbox $(CRASH_TEST_EXT_ARGS)
|
|
71
95
|
|
|
72
|
-
|
|
73
|
-
$(CRASHTEST_PY) --txn blackbox $(CRASH_TEST_EXT_ARGS)
|
|
96
|
+
blackbox_crash_test_with_wc_txn: $(DB_STRESS_CMD)
|
|
97
|
+
$(CRASHTEST_PY) --txn blackbox --txn_write_policy 0 $(CRASH_TEST_EXT_ARGS)
|
|
98
|
+
|
|
99
|
+
blackbox_crash_test_with_wp_txn: $(DB_STRESS_CMD)
|
|
100
|
+
$(CRASHTEST_PY) --txn blackbox --txn_write_policy 1 $(CRASH_TEST_EXT_ARGS)
|
|
101
|
+
|
|
102
|
+
blackbox_crash_test_with_wup_txn: $(DB_STRESS_CMD)
|
|
103
|
+
$(CRASHTEST_PY) --txn blackbox --txn_write_policy 2 $(CRASH_TEST_EXT_ARGS)
|
|
74
104
|
|
|
75
105
|
blackbox_crash_test_with_best_efforts_recovery: $(DB_STRESS_CMD)
|
|
76
106
|
$(CRASHTEST_PY) --test_best_efforts_recovery blackbox $(CRASH_TEST_EXT_ARGS)
|
|
@@ -79,10 +109,13 @@ blackbox_crash_test_with_ts: $(DB_STRESS_CMD)
|
|
|
79
109
|
$(CRASHTEST_PY) --enable_ts blackbox $(CRASH_TEST_EXT_ARGS)
|
|
80
110
|
|
|
81
111
|
blackbox_crash_test_with_multiops_wc_txn: $(DB_STRESS_CMD)
|
|
82
|
-
$(CRASHTEST_PY) --test_multiops_txn --
|
|
112
|
+
$(CRASHTEST_PY) --test_multiops_txn --txn_write_policy 0 blackbox $(CRASH_TEST_EXT_ARGS)
|
|
83
113
|
|
|
84
114
|
blackbox_crash_test_with_multiops_wp_txn: $(DB_STRESS_CMD)
|
|
85
|
-
$(CRASHTEST_PY) --test_multiops_txn --
|
|
115
|
+
$(CRASHTEST_PY) --test_multiops_txn --txn_write_policy 1 blackbox $(CRASH_TEST_EXT_ARGS)
|
|
116
|
+
|
|
117
|
+
blackbox_crash_test_with_multiops_wup_txn: $(DB_STRESS_CMD)
|
|
118
|
+
$(CRASHTEST_PY) --test_multiops_txn --txn_write_policy 2 blackbox $(CRASH_TEST_EXT_ARGS)
|
|
86
119
|
|
|
87
120
|
blackbox_crash_test_with_tiered_storage: $(DB_STRESS_CMD)
|
|
88
121
|
$(CRASHTEST_PY) --test_tiered_storage blackbox $(CRASH_TEST_EXT_ARGS)
|
|
@@ -104,9 +137,17 @@ whitebox_crash_test_with_atomic_flush: $(DB_STRESS_CMD)
|
|
|
104
137
|
$(CRASHTEST_PY) --cf_consistency whitebox --random_kill_odd \
|
|
105
138
|
$(CRASH_TEST_KILL_ODD) $(CRASH_TEST_EXT_ARGS)
|
|
106
139
|
|
|
107
|
-
|
|
108
|
-
$(CRASHTEST_PY) --txn whitebox --
|
|
109
|
-
|
|
140
|
+
whitebox_crash_test_with_wc_txn: $(DB_STRESS_CMD)
|
|
141
|
+
$(CRASHTEST_PY) --txn whitebox --txn_write_policy 0 \
|
|
142
|
+
--random_kill_odd $(CRASH_TEST_KILL_ODD) $(CRASH_TEST_EXT_ARGS)
|
|
143
|
+
|
|
144
|
+
whitebox_crash_test_with_wp_txn: $(DB_STRESS_CMD)
|
|
145
|
+
$(CRASHTEST_PY) --txn whitebox --txn_write_policy 1 \
|
|
146
|
+
--random_kill_odd $(CRASH_TEST_KILL_ODD) $(CRASH_TEST_EXT_ARGS)
|
|
147
|
+
|
|
148
|
+
whitebox_crash_test_with_wup_txn: $(DB_STRESS_CMD)
|
|
149
|
+
$(CRASHTEST_PY) --txn whitebox --txn_write_policy 2 \
|
|
150
|
+
--random_kill_odd $(CRASH_TEST_KILL_ODD) $(CRASH_TEST_EXT_ARGS)
|
|
110
151
|
|
|
111
152
|
whitebox_crash_test_with_ts: $(DB_STRESS_CMD)
|
|
112
153
|
$(CRASHTEST_PY) --enable_ts whitebox --random_kill_odd \
|
|
@@ -119,3 +160,8 @@ whitebox_crash_test_with_tiered_storage: $(DB_STRESS_CMD)
|
|
|
119
160
|
whitebox_crash_test_with_optimistic_txn: $(DB_STRESS_CMD)
|
|
120
161
|
$(CRASHTEST_PY) --optimistic_txn whitebox --random_kill_odd \
|
|
121
162
|
$(CRASH_TEST_KILL_ODD) $(CRASH_TEST_EXT_ARGS)
|
|
163
|
+
|
|
164
|
+
# Old names DEPRECATED
|
|
165
|
+
crash_test_with_txn: crash_test_with_wc_txn
|
|
166
|
+
whitebox_crash_test_with_txn: whitebox_crash_test_with_wc_txn
|
|
167
|
+
blackbox_crash_test_with_txn: blackbox_crash_test_with_wc_txn
|
|
@@ -42,9 +42,9 @@ Status ArenaWrappedDBIter::GetProperty(std::string prop_name,
|
|
|
42
42
|
void ArenaWrappedDBIter::Init(
|
|
43
43
|
Env* env, const ReadOptions& read_options, const ImmutableOptions& ioptions,
|
|
44
44
|
const MutableCFOptions& mutable_cf_options, const Version* version,
|
|
45
|
-
const SequenceNumber& sequence, uint64_t
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
const SequenceNumber& sequence, uint64_t version_number,
|
|
46
|
+
ReadCallback* read_callback, ColumnFamilyHandleImpl* cfh,
|
|
47
|
+
bool expose_blob_index, bool allow_refresh, ReadOnlyMemTable* active_mem) {
|
|
48
48
|
read_options_ = read_options;
|
|
49
49
|
if (!CheckFSFeatureSupport(env->GetFileSystem().get(),
|
|
50
50
|
FSSupportedOps::kAsyncIO)) {
|
|
@@ -52,20 +52,128 @@ void ArenaWrappedDBIter::Init(
|
|
|
52
52
|
}
|
|
53
53
|
read_options_.total_order_seek |= ioptions.prefix_seek_opt_in_only;
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
max_sequential_skip_in_iteration, read_callback,
|
|
60
|
-
cfh, expose_blob_index);
|
|
55
|
+
db_iter_ = DBIter::NewIter(
|
|
56
|
+
env, read_options_, ioptions, mutable_cf_options,
|
|
57
|
+
ioptions.user_comparator, /*internal_iter=*/nullptr, version, sequence,
|
|
58
|
+
read_callback, active_mem, cfh, expose_blob_index, &arena_);
|
|
61
59
|
|
|
62
60
|
sv_number_ = version_number;
|
|
63
61
|
allow_refresh_ = allow_refresh;
|
|
62
|
+
allow_mark_memtable_for_flush_ = active_mem;
|
|
64
63
|
memtable_range_tombstone_iter_ = nullptr;
|
|
65
64
|
}
|
|
66
65
|
|
|
66
|
+
void ArenaWrappedDBIter::MaybeAutoRefresh(bool is_seek,
|
|
67
|
+
DBIter::Direction direction) {
|
|
68
|
+
if (cfh_ != nullptr && read_options_.snapshot != nullptr && allow_refresh_ &&
|
|
69
|
+
read_options_.auto_refresh_iterator_with_snapshot) {
|
|
70
|
+
// The intent here is to capture the superversion number change
|
|
71
|
+
// reasonably soon from the time it actually happened. As such,
|
|
72
|
+
// we're fine with weaker synchronization / ordering guarantees
|
|
73
|
+
// provided by relaxed atomic (in favor of less CPU / mem overhead).
|
|
74
|
+
uint64_t cur_sv_number = cfh_->cfd()->GetSuperVersionNumberRelaxed();
|
|
75
|
+
if ((sv_number_ != cur_sv_number) && status().ok()) {
|
|
76
|
+
// Changing iterators' direction is pretty heavy-weight operation and
|
|
77
|
+
// could have unintended consequences when it comes to prefix seek.
|
|
78
|
+
// Therefore, we need an efficient implementation that does not duplicate
|
|
79
|
+
// the effort by doing things like double seek(forprev).
|
|
80
|
+
//
|
|
81
|
+
// Auto refresh can be triggered on the following groups of operations:
|
|
82
|
+
//
|
|
83
|
+
// 1. [Seek]: Seek(), SeekForPrev()
|
|
84
|
+
// 2. [Non-Seek]: Next(), Prev()
|
|
85
|
+
//
|
|
86
|
+
// In case of 'Seek' group, procedure is fairly straightforward as we'll
|
|
87
|
+
// simply call refresh and then invoke the operation on intended target.
|
|
88
|
+
//
|
|
89
|
+
// In case of 'Non-Seek' group, we'll first advance the cursor by invoking
|
|
90
|
+
// intended user operation (Next() or Prev()), capture the target key T,
|
|
91
|
+
// refresh the iterator and then reconcile the refreshed iterator by
|
|
92
|
+
// explicitly calling [Seek(T) or SeekForPrev(T)]. Below is an example
|
|
93
|
+
// flow for Next(), but same principle applies to Prev():
|
|
94
|
+
//
|
|
95
|
+
//
|
|
96
|
+
// T0: Before the operation T1: Execute Next()
|
|
97
|
+
// | |
|
|
98
|
+
// | -------------
|
|
99
|
+
// | | * capture the key (T)
|
|
100
|
+
// DBIter(SV#A) | |
|
|
101
|
+
// --------------\ /------\ /---------
|
|
102
|
+
// SV #A | ... -> [ X ] -> [ T ] -> ... |
|
|
103
|
+
// -----------------------------------
|
|
104
|
+
// / |
|
|
105
|
+
// / |
|
|
106
|
+
// / T2: Refresh iterator
|
|
107
|
+
// /
|
|
108
|
+
// DBIter(SV#A') /
|
|
109
|
+
// ----------------------------------
|
|
110
|
+
// SV #A' | ... -> [ T ] -> ... |
|
|
111
|
+
// ----------------/ \---------------
|
|
112
|
+
// |
|
|
113
|
+
// ---- T3: Seek(T)
|
|
114
|
+
//
|
|
115
|
+
bool valid = false;
|
|
116
|
+
std::string key;
|
|
117
|
+
if (!is_seek && db_iter_->Valid()) {
|
|
118
|
+
// The key() Slice is valid until the iterator state changes.
|
|
119
|
+
// Given that refresh is heavy-weight operation it itself,
|
|
120
|
+
// we should copy the target key upfront to avoid reading bad value.
|
|
121
|
+
valid = true;
|
|
122
|
+
key = db_iter_->key().ToString();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// It's perfectly fine to unref the corresponding superversion
|
|
126
|
+
// as we rely on pinning behavior of snapshot for consistency.
|
|
127
|
+
DoRefresh(read_options_.snapshot, cur_sv_number);
|
|
128
|
+
|
|
129
|
+
if (!is_seek && valid) { // Reconcile new iterator after Next() / Prev()
|
|
130
|
+
if (direction == DBIter::kForward) {
|
|
131
|
+
db_iter_->Seek(key);
|
|
132
|
+
} else {
|
|
133
|
+
assert(direction == DBIter::kReverse);
|
|
134
|
+
db_iter_->SeekForPrev(key);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
67
141
|
Status ArenaWrappedDBIter::Refresh() { return Refresh(nullptr); }
|
|
68
142
|
|
|
143
|
+
void ArenaWrappedDBIter::DoRefresh(const Snapshot* snapshot,
|
|
144
|
+
[[maybe_unused]] uint64_t sv_number) {
|
|
145
|
+
Env* env = db_iter_->env();
|
|
146
|
+
|
|
147
|
+
// NOTE:
|
|
148
|
+
//
|
|
149
|
+
// Errors like file deletion (as a part of SV cleanup in ~DBIter) will be
|
|
150
|
+
// present in the error log, but won't be reflected in the iterator status.
|
|
151
|
+
// This is by design as we expect compaction to clean up those obsolete files
|
|
152
|
+
// eventually.
|
|
153
|
+
db_iter_->~DBIter();
|
|
154
|
+
|
|
155
|
+
arena_.~Arena();
|
|
156
|
+
new (&arena_) Arena();
|
|
157
|
+
|
|
158
|
+
auto cfd = cfh_->cfd();
|
|
159
|
+
auto db_impl = cfh_->db();
|
|
160
|
+
|
|
161
|
+
SuperVersion* sv = cfd->GetReferencedSuperVersion(db_impl);
|
|
162
|
+
assert(sv->version_number >= sv_number);
|
|
163
|
+
SequenceNumber read_seq = GetSeqNum(db_impl, snapshot);
|
|
164
|
+
if (read_callback_) {
|
|
165
|
+
read_callback_->Refresh(read_seq);
|
|
166
|
+
}
|
|
167
|
+
Init(env, read_options_, cfd->ioptions(), sv->mutable_cf_options, sv->current,
|
|
168
|
+
read_seq, sv->version_number, read_callback_, cfh_, expose_blob_index_,
|
|
169
|
+
allow_refresh_, allow_mark_memtable_for_flush_ ? sv->mem : nullptr);
|
|
170
|
+
|
|
171
|
+
InternalIterator* internal_iter = db_impl->NewInternalIterator(
|
|
172
|
+
read_options_, cfd, sv, &arena_, read_seq,
|
|
173
|
+
/* allow_unprepared_value */ true, /* db_iter */ this);
|
|
174
|
+
SetIterUnderDBIter(internal_iter);
|
|
175
|
+
}
|
|
176
|
+
|
|
69
177
|
Status ArenaWrappedDBIter::Refresh(const Snapshot* snapshot) {
|
|
70
178
|
if (cfh_ == nullptr || !allow_refresh_) {
|
|
71
179
|
return Status::NotSupported("Creating renew iterator is not allowed.");
|
|
@@ -85,32 +193,9 @@ Status ArenaWrappedDBIter::Refresh(const Snapshot* snapshot) {
|
|
|
85
193
|
TEST_SYNC_POINT("ArenaWrappedDBIter::Refresh:1");
|
|
86
194
|
TEST_SYNC_POINT("ArenaWrappedDBIter::Refresh:2");
|
|
87
195
|
|
|
88
|
-
auto reinit_internal_iter = [&]() {
|
|
89
|
-
Env* env = db_iter_->env();
|
|
90
|
-
db_iter_->~DBIter();
|
|
91
|
-
arena_.~Arena();
|
|
92
|
-
new (&arena_) Arena();
|
|
93
|
-
|
|
94
|
-
SuperVersion* sv = cfd->GetReferencedSuperVersion(db_impl);
|
|
95
|
-
assert(sv->version_number >= cur_sv_number);
|
|
96
|
-
SequenceNumber read_seq = GetSeqNum(db_impl, snapshot);
|
|
97
|
-
if (read_callback_) {
|
|
98
|
-
read_callback_->Refresh(read_seq);
|
|
99
|
-
}
|
|
100
|
-
Init(env, read_options_, *(cfd->ioptions()), sv->mutable_cf_options,
|
|
101
|
-
sv->current, read_seq,
|
|
102
|
-
sv->mutable_cf_options.max_sequential_skip_in_iterations,
|
|
103
|
-
sv->version_number, read_callback_, cfh_, expose_blob_index_,
|
|
104
|
-
allow_refresh_);
|
|
105
|
-
|
|
106
|
-
InternalIterator* internal_iter = db_impl->NewInternalIterator(
|
|
107
|
-
read_options_, cfd, sv, &arena_, read_seq,
|
|
108
|
-
/* allow_unprepared_value */ true, /* db_iter */ this);
|
|
109
|
-
SetIterUnderDBIter(internal_iter);
|
|
110
|
-
};
|
|
111
196
|
while (true) {
|
|
112
197
|
if (sv_number_ != cur_sv_number) {
|
|
113
|
-
|
|
198
|
+
DoRefresh(snapshot, cur_sv_number);
|
|
114
199
|
break;
|
|
115
200
|
} else {
|
|
116
201
|
SequenceNumber read_seq = GetSeqNum(db_impl, snapshot);
|
|
@@ -138,7 +223,7 @@ Status ArenaWrappedDBIter::Refresh(const Snapshot* snapshot) {
|
|
|
138
223
|
db_impl->ReturnAndCleanupSuperVersion(cfd, sv);
|
|
139
224
|
// The memtable under DBIter did not have range tombstone before
|
|
140
225
|
// refresh.
|
|
141
|
-
|
|
226
|
+
DoRefresh(snapshot, cur_sv_number);
|
|
142
227
|
break;
|
|
143
228
|
} else {
|
|
144
229
|
*memtable_range_tombstone_iter_ =
|
|
@@ -166,20 +251,26 @@ Status ArenaWrappedDBIter::Refresh(const Snapshot* snapshot) {
|
|
|
166
251
|
}
|
|
167
252
|
|
|
168
253
|
ArenaWrappedDBIter* NewArenaWrappedDbIterator(
|
|
169
|
-
Env* env, const ReadOptions& read_options,
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
254
|
+
Env* env, const ReadOptions& read_options, ColumnFamilyHandleImpl* cfh,
|
|
255
|
+
SuperVersion* sv, const SequenceNumber& sequence,
|
|
256
|
+
ReadCallback* read_callback, DBImpl* db_impl, bool expose_blob_index,
|
|
257
|
+
bool allow_refresh, bool allow_mark_memtable_for_flush) {
|
|
258
|
+
ArenaWrappedDBIter* db_iter = new ArenaWrappedDBIter();
|
|
259
|
+
db_iter->Init(env, read_options, cfh->cfd()->ioptions(),
|
|
260
|
+
sv->mutable_cf_options, sv->current, sequence,
|
|
261
|
+
sv->version_number, read_callback, cfh, expose_blob_index,
|
|
262
|
+
allow_refresh,
|
|
263
|
+
allow_mark_memtable_for_flush ? sv->mem : nullptr);
|
|
178
264
|
if (cfh != nullptr && allow_refresh) {
|
|
179
|
-
|
|
265
|
+
db_iter->StoreRefreshInfo(cfh, read_callback, expose_blob_index);
|
|
180
266
|
}
|
|
181
267
|
|
|
182
|
-
|
|
268
|
+
InternalIterator* internal_iter = db_impl->NewInternalIterator(
|
|
269
|
+
db_iter->GetReadOptions(), cfh->cfd(), sv, db_iter->GetArena(), sequence,
|
|
270
|
+
/*allow_unprepared_value=*/true, db_iter);
|
|
271
|
+
db_iter->SetIterUnderDBIter(internal_iter);
|
|
272
|
+
|
|
273
|
+
return db_iter;
|
|
183
274
|
}
|
|
184
275
|
|
|
185
276
|
} // namespace ROCKSDB_NAMESPACE
|