@nxtedition/rocksdb 7.1.20 → 7.1.21
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/deps/rocksdb/rocksdb/CMakeLists.txt +13 -6
- package/deps/rocksdb/rocksdb/Makefile +1 -1
- package/deps/rocksdb/rocksdb/TARGETS +2 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +4 -4
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +139 -161
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +92 -82
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +16 -3
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -3
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +73 -30
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +25 -67
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +41 -40
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +109 -155
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +127 -149
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +75 -80
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +22 -172
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +272 -85
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +12 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +13 -4
- package/deps/rocksdb/rocksdb/db/builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +15 -1
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +25 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +10 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +22 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +14 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +38 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +9 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +408 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +244 -54
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +27 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +25 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +87 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -10
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +272 -0
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +38 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +69 -25
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +7 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +29 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +0 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +10 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +35 -22
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +5 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +40 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +22 -0
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +72 -5
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +60 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +170 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +9 -3
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +19 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.h +32 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +444 -3
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/dbformat.cc +13 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +59 -4
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +3 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +24 -3
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/filename_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +85 -43
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +3 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +33 -6
- package/deps/rocksdb/rocksdb/db/internal_stats.h +6 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +1 -1
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +158 -56
- package/deps/rocksdb/rocksdb/db/memtable.h +2 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +52 -9
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +31 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +81 -42
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +78 -12
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +21 -4
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +4 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +18 -6
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_set.cc +15 -7
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +3 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +28 -9
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +21 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +30 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +4 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +30 -7
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +24 -13
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +104 -60
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +199 -108
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +39 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +8 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +3 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +26 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -118
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +24 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +18 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +129 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +22 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +312 -117
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +10 -2
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +5 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +49 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +44 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +8 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -6
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memory/arena.cc +23 -88
- package/deps/rocksdb/rocksdb/memory/arena.h +25 -31
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +61 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +8 -0
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_test.cc +63 -40
- package/deps/rocksdb/rocksdb/port/mmap.cc +98 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +70 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +7 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +4 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -7
- package/deps/rocksdb/rocksdb/src.mk +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +7 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/get_context.cc +19 -1
- package/deps/rocksdb/rocksdb/table/get_context.h +9 -0
- package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -11
- package/deps/rocksdb/rocksdb/table/mock_table.cc +37 -19
- package/deps/rocksdb/rocksdb/table/mock_table.h +5 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +6 -0
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +33 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +45 -6
- package/deps/rocksdb/rocksdb/test_util/testharness.h +2 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +5 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +36 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +12 -7
- package/deps/rocksdb/rocksdb/util/hash_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/heap_test.cc +4 -2
- package/deps/rocksdb/rocksdb/util/random_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/thread_local_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/timer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/work_queue_test.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +13 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +8 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +20 -0
- package/index.js +12 -4
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -94,7 +94,9 @@ Status UpdateManifestForFilesState(
|
|
|
94
94
|
|
|
95
95
|
std::unique_ptr<FSSequentialFile> f;
|
|
96
96
|
FileOptions fopts;
|
|
97
|
-
|
|
97
|
+
// Use kUnknown to signal the FileSystem to search all tiers for the
|
|
98
|
+
// file.
|
|
99
|
+
fopts.temperature = Temperature::kUnknown;
|
|
98
100
|
|
|
99
101
|
IOStatus file_ios =
|
|
100
102
|
fs->NewSequentialFile(fname, fopts, &f, /*dbg*/ nullptr);
|
|
@@ -339,9 +339,30 @@ Status ExternalSstFileIngestionJob::Prepare(
|
|
|
339
339
|
Status ExternalSstFileIngestionJob::NeedsFlush(bool* flush_needed,
|
|
340
340
|
SuperVersion* super_version) {
|
|
341
341
|
autovector<Range> ranges;
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
342
|
+
autovector<std::string> keys;
|
|
343
|
+
size_t ts_sz = cfd_->user_comparator()->timestamp_size();
|
|
344
|
+
if (ts_sz) {
|
|
345
|
+
// Check all ranges [begin, end] inclusively. Add maximum
|
|
346
|
+
// timestamp to include all `begin` keys, and add minimal timestamp to
|
|
347
|
+
// include all `end` keys.
|
|
348
|
+
for (const IngestedFileInfo& file_to_ingest : files_to_ingest_) {
|
|
349
|
+
std::string begin_str;
|
|
350
|
+
std::string end_str;
|
|
351
|
+
AppendUserKeyWithMaxTimestamp(
|
|
352
|
+
&begin_str, file_to_ingest.smallest_internal_key.user_key(), ts_sz);
|
|
353
|
+
AppendKeyWithMinTimestamp(
|
|
354
|
+
&end_str, file_to_ingest.largest_internal_key.user_key(), ts_sz);
|
|
355
|
+
keys.emplace_back(std::move(begin_str));
|
|
356
|
+
keys.emplace_back(std::move(end_str));
|
|
357
|
+
}
|
|
358
|
+
for (size_t i = 0; i < files_to_ingest_.size(); ++i) {
|
|
359
|
+
ranges.emplace_back(keys[2 * i], keys[2 * i + 1]);
|
|
360
|
+
}
|
|
361
|
+
} else {
|
|
362
|
+
for (const IngestedFileInfo& file_to_ingest : files_to_ingest_) {
|
|
363
|
+
ranges.emplace_back(file_to_ingest.smallest_internal_key.user_key(),
|
|
364
|
+
file_to_ingest.largest_internal_key.user_key());
|
|
365
|
+
}
|
|
345
366
|
}
|
|
346
367
|
Status status = cfd_->RangesOverlapWithMemtables(
|
|
347
368
|
ranges, super_version, db_options_.allow_data_in_errors, flush_needed);
|
|
@@ -631,6 +631,7 @@ INSTANTIATE_TEST_CASE_P(
|
|
|
631
631
|
} // namespace ROCKSDB_NAMESPACE
|
|
632
632
|
|
|
633
633
|
int main(int argc, char** argv) {
|
|
634
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
634
635
|
::testing::InitGoogleTest(&argc, argv);
|
|
635
636
|
RegisterCustomObjects(argc, argv);
|
|
636
637
|
return RUN_ALL_TESTS();
|
|
@@ -420,9 +420,11 @@ Status FlushJob::MemPurge() {
|
|
|
420
420
|
// Place iterator at the First (meaning most recent) key node.
|
|
421
421
|
iter->SeekToFirst();
|
|
422
422
|
|
|
423
|
+
const std::string* const full_history_ts_low = &(cfd_->GetFullHistoryTsLow());
|
|
423
424
|
std::unique_ptr<CompactionRangeDelAggregator> range_del_agg(
|
|
424
425
|
new CompactionRangeDelAggregator(&(cfd_->internal_comparator()),
|
|
425
|
-
existing_snapshots_
|
|
426
|
+
existing_snapshots_,
|
|
427
|
+
full_history_ts_low));
|
|
426
428
|
for (auto& rd_iter : range_del_iters) {
|
|
427
429
|
range_del_agg->AddTombstones(std::move(rd_iter));
|
|
428
430
|
}
|
|
@@ -479,8 +481,7 @@ Status FlushJob::MemPurge() {
|
|
|
479
481
|
ioptions->enforce_single_del_contracts,
|
|
480
482
|
/*manual_compaction_canceled=*/kManualCompactionCanceledFalse,
|
|
481
483
|
/*compaction=*/nullptr, compaction_filter.get(),
|
|
482
|
-
/*shutting_down=*/nullptr, ioptions->info_log,
|
|
483
|
-
&(cfd_->GetFullHistoryTsLow()));
|
|
484
|
+
/*shutting_down=*/nullptr, ioptions->info_log, full_history_ts_low);
|
|
484
485
|
|
|
485
486
|
// Set earliest sequence number in the new memtable
|
|
486
487
|
// to be equal to the earliest sequence number of the
|
|
@@ -739,6 +739,7 @@ TEST_F(FlushJobTimestampTest, NoKeyExpired) {
|
|
|
739
739
|
} // namespace ROCKSDB_NAMESPACE
|
|
740
740
|
|
|
741
741
|
int main(int argc, char** argv) {
|
|
742
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
742
743
|
::testing::InitGoogleTest(&argc, argv);
|
|
743
744
|
return RUN_ALL_TESTS();
|
|
744
745
|
}
|
|
@@ -351,7 +351,7 @@ void ForwardIterator::SeekToFirst() {
|
|
|
351
351
|
} else if (immutable_status_.IsIncomplete()) {
|
|
352
352
|
ResetIncompleteIterators();
|
|
353
353
|
}
|
|
354
|
-
SeekInternal(Slice(), true);
|
|
354
|
+
SeekInternal(Slice(), true, false);
|
|
355
355
|
}
|
|
356
356
|
|
|
357
357
|
bool ForwardIterator::IsOverUpperBound(const Slice& internal_key) const {
|
|
@@ -369,48 +369,60 @@ void ForwardIterator::Seek(const Slice& internal_key) {
|
|
|
369
369
|
} else if (immutable_status_.IsIncomplete()) {
|
|
370
370
|
ResetIncompleteIterators();
|
|
371
371
|
}
|
|
372
|
-
|
|
372
|
+
|
|
373
|
+
SeekInternal(internal_key, false, false);
|
|
374
|
+
if (read_options_.async_io) {
|
|
375
|
+
SeekInternal(internal_key, false, true);
|
|
376
|
+
}
|
|
373
377
|
}
|
|
374
378
|
|
|
379
|
+
// In case of async_io, SeekInternal is called twice with seek_after_async_io
|
|
380
|
+
// enabled in second call which only does seeking part to retrieve the blocks.
|
|
375
381
|
void ForwardIterator::SeekInternal(const Slice& internal_key,
|
|
376
|
-
bool seek_to_first
|
|
382
|
+
bool seek_to_first,
|
|
383
|
+
bool seek_after_async_io) {
|
|
377
384
|
assert(mutable_iter_);
|
|
378
385
|
// mutable
|
|
379
|
-
|
|
380
|
-
|
|
386
|
+
if (!seek_after_async_io) {
|
|
387
|
+
seek_to_first ? mutable_iter_->SeekToFirst()
|
|
388
|
+
: mutable_iter_->Seek(internal_key);
|
|
389
|
+
}
|
|
381
390
|
|
|
382
391
|
// immutable
|
|
383
392
|
// TODO(ljin): NeedToSeekImmutable has negative impact on performance
|
|
384
393
|
// if it turns to need to seek immutable often. We probably want to have
|
|
385
394
|
// an option to turn it off.
|
|
386
|
-
if (seek_to_first ||
|
|
387
|
-
|
|
388
|
-
if (
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
395
|
+
if (seek_to_first || seek_after_async_io ||
|
|
396
|
+
NeedToSeekImmutable(internal_key)) {
|
|
397
|
+
if (!seek_after_async_io) {
|
|
398
|
+
immutable_status_ = Status::OK();
|
|
399
|
+
if (has_iter_trimmed_for_upper_bound_ &&
|
|
400
|
+
(
|
|
401
|
+
// prev_ is not set yet
|
|
402
|
+
is_prev_set_ == false ||
|
|
403
|
+
// We are doing SeekToFirst() and internal_key.size() = 0
|
|
404
|
+
seek_to_first ||
|
|
405
|
+
// prev_key_ > internal_key
|
|
406
|
+
cfd_->internal_comparator().InternalKeyComparator::Compare(
|
|
407
|
+
prev_key_.GetInternalKey(), internal_key) > 0)) {
|
|
408
|
+
// Some iterators are trimmed. Need to rebuild.
|
|
409
|
+
RebuildIterators(true);
|
|
410
|
+
// Already seeked mutable iter, so seek again
|
|
411
|
+
seek_to_first ? mutable_iter_->SeekToFirst()
|
|
412
|
+
: mutable_iter_->Seek(internal_key);
|
|
413
|
+
}
|
|
414
|
+
{
|
|
415
|
+
auto tmp = MinIterHeap(MinIterComparator(&cfd_->internal_comparator()));
|
|
416
|
+
immutable_min_heap_.swap(tmp);
|
|
417
|
+
}
|
|
418
|
+
for (size_t i = 0; i < imm_iters_.size(); i++) {
|
|
419
|
+
auto* m = imm_iters_[i];
|
|
420
|
+
seek_to_first ? m->SeekToFirst() : m->Seek(internal_key);
|
|
421
|
+
if (!m->status().ok()) {
|
|
422
|
+
immutable_status_ = m->status();
|
|
423
|
+
} else if (m->Valid()) {
|
|
424
|
+
immutable_min_heap_.push(m);
|
|
425
|
+
}
|
|
414
426
|
}
|
|
415
427
|
}
|
|
416
428
|
|
|
@@ -424,12 +436,19 @@ void ForwardIterator::SeekInternal(const Slice& internal_key,
|
|
|
424
436
|
if (!l0_iters_[i]) {
|
|
425
437
|
continue;
|
|
426
438
|
}
|
|
439
|
+
if (seek_after_async_io) {
|
|
440
|
+
if (!l0_iters_[i]->status().IsTryAgain()) {
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
427
445
|
if (seek_to_first) {
|
|
428
446
|
l0_iters_[i]->SeekToFirst();
|
|
429
447
|
} else {
|
|
430
448
|
// If the target key passes over the largest key, we are sure Next()
|
|
431
449
|
// won't go over this file.
|
|
432
|
-
if (
|
|
450
|
+
if (seek_after_async_io == false &&
|
|
451
|
+
user_comparator_->Compare(target_user_key,
|
|
433
452
|
l0[i]->largest.user_key()) > 0) {
|
|
434
453
|
if (read_options_.iterate_upper_bound != nullptr) {
|
|
435
454
|
has_iter_trimmed_for_upper_bound_ = true;
|
|
@@ -441,7 +460,10 @@ void ForwardIterator::SeekInternal(const Slice& internal_key,
|
|
|
441
460
|
l0_iters_[i]->Seek(internal_key);
|
|
442
461
|
}
|
|
443
462
|
|
|
444
|
-
if (
|
|
463
|
+
if (l0_iters_[i]->status().IsTryAgain()) {
|
|
464
|
+
assert(!seek_after_async_io);
|
|
465
|
+
continue;
|
|
466
|
+
} else if (!l0_iters_[i]->status().ok()) {
|
|
445
467
|
immutable_status_ = l0_iters_[i]->status();
|
|
446
468
|
} else if (l0_iters_[i]->Valid() &&
|
|
447
469
|
!IsOverUpperBound(l0_iters_[i]->key())) {
|
|
@@ -462,19 +484,30 @@ void ForwardIterator::SeekInternal(const Slice& internal_key,
|
|
|
462
484
|
if (level_iters_[level - 1] == nullptr) {
|
|
463
485
|
continue;
|
|
464
486
|
}
|
|
487
|
+
|
|
488
|
+
if (seek_after_async_io) {
|
|
489
|
+
if (!level_iters_[level - 1]->status().IsTryAgain()) {
|
|
490
|
+
continue;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
465
493
|
uint32_t f_idx = 0;
|
|
466
|
-
if (!seek_to_first) {
|
|
494
|
+
if (!seek_to_first && !seek_after_async_io) {
|
|
467
495
|
f_idx = FindFileInRange(level_files, internal_key, 0,
|
|
468
496
|
static_cast<uint32_t>(level_files.size()));
|
|
469
497
|
}
|
|
470
498
|
|
|
471
499
|
// Seek
|
|
472
|
-
if (f_idx < level_files.size()) {
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
500
|
+
if (seek_after_async_io || f_idx < level_files.size()) {
|
|
501
|
+
if (!seek_after_async_io) {
|
|
502
|
+
level_iters_[level - 1]->SetFileIndex(f_idx);
|
|
503
|
+
}
|
|
504
|
+
seek_to_first ? level_iters_[level - 1]->SeekToFirst()
|
|
505
|
+
: level_iters_[level - 1]->Seek(internal_key);
|
|
476
506
|
|
|
477
|
-
if (
|
|
507
|
+
if (level_iters_[level - 1]->status().IsTryAgain()) {
|
|
508
|
+
assert(!seek_after_async_io);
|
|
509
|
+
continue;
|
|
510
|
+
} else if (!level_iters_[level - 1]->status().ok()) {
|
|
478
511
|
immutable_status_ = level_iters_[level - 1]->status();
|
|
479
512
|
} else if (level_iters_[level - 1]->Valid() &&
|
|
480
513
|
!IsOverUpperBound(level_iters_[level - 1]->key())) {
|
|
@@ -502,7 +535,11 @@ void ForwardIterator::SeekInternal(const Slice& internal_key,
|
|
|
502
535
|
immutable_min_heap_.push(current_);
|
|
503
536
|
}
|
|
504
537
|
|
|
505
|
-
|
|
538
|
+
// For async_io, it should be updated when seek_after_async_io is true (in
|
|
539
|
+
// second call).
|
|
540
|
+
if (seek_to_first || !read_options_.async_io || seek_after_async_io) {
|
|
541
|
+
UpdateCurrent();
|
|
542
|
+
}
|
|
506
543
|
TEST_SYNC_POINT_CALLBACK("ForwardIterator::SeekInternal:Return", this);
|
|
507
544
|
}
|
|
508
545
|
|
|
@@ -520,7 +557,12 @@ void ForwardIterator::Next() {
|
|
|
520
557
|
} else {
|
|
521
558
|
RenewIterators();
|
|
522
559
|
}
|
|
523
|
-
|
|
560
|
+
|
|
561
|
+
SeekInternal(old_key, false, false);
|
|
562
|
+
if (read_options_.async_io) {
|
|
563
|
+
SeekInternal(old_key, false, true);
|
|
564
|
+
}
|
|
565
|
+
|
|
524
566
|
if (!valid_ || key().compare(old_key) != 0) {
|
|
525
567
|
return;
|
|
526
568
|
}
|
|
@@ -101,7 +101,9 @@ class ForwardIterator : public InternalIterator {
|
|
|
101
101
|
void BuildLevelIterators(const VersionStorageInfo* vstorage,
|
|
102
102
|
SuperVersion* sv);
|
|
103
103
|
void ResetIncompleteIterators();
|
|
104
|
-
void SeekInternal(const Slice& internal_key, bool seek_to_first
|
|
104
|
+
void SeekInternal(const Slice& internal_key, bool seek_to_first,
|
|
105
|
+
bool seek_after_async_io);
|
|
106
|
+
|
|
105
107
|
void UpdateCurrent();
|
|
106
108
|
bool NeedToSeekImmutable(const Slice& internal_key);
|
|
107
109
|
void DeleteCurrentIter();
|
|
@@ -247,6 +247,8 @@ static const std::string cf_file_histogram = "cf-file-histogram";
|
|
|
247
247
|
static const std::string dbstats = "dbstats";
|
|
248
248
|
static const std::string levelstats = "levelstats";
|
|
249
249
|
static const std::string block_cache_entry_stats = "block-cache-entry-stats";
|
|
250
|
+
static const std::string fast_block_cache_entry_stats =
|
|
251
|
+
"fast-block-cache-entry-stats";
|
|
250
252
|
static const std::string num_immutable_mem_table = "num-immutable-mem-table";
|
|
251
253
|
static const std::string num_immutable_mem_table_flushed =
|
|
252
254
|
"num-immutable-mem-table-flushed";
|
|
@@ -326,6 +328,8 @@ const std::string DB::Properties::kDBStats = rocksdb_prefix + dbstats;
|
|
|
326
328
|
const std::string DB::Properties::kLevelStats = rocksdb_prefix + levelstats;
|
|
327
329
|
const std::string DB::Properties::kBlockCacheEntryStats =
|
|
328
330
|
rocksdb_prefix + block_cache_entry_stats;
|
|
331
|
+
const std::string DB::Properties::kFastBlockCacheEntryStats =
|
|
332
|
+
rocksdb_prefix + fast_block_cache_entry_stats;
|
|
329
333
|
const std::string DB::Properties::kNumImmutableMemTable =
|
|
330
334
|
rocksdb_prefix + num_immutable_mem_table;
|
|
331
335
|
const std::string DB::Properties::kNumImmutableMemTableFlushed =
|
|
@@ -446,6 +450,9 @@ const UnorderedMap<std::string, DBPropertyInfo>
|
|
|
446
450
|
{DB::Properties::kBlockCacheEntryStats,
|
|
447
451
|
{true, &InternalStats::HandleBlockCacheEntryStats, nullptr,
|
|
448
452
|
&InternalStats::HandleBlockCacheEntryStatsMap, nullptr}},
|
|
453
|
+
{DB::Properties::kFastBlockCacheEntryStats,
|
|
454
|
+
{true, &InternalStats::HandleFastBlockCacheEntryStats, nullptr,
|
|
455
|
+
&InternalStats::HandleFastBlockCacheEntryStatsMap, nullptr}},
|
|
449
456
|
{DB::Properties::kSSTables,
|
|
450
457
|
{false, &InternalStats::HandleSsTables, nullptr, nullptr, nullptr}},
|
|
451
458
|
{DB::Properties::kAggregatedTableProperties,
|
|
@@ -739,30 +746,50 @@ void InternalStats::CacheEntryRoleStats::ToMap(
|
|
|
739
746
|
}
|
|
740
747
|
}
|
|
741
748
|
|
|
742
|
-
bool InternalStats::
|
|
743
|
-
|
|
749
|
+
bool InternalStats::HandleBlockCacheEntryStatsInternal(std::string* value,
|
|
750
|
+
bool fast) {
|
|
744
751
|
if (!cache_entry_stats_collector_) {
|
|
745
752
|
return false;
|
|
746
753
|
}
|
|
747
|
-
CollectCacheEntryStats(/*foreground*/
|
|
754
|
+
CollectCacheEntryStats(!fast /* foreground */);
|
|
748
755
|
CacheEntryRoleStats stats;
|
|
749
756
|
cache_entry_stats_collector_->GetStats(&stats);
|
|
750
757
|
*value = stats.ToString(clock_);
|
|
751
758
|
return true;
|
|
752
759
|
}
|
|
753
760
|
|
|
754
|
-
bool InternalStats::
|
|
755
|
-
std::map<std::string, std::string>* values,
|
|
761
|
+
bool InternalStats::HandleBlockCacheEntryStatsMapInternal(
|
|
762
|
+
std::map<std::string, std::string>* values, bool fast) {
|
|
756
763
|
if (!cache_entry_stats_collector_) {
|
|
757
764
|
return false;
|
|
758
765
|
}
|
|
759
|
-
CollectCacheEntryStats(/*foreground*/
|
|
766
|
+
CollectCacheEntryStats(!fast /* foreground */);
|
|
760
767
|
CacheEntryRoleStats stats;
|
|
761
768
|
cache_entry_stats_collector_->GetStats(&stats);
|
|
762
769
|
stats.ToMap(values, clock_);
|
|
763
770
|
return true;
|
|
764
771
|
}
|
|
765
772
|
|
|
773
|
+
bool InternalStats::HandleBlockCacheEntryStats(std::string* value,
|
|
774
|
+
Slice /*suffix*/) {
|
|
775
|
+
return HandleBlockCacheEntryStatsInternal(value, false /* fast */);
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
bool InternalStats::HandleBlockCacheEntryStatsMap(
|
|
779
|
+
std::map<std::string, std::string>* values, Slice /*suffix*/) {
|
|
780
|
+
return HandleBlockCacheEntryStatsMapInternal(values, false /* fast */);
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
bool InternalStats::HandleFastBlockCacheEntryStats(std::string* value,
|
|
784
|
+
Slice /*suffix*/) {
|
|
785
|
+
return HandleBlockCacheEntryStatsInternal(value, true /* fast */);
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
bool InternalStats::HandleFastBlockCacheEntryStatsMap(
|
|
789
|
+
std::map<std::string, std::string>* values, Slice /*suffix*/) {
|
|
790
|
+
return HandleBlockCacheEntryStatsMapInternal(values, true /* fast */);
|
|
791
|
+
}
|
|
792
|
+
|
|
766
793
|
bool InternalStats::HandleLiveSstFilesSizeAtTemperature(std::string* value,
|
|
767
794
|
Slice suffix) {
|
|
768
795
|
uint64_t temperature;
|
|
@@ -793,9 +793,15 @@ class InternalStats {
|
|
|
793
793
|
bool HandleBlockCacheUsage(uint64_t* value, DBImpl* db, Version* version);
|
|
794
794
|
bool HandleBlockCachePinnedUsage(uint64_t* value, DBImpl* db,
|
|
795
795
|
Version* version);
|
|
796
|
+
bool HandleBlockCacheEntryStatsInternal(std::string* value, bool fast);
|
|
797
|
+
bool HandleBlockCacheEntryStatsMapInternal(
|
|
798
|
+
std::map<std::string, std::string>* values, bool fast);
|
|
796
799
|
bool HandleBlockCacheEntryStats(std::string* value, Slice suffix);
|
|
797
800
|
bool HandleBlockCacheEntryStatsMap(std::map<std::string, std::string>* values,
|
|
798
801
|
Slice suffix);
|
|
802
|
+
bool HandleFastBlockCacheEntryStats(std::string* value, Slice suffix);
|
|
803
|
+
bool HandleFastBlockCacheEntryStatsMap(
|
|
804
|
+
std::map<std::string, std::string>* values, Slice suffix);
|
|
799
805
|
bool HandleLiveSstFilesSizeAtTemperature(std::string* value, Slice suffix);
|
|
800
806
|
bool HandleNumBlobFiles(uint64_t* value, DBImpl* db, Version* version);
|
|
801
807
|
bool HandleBlobStats(std::string* value, Slice suffix);
|
|
@@ -1591,6 +1591,7 @@ TEST_F(EventListenerTest, BlobDBFileTest) {
|
|
|
1591
1591
|
#endif // ROCKSDB_LITE
|
|
1592
1592
|
|
|
1593
1593
|
int main(int argc, char** argv) {
|
|
1594
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
1594
1595
|
::testing::InitGoogleTest(&argc, argv);
|
|
1595
1596
|
return RUN_ALL_TESTS();
|
|
1596
1597
|
}
|
|
@@ -194,7 +194,7 @@ IOStatus Writer::AddCompressionTypeRecord() {
|
|
|
194
194
|
return s;
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
bool Writer::
|
|
197
|
+
bool Writer::BufferIsEmpty() { return dest_->BufferIsEmpty(); }
|
|
198
198
|
|
|
199
199
|
IOStatus Writer::EmitPhysicalRecord(RecordType t, const char* ptr, size_t n,
|
|
200
200
|
Env::IOPriority rate_limiter_priority) {
|