@nxtedition/rocksdb 8.2.0 → 8.2.2
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 +3 -3
- package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -52
- package/deps/rocksdb/rocksdb/Makefile +10 -5
- package/deps/rocksdb/rocksdb/TARGETS +8 -345
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +92 -0
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +32 -32
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +12 -9
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +6 -43
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +3 -13
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +8 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +21 -47
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -8
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +1 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +44 -7
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +13 -14
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +17 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +40 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +41 -42
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +5 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +5 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +7 -6
- package/deps/rocksdb/rocksdb/db/builder.h +2 -2
- package/deps/rocksdb/rocksdb/db/c.cc +76 -5
- package/deps/rocksdb/rocksdb/db/c_test.c +141 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +32 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +5 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +21 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +77 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +4 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +55 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +142 -56
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +21 -20
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +260 -220
- package/deps/rocksdb/rocksdb/db/db_clip_test.cc +142 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +333 -27
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +7 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +189 -27
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +23 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +134 -90
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +124 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +10 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +7 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +15 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +11 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +54 -3
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +42 -0
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +116 -1
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +9 -8
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +142 -63
- package/deps/rocksdb/rocksdb/db/db_test.cc +28 -7
- package/deps/rocksdb/rocksdb/db/db_test2.cc +71 -131
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +18 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.h +6 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +25 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +88 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +67 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +5 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +86 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +15 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/flush_job.cc +21 -14
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -7
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +31 -8
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +21 -19
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +42 -12
- package/deps/rocksdb/rocksdb/db/internal_stats.h +1 -0
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +92 -6
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/log_format.h +8 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -51
- package/deps/rocksdb/rocksdb/db/log_reader.h +16 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +125 -4
- package/deps/rocksdb/rocksdb/db/log_writer.cc +32 -2
- package/deps/rocksdb/rocksdb/db/log_writer.h +16 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +17 -46
- package/deps/rocksdb/rocksdb/db/memtable.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +8 -4
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/repair.cc +38 -11
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/table_cache.cc +68 -51
- package/deps/rocksdb/rocksdb/db/table_cache.h +20 -10
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/version_builder.cc +9 -5
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +140 -120
- package/deps/rocksdb/rocksdb/db/version_edit.cc +14 -0
- package/deps/rocksdb/rocksdb/db/version_edit.h +12 -4
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +21 -13
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +26 -16
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +9 -9
- package/deps/rocksdb/rocksdb/db/version_set.cc +292 -96
- package/deps/rocksdb/rocksdb/db/version_set.h +53 -28
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +62 -22
- package/deps/rocksdb/rocksdb/db/version_util.h +5 -4
- package/deps/rocksdb/rocksdb/db/write_batch.cc +3 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +119 -27
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +123 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +7 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +13 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +43 -33
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +29 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +85 -50
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +96 -54
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.cc +122 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +206 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +9 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +9 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +322 -92
- package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -8
- package/deps/rocksdb/rocksdb/env/env_test.cc +31 -0
- package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +14 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +5 -1
- package/deps/rocksdb/rocksdb/file/file_util.cc +3 -3
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +89 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +22 -7
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -2
- package/deps/rocksdb/rocksdb/file/readahead_raf.cc +1 -1
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +154 -74
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +27 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +107 -28
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +137 -152
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +61 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +30 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +33 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +87 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +9 -2
- package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -0
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +78 -42
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +14 -9
- 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.cc +4 -9
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +19 -11
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +211 -555
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +36 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +17 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +10 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +19 -18
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +10 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +35 -2
- package/deps/rocksdb/rocksdb/options/cf_options.h +5 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/options.cc +12 -53
- package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -0
- package/deps/rocksdb/rocksdb/options/options_parser.cc +11 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +32 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +89 -5
- package/deps/rocksdb/rocksdb/port/lang.h +27 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +67 -24
- package/deps/rocksdb/rocksdb/src.mk +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +195 -35
- package/deps/rocksdb/rocksdb/table/block_based/block.h +197 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +71 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +4 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +43 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +36 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +266 -166
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +44 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +63 -56
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +10 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +14 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +918 -2
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -9
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -8
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +18 -23
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +8 -8
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -32
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +7 -8
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +46 -53
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +12 -12
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +26 -23
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +3 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +7 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +5 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +4 -2
- package/deps/rocksdb/rocksdb/table/format.cc +4 -4
- package/deps/rocksdb/rocksdb/table/format.h +1 -1
- package/deps/rocksdb/rocksdb/table/get_context.cc +1 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +33 -22
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +4 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +4 -2
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +1 -1
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +18 -10
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +10 -7
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +4 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +11 -0
- package/deps/rocksdb/rocksdb/table/table_builder.h +14 -5
- package/deps/rocksdb/rocksdb/table/table_properties.cc +2 -0
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -3
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +291 -34
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +5 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +33 -17
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +2 -2
- package/deps/rocksdb/rocksdb/util/compression.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +24 -83
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +7 -9
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +4 -1
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +9 -10
- package/deps/rocksdb/rocksdb/util/math.h +12 -7
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +16 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +46 -2
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +6 -6
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +12 -7
- package/deps/rocksdb/rocksdb/util/stop_watch.h +31 -13
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
- package/deps/rocksdb/rocksdb/util/udt_util.h +77 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +11 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +34 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +15 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +29 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +6 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +10 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +6 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +5 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- /package/deps/rocksdb/rocksdb/memory/{memory_allocator.h → memory_allocator_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/monitoring/{statistics.h → statistics_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/table/block_based/{flush_block_policy.h → flush_block_policy_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/util/{rate_limiter.h → rate_limiter_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/utilities/agg_merge/{agg_merge.h → agg_merge_impl.h} +0 -0
|
@@ -40,6 +40,11 @@ Status DBImplReadOnly::Get(const ReadOptions& read_options,
|
|
|
40
40
|
ColumnFamilyHandle* column_family, const Slice& key,
|
|
41
41
|
PinnableSlice* pinnable_val,
|
|
42
42
|
std::string* timestamp) {
|
|
43
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
44
|
+
return Status::InvalidArgument(
|
|
45
|
+
"Cannot call Get with `ReadOptions::io_activity` != "
|
|
46
|
+
"`Env::IOActivity::kUnknown`");
|
|
47
|
+
}
|
|
43
48
|
assert(pinnable_val != nullptr);
|
|
44
49
|
// TODO: stopwatch DB_GET needed?, perf timer needed?
|
|
45
50
|
PERF_TIMER_GUARD(get_snapshot_time);
|
|
@@ -112,6 +117,11 @@ Status DBImplReadOnly::Get(const ReadOptions& read_options,
|
|
|
112
117
|
|
|
113
118
|
Iterator* DBImplReadOnly::NewIterator(const ReadOptions& read_options,
|
|
114
119
|
ColumnFamilyHandle* column_family) {
|
|
120
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
121
|
+
return NewErrorIterator(Status::InvalidArgument(
|
|
122
|
+
"Cannot call NewIterator with `ReadOptions::io_activity` != "
|
|
123
|
+
"`Env::IOActivity::kUnknown`"));
|
|
124
|
+
}
|
|
115
125
|
assert(column_family);
|
|
116
126
|
if (read_options.timestamp) {
|
|
117
127
|
const Status s = FailIfTsMismatchCf(
|
|
@@ -142,6 +142,13 @@ class DBImplReadOnly : public DBImpl {
|
|
|
142
142
|
return Status::NotSupported("Not supported operation in read only mode.");
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
+
using DB::ClipColumnFamily;
|
|
146
|
+
virtual Status ClipColumnFamily(ColumnFamilyHandle* /*column_family*/,
|
|
147
|
+
const Slice& /*begin*/,
|
|
148
|
+
const Slice& /*end*/) override {
|
|
149
|
+
return Status::NotSupported("Not supported operation in read only mode.");
|
|
150
|
+
}
|
|
151
|
+
|
|
145
152
|
// FIXME: some missing overrides for more "write" functions
|
|
146
153
|
|
|
147
154
|
protected:
|
|
@@ -345,6 +345,11 @@ Status DBImplSecondary::GetImpl(const ReadOptions& read_options,
|
|
|
345
345
|
ColumnFamilyHandle* column_family,
|
|
346
346
|
const Slice& key, PinnableSlice* pinnable_val,
|
|
347
347
|
std::string* timestamp) {
|
|
348
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
349
|
+
return Status::InvalidArgument(
|
|
350
|
+
"Cannot call Get with `ReadOptions::io_activity` != "
|
|
351
|
+
"`Env::IOActivity::kUnknown`");
|
|
352
|
+
}
|
|
348
353
|
assert(pinnable_val != nullptr);
|
|
349
354
|
PERF_CPU_TIMER_GUARD(get_cpu_nanos, immutable_db_options_.clock);
|
|
350
355
|
StopWatch sw(immutable_db_options_.clock, stats_, DB_GET);
|
|
@@ -445,6 +450,11 @@ Iterator* DBImplSecondary::NewIterator(const ReadOptions& read_options,
|
|
|
445
450
|
return NewErrorIterator(Status::NotSupported(
|
|
446
451
|
"ReadTier::kPersistedData is not yet supported in iterators."));
|
|
447
452
|
}
|
|
453
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
454
|
+
return NewErrorIterator(Status::InvalidArgument(
|
|
455
|
+
"Cannot call NewIterator with `ReadOptions::io_activity` != "
|
|
456
|
+
"`Env::IOActivity::kUnknown`"));
|
|
457
|
+
}
|
|
448
458
|
|
|
449
459
|
assert(column_family);
|
|
450
460
|
if (read_options.timestamp) {
|
|
@@ -511,6 +521,11 @@ Status DBImplSecondary::NewIterators(
|
|
|
511
521
|
return Status::NotSupported(
|
|
512
522
|
"ReadTier::kPersistedData is not yet supported in iterators.");
|
|
513
523
|
}
|
|
524
|
+
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
525
|
+
return Status::InvalidArgument(
|
|
526
|
+
"Cannot call NewIterators with `ReadOptions::io_activity` != "
|
|
527
|
+
"`Env::IOActivity::kUnknown`");
|
|
528
|
+
}
|
|
514
529
|
ReadCallback* read_callback = nullptr; // No read callback provided.
|
|
515
530
|
if (iterators == nullptr) {
|
|
516
531
|
return Status::InvalidArgument("iterators not allowed to be nullptr");
|
|
@@ -606,7 +606,9 @@ Status DBImpl::WriteImpl(const WriteOptions& write_options,
|
|
|
606
606
|
log_write_mutex_.Unlock();
|
|
607
607
|
if (status.ok() && synced_wals.IsWalAddition()) {
|
|
608
608
|
InstrumentedMutexLock l(&mutex_);
|
|
609
|
-
|
|
609
|
+
// TODO: plumb Env::IOActivity
|
|
610
|
+
const ReadOptions read_options;
|
|
611
|
+
status = ApplyWALToManifest(read_options, &synced_wals);
|
|
610
612
|
}
|
|
611
613
|
|
|
612
614
|
// Requesting sync with two_write_queues_ is expected to be very rare. We
|
|
@@ -767,7 +769,9 @@ Status DBImpl::PipelinedWriteImpl(const WriteOptions& write_options,
|
|
|
767
769
|
}
|
|
768
770
|
if (w.status.ok() && synced_wals.IsWalAddition()) {
|
|
769
771
|
InstrumentedMutexLock l(&mutex_);
|
|
770
|
-
|
|
772
|
+
// TODO: plumb Env::IOActivity
|
|
773
|
+
const ReadOptions read_options;
|
|
774
|
+
w.status = ApplyWALToManifest(read_options, &synced_wals);
|
|
771
775
|
}
|
|
772
776
|
write_thread_.ExitAsBatchGroupLeader(wal_write_group, w.status);
|
|
773
777
|
}
|
|
@@ -1805,7 +1809,7 @@ Status DBImpl::DelayWrite(uint64_t num_bytes, WriteThread& write_thread,
|
|
|
1805
1809
|
bool delayed = false;
|
|
1806
1810
|
{
|
|
1807
1811
|
StopWatch sw(immutable_db_options_.clock, stats_, WRITE_STALL,
|
|
1808
|
-
&time_delayed);
|
|
1812
|
+
Histograms::HISTOGRAM_ENUM_MAX, &time_delayed);
|
|
1809
1813
|
// To avoid parallel timed delays (bad throttling), only support them
|
|
1810
1814
|
// on the primary write queue.
|
|
1811
1815
|
uint64_t delay;
|
|
@@ -2086,6 +2090,8 @@ void DBImpl::NotifyOnMemTableSealed(ColumnFamilyData* /*cfd*/,
|
|
|
2086
2090
|
// two_write_queues_ is true (This is to simplify the reasoning.)
|
|
2087
2091
|
Status DBImpl::SwitchMemtable(ColumnFamilyData* cfd, WriteContext* context) {
|
|
2088
2092
|
mutex_.AssertHeld();
|
|
2093
|
+
// TODO: plumb Env::IOActivity
|
|
2094
|
+
const ReadOptions read_options;
|
|
2089
2095
|
log::Writer* new_log = nullptr;
|
|
2090
2096
|
MemTable* new_mem = nullptr;
|
|
2091
2097
|
IOStatus io_s;
|
|
@@ -2237,8 +2243,8 @@ Status DBImpl::SwitchMemtable(ColumnFamilyData* cfd, WriteContext* context) {
|
|
|
2237
2243
|
|
|
2238
2244
|
VersionEdit wal_deletion;
|
|
2239
2245
|
wal_deletion.DeleteWalsBefore(min_wal_number_to_keep);
|
|
2240
|
-
s = versions_->LogAndApplyToDefaultColumnFamily(
|
|
2241
|
-
|
|
2246
|
+
s = versions_->LogAndApplyToDefaultColumnFamily(
|
|
2247
|
+
read_options, &wal_deletion, &mutex_, directories_.GetDbDir());
|
|
2242
2248
|
if (!s.ok() && versions_->io_status().IsIOError()) {
|
|
2243
2249
|
s = error_handler_.SetBGError(versions_->io_status(),
|
|
2244
2250
|
BackgroundErrorReason::kManifestWrite);
|
|
@@ -131,6 +131,7 @@ void DBIter::Next() {
|
|
|
131
131
|
assert(valid_);
|
|
132
132
|
assert(status_.ok());
|
|
133
133
|
|
|
134
|
+
PERF_COUNTER_ADD(iter_next_count, 1);
|
|
134
135
|
PERF_CPU_TIMER_GUARD(iter_next_cpu_nanos, clock_);
|
|
135
136
|
// Release temporarily pinned blocks from last operation
|
|
136
137
|
ReleaseTempPinnedData();
|
|
@@ -195,6 +196,7 @@ bool DBIter::SetBlobValueIfNeeded(const Slice& user_key,
|
|
|
195
196
|
|
|
196
197
|
// TODO: consider moving ReadOptions from ArenaWrappedDBIter to DBIter to
|
|
197
198
|
// avoid having to copy options back and forth.
|
|
199
|
+
// TODO: plumb Env::IOActivity
|
|
198
200
|
ReadOptions read_options;
|
|
199
201
|
read_options.read_tier = read_tier_;
|
|
200
202
|
read_options.fill_cache = fill_cache_;
|
|
@@ -637,6 +639,7 @@ void DBIter::Prev() {
|
|
|
637
639
|
assert(valid_);
|
|
638
640
|
assert(status_.ok());
|
|
639
641
|
|
|
642
|
+
PERF_COUNTER_ADD(iter_prev_count, 1);
|
|
640
643
|
PERF_CPU_TIMER_GUARD(iter_prev_cpu_nanos, clock_);
|
|
641
644
|
ReleaseTempPinnedData();
|
|
642
645
|
ResetBlobValue();
|
|
@@ -961,9 +964,6 @@ bool DBIter::FindValueForCurrentKey() {
|
|
|
961
964
|
assert(last_key_entry_type == ikey_.type);
|
|
962
965
|
}
|
|
963
966
|
|
|
964
|
-
Status s;
|
|
965
|
-
s.PermitUncheckedError();
|
|
966
|
-
|
|
967
967
|
switch (last_key_entry_type) {
|
|
968
968
|
case kTypeDeletion:
|
|
969
969
|
case kTypeDeletionWithTimestamp:
|
|
@@ -1040,11 +1040,6 @@ bool DBIter::FindValueForCurrentKey() {
|
|
|
1040
1040
|
std::to_string(static_cast<unsigned int>(last_key_entry_type)));
|
|
1041
1041
|
return false;
|
|
1042
1042
|
}
|
|
1043
|
-
if (!s.ok()) {
|
|
1044
|
-
valid_ = false;
|
|
1045
|
-
status_ = s;
|
|
1046
|
-
return false;
|
|
1047
|
-
}
|
|
1048
1043
|
valid_ = true;
|
|
1049
1044
|
return true;
|
|
1050
1045
|
}
|
|
@@ -1444,6 +1439,7 @@ void DBIter::SetSavedKeyToSeekForPrevTarget(const Slice& target) {
|
|
|
1444
1439
|
}
|
|
1445
1440
|
|
|
1446
1441
|
void DBIter::Seek(const Slice& target) {
|
|
1442
|
+
PERF_COUNTER_ADD(iter_seek_count, 1);
|
|
1447
1443
|
PERF_CPU_TIMER_GUARD(iter_seek_cpu_nanos, clock_);
|
|
1448
1444
|
StopWatch sw(clock_, statistics_, DB_SEEK);
|
|
1449
1445
|
|
|
@@ -1517,6 +1513,7 @@ void DBIter::Seek(const Slice& target) {
|
|
|
1517
1513
|
}
|
|
1518
1514
|
|
|
1519
1515
|
void DBIter::SeekForPrev(const Slice& target) {
|
|
1516
|
+
PERF_COUNTER_ADD(iter_seek_count, 1);
|
|
1520
1517
|
PERF_CPU_TIMER_GUARD(iter_seek_cpu_nanos, clock_);
|
|
1521
1518
|
StopWatch sw(clock_, statistics_, DB_SEEK);
|
|
1522
1519
|
|
|
@@ -1590,6 +1587,7 @@ void DBIter::SeekToFirst() {
|
|
|
1590
1587
|
Seek(*iterate_lower_bound_);
|
|
1591
1588
|
return;
|
|
1592
1589
|
}
|
|
1590
|
+
PERF_COUNTER_ADD(iter_seek_count, 1);
|
|
1593
1591
|
PERF_CPU_TIMER_GUARD(iter_seek_cpu_nanos, clock_);
|
|
1594
1592
|
// Don't use iter_::Seek() if we set a prefix extractor
|
|
1595
1593
|
// because prefix seek will be used.
|
|
@@ -1652,6 +1650,7 @@ void DBIter::SeekToLast() {
|
|
|
1652
1650
|
return;
|
|
1653
1651
|
}
|
|
1654
1652
|
|
|
1653
|
+
PERF_COUNTER_ADD(iter_seek_count, 1);
|
|
1655
1654
|
PERF_CPU_TIMER_GUARD(iter_seek_cpu_nanos, clock_);
|
|
1656
1655
|
// Don't use iter_::Seek() if we set a prefix extractor
|
|
1657
1656
|
// because prefix seek will be used.
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
#include "port/stack_trace.h"
|
|
17
17
|
#include "rocksdb/iostats_context.h"
|
|
18
18
|
#include "rocksdb/perf_context.h"
|
|
19
|
-
#include "table/block_based/
|
|
19
|
+
#include "table/block_based/flush_block_policy_impl.h"
|
|
20
20
|
#include "util/random.h"
|
|
21
21
|
#include "utilities/merge_operators/string_append/stringappend2.h"
|
|
22
22
|
|
|
@@ -30,12 +30,63 @@ class DummyReadCallback : public ReadCallback {
|
|
|
30
30
|
void SetSnapshot(SequenceNumber seq) { max_visible_seq_ = seq; }
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
+
class DBIteratorBaseTest : public DBTestBase {
|
|
34
|
+
public:
|
|
35
|
+
DBIteratorBaseTest()
|
|
36
|
+
: DBTestBase("db_iterator_test", /*env_do_fsync=*/true) {}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
TEST_F(DBIteratorBaseTest, APICallsWithPerfContext) {
|
|
40
|
+
// Set up the DB
|
|
41
|
+
Options options = CurrentOptions();
|
|
42
|
+
DestroyAndReopen(options);
|
|
43
|
+
Random rnd(301);
|
|
44
|
+
for (int i = 1; i <= 3; i++) {
|
|
45
|
+
ASSERT_OK(Put(std::to_string(i), std::to_string(i)));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Setup iterator and PerfContext
|
|
49
|
+
Iterator* iter = db_->NewIterator(ReadOptions());
|
|
50
|
+
std::string key_str = std::to_string(2);
|
|
51
|
+
Slice key(key_str);
|
|
52
|
+
SetPerfLevel(kEnableCount);
|
|
53
|
+
get_perf_context()->Reset();
|
|
54
|
+
|
|
55
|
+
// Initial PerfContext counters
|
|
56
|
+
ASSERT_EQ(0, get_perf_context()->iter_seek_count);
|
|
57
|
+
ASSERT_EQ(0, get_perf_context()->iter_next_count);
|
|
58
|
+
ASSERT_EQ(0, get_perf_context()->iter_prev_count);
|
|
59
|
+
|
|
60
|
+
// Test Seek-related API calls PerfContext counter
|
|
61
|
+
iter->Seek(key);
|
|
62
|
+
iter->SeekToFirst();
|
|
63
|
+
iter->SeekToLast();
|
|
64
|
+
iter->SeekForPrev(key);
|
|
65
|
+
ASSERT_EQ(4, get_perf_context()->iter_seek_count);
|
|
66
|
+
ASSERT_EQ(0, get_perf_context()->iter_next_count);
|
|
67
|
+
ASSERT_EQ(0, get_perf_context()->iter_prev_count);
|
|
68
|
+
|
|
69
|
+
// Test Next() calls PerfContext counter
|
|
70
|
+
iter->Next();
|
|
71
|
+
ASSERT_EQ(4, get_perf_context()->iter_seek_count);
|
|
72
|
+
ASSERT_EQ(1, get_perf_context()->iter_next_count);
|
|
73
|
+
ASSERT_EQ(0, get_perf_context()->iter_prev_count);
|
|
74
|
+
|
|
75
|
+
// Test Prev() calls PerfContext counter
|
|
76
|
+
iter->Prev();
|
|
77
|
+
ASSERT_EQ(4, get_perf_context()->iter_seek_count);
|
|
78
|
+
ASSERT_EQ(1, get_perf_context()->iter_next_count);
|
|
79
|
+
ASSERT_EQ(1, get_perf_context()->iter_prev_count);
|
|
80
|
+
|
|
81
|
+
delete iter;
|
|
82
|
+
}
|
|
83
|
+
|
|
33
84
|
// Test param:
|
|
34
85
|
// bool: whether to pass read_callback to NewIterator().
|
|
35
|
-
class DBIteratorTest : public
|
|
86
|
+
class DBIteratorTest : public DBIteratorBaseTest,
|
|
36
87
|
public testing::WithParamInterface<bool> {
|
|
37
88
|
public:
|
|
38
|
-
DBIteratorTest()
|
|
89
|
+
DBIteratorTest() {}
|
|
39
90
|
|
|
40
91
|
Iterator* NewIterator(const ReadOptions& read_options,
|
|
41
92
|
ColumnFamilyHandle* column_family = nullptr) {
|
|
@@ -358,6 +358,48 @@ TEST_F(DBMergeOperatorTest, MergeOperatorFailsWithMustMerge) {
|
|
|
358
358
|
}
|
|
359
359
|
}
|
|
360
360
|
|
|
361
|
+
TEST_F(DBMergeOperatorTest, DataBlockBinaryAndHash) {
|
|
362
|
+
// Basic test to check that merge operator works with data block index type
|
|
363
|
+
// DataBlockBinaryAndHash.
|
|
364
|
+
Options options;
|
|
365
|
+
options.create_if_missing = true;
|
|
366
|
+
options.merge_operator.reset(new TestPutOperator());
|
|
367
|
+
options.env = env_;
|
|
368
|
+
BlockBasedTableOptions table_options;
|
|
369
|
+
table_options.block_restart_interval = 16;
|
|
370
|
+
table_options.data_block_index_type =
|
|
371
|
+
BlockBasedTableOptions::DataBlockIndexType::kDataBlockBinaryAndHash;
|
|
372
|
+
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
373
|
+
DestroyAndReopen(options);
|
|
374
|
+
|
|
375
|
+
const int kNumKeys = 100;
|
|
376
|
+
for (int i = 0; i < kNumKeys; ++i) {
|
|
377
|
+
ASSERT_OK(db_->Merge(WriteOptions(), Key(i), std::to_string(i)));
|
|
378
|
+
}
|
|
379
|
+
ASSERT_OK(Flush());
|
|
380
|
+
std::string value;
|
|
381
|
+
for (int i = 0; i < kNumKeys; ++i) {
|
|
382
|
+
ASSERT_OK(db_->Get(ReadOptions(), Key(i), &value));
|
|
383
|
+
ASSERT_EQ(std::to_string(i), value);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
std::vector<const Snapshot*> snapshots;
|
|
387
|
+
for (int i = 0; i < kNumKeys; ++i) {
|
|
388
|
+
ASSERT_OK(db_->Delete(WriteOptions(), Key(i)));
|
|
389
|
+
for (int j = 0; j < 3; ++j) {
|
|
390
|
+
ASSERT_OK(db_->Merge(WriteOptions(), Key(i), std::to_string(i * 3 + j)));
|
|
391
|
+
snapshots.push_back(db_->GetSnapshot());
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
ASSERT_OK(Flush());
|
|
395
|
+
for (int i = 0; i < kNumKeys; ++i) {
|
|
396
|
+
ASSERT_OK(db_->Get(ReadOptions(), Key(i), &value));
|
|
397
|
+
ASSERT_EQ(std::to_string(i * 3 + 2), value);
|
|
398
|
+
}
|
|
399
|
+
for (auto snapshot : snapshots) {
|
|
400
|
+
db_->ReleaseSnapshot(snapshot);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
361
403
|
|
|
362
404
|
class MergeOperatorPinningTest : public DBMergeOperatorTest,
|
|
363
405
|
public testing::WithParamInterface<bool> {
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
#include "test_util/sync_point.h"
|
|
23
23
|
#include "test_util/testutil.h"
|
|
24
24
|
#include "util/random.h"
|
|
25
|
+
#include "utilities/fault_injection_fs.h"
|
|
25
26
|
|
|
26
27
|
namespace ROCKSDB_NAMESPACE {
|
|
27
28
|
|
|
@@ -910,6 +911,7 @@ TEST_F(DBOptionsTest, SetFIFOCompactionOptions) {
|
|
|
910
911
|
options.compression = kNoCompression;
|
|
911
912
|
options.create_if_missing = true;
|
|
912
913
|
options.compaction_options_fifo.allow_compaction = false;
|
|
914
|
+
options.num_levels = 1;
|
|
913
915
|
env_->SetMockSleep();
|
|
914
916
|
options.env = env_;
|
|
915
917
|
|
|
@@ -1009,6 +1011,24 @@ TEST_F(DBOptionsTest, SetFIFOCompactionOptions) {
|
|
|
1009
1011
|
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1010
1012
|
ASSERT_GE(NumTableFilesAtLevel(0), 1);
|
|
1011
1013
|
ASSERT_LE(NumTableFilesAtLevel(0), 5);
|
|
1014
|
+
|
|
1015
|
+
// Test dynamically setting `file_temperature_age_thresholds`
|
|
1016
|
+
ASSERT_TRUE(
|
|
1017
|
+
dbfull()
|
|
1018
|
+
->GetOptions()
|
|
1019
|
+
.compaction_options_fifo.file_temperature_age_thresholds.empty());
|
|
1020
|
+
ASSERT_OK(dbfull()->SetOptions({{"compaction_options_fifo",
|
|
1021
|
+
"{file_temperature_age_thresholds={{age=10;"
|
|
1022
|
+
"temperature=kWarm}:{age=30000;"
|
|
1023
|
+
"temperature=kCold}}}"}}));
|
|
1024
|
+
auto opts = dbfull()->GetOptions();
|
|
1025
|
+
const auto& fifo_temp_opt =
|
|
1026
|
+
opts.compaction_options_fifo.file_temperature_age_thresholds;
|
|
1027
|
+
ASSERT_EQ(fifo_temp_opt.size(), 2);
|
|
1028
|
+
ASSERT_EQ(fifo_temp_opt[0].temperature, Temperature::kWarm);
|
|
1029
|
+
ASSERT_EQ(fifo_temp_opt[0].age, 10);
|
|
1030
|
+
ASSERT_EQ(fifo_temp_opt[1].temperature, Temperature::kCold);
|
|
1031
|
+
ASSERT_EQ(fifo_temp_opt[1].age, 30000);
|
|
1012
1032
|
}
|
|
1013
1033
|
|
|
1014
1034
|
TEST_F(DBOptionsTest, CompactionReadaheadSizeChange) {
|
|
@@ -1043,6 +1063,7 @@ TEST_F(DBOptionsTest, FIFOTtlBackwardCompatible) {
|
|
|
1043
1063
|
options.write_buffer_size = 10 << 10; // 10KB
|
|
1044
1064
|
options.create_if_missing = true;
|
|
1045
1065
|
options.env = CurrentOptions().env;
|
|
1066
|
+
options.num_levels = 1;
|
|
1046
1067
|
|
|
1047
1068
|
ASSERT_OK(TryReopen(options));
|
|
1048
1069
|
|
|
@@ -1063,12 +1084,19 @@ TEST_F(DBOptionsTest, FIFOTtlBackwardCompatible) {
|
|
|
1063
1084
|
// ttl under compaction_options_fifo.
|
|
1064
1085
|
ASSERT_OK(dbfull()->SetOptions(
|
|
1065
1086
|
{{"compaction_options_fifo",
|
|
1066
|
-
"{allow_compaction=true;max_table_files_size=1024;ttl=731;
|
|
1087
|
+
"{allow_compaction=true;max_table_files_size=1024;ttl=731;file_"
|
|
1088
|
+
"temperature_age_thresholds={temperature=kCold;age=12345}}"},
|
|
1067
1089
|
{"ttl", "60"}}));
|
|
1068
1090
|
ASSERT_EQ(dbfull()->GetOptions().compaction_options_fifo.allow_compaction,
|
|
1069
1091
|
true);
|
|
1070
1092
|
ASSERT_EQ(dbfull()->GetOptions().compaction_options_fifo.max_table_files_size,
|
|
1071
1093
|
1024);
|
|
1094
|
+
auto opts = dbfull()->GetOptions();
|
|
1095
|
+
const auto& file_temp_age =
|
|
1096
|
+
opts.compaction_options_fifo.file_temperature_age_thresholds;
|
|
1097
|
+
ASSERT_EQ(file_temp_age.size(), 1);
|
|
1098
|
+
ASSERT_EQ(file_temp_age[0].temperature, Temperature::kCold);
|
|
1099
|
+
ASSERT_EQ(file_temp_age[0].age, 12345);
|
|
1072
1100
|
ASSERT_EQ(dbfull()->GetOptions().ttl, 60);
|
|
1073
1101
|
|
|
1074
1102
|
// Put ttl as the first option inside compaction_options_fifo. That works as
|
|
@@ -1081,6 +1109,9 @@ TEST_F(DBOptionsTest, FIFOTtlBackwardCompatible) {
|
|
|
1081
1109
|
true);
|
|
1082
1110
|
ASSERT_EQ(dbfull()->GetOptions().compaction_options_fifo.max_table_files_size,
|
|
1083
1111
|
1024);
|
|
1112
|
+
ASSERT_EQ(file_temp_age.size(), 1);
|
|
1113
|
+
ASSERT_EQ(file_temp_age[0].temperature, Temperature::kCold);
|
|
1114
|
+
ASSERT_EQ(file_temp_age[0].age, 12345);
|
|
1084
1115
|
ASSERT_EQ(dbfull()->GetOptions().ttl, 191);
|
|
1085
1116
|
}
|
|
1086
1117
|
|
|
@@ -1206,6 +1237,90 @@ TEST_F(DBOptionsTest, BottommostCompressionOptsWithFallbackType) {
|
|
|
1206
1237
|
ASSERT_EQ(kBottommostCompressionLevel, compression_opt_used.level);
|
|
1207
1238
|
}
|
|
1208
1239
|
|
|
1240
|
+
TEST_F(DBOptionsTest, FIFOTemperatureAgeThresholdValidation) {
|
|
1241
|
+
Options options = CurrentOptions();
|
|
1242
|
+
Destroy(options);
|
|
1243
|
+
|
|
1244
|
+
options.num_levels = 1;
|
|
1245
|
+
options.compaction_style = kCompactionStyleFIFO;
|
|
1246
|
+
options.max_open_files = -1;
|
|
1247
|
+
// elements are not sorted
|
|
1248
|
+
// During DB open
|
|
1249
|
+
options.compaction_options_fifo.file_temperature_age_thresholds.push_back(
|
|
1250
|
+
{Temperature::kCold, 1000});
|
|
1251
|
+
options.compaction_options_fifo.file_temperature_age_thresholds.push_back(
|
|
1252
|
+
{Temperature::kWarm, 500});
|
|
1253
|
+
Status s = TryReopen(options);
|
|
1254
|
+
ASSERT_TRUE(s.IsNotSupported());
|
|
1255
|
+
ASSERT_TRUE(std::strstr(
|
|
1256
|
+
s.getState(),
|
|
1257
|
+
"Option file_temperature_age_thresholds requires elements to be sorted "
|
|
1258
|
+
"in increasing order with respect to `age` field."));
|
|
1259
|
+
// Dynamically set option
|
|
1260
|
+
options.compaction_options_fifo.file_temperature_age_thresholds.pop_back();
|
|
1261
|
+
ASSERT_OK(TryReopen(options));
|
|
1262
|
+
s = db_->SetOptions({{"compaction_options_fifo",
|
|
1263
|
+
"{file_temperature_age_thresholds={{temperature=kCold;"
|
|
1264
|
+
"age=1000000}:{temperature=kWarm;age=1}}}"}});
|
|
1265
|
+
ASSERT_TRUE(s.IsNotSupported());
|
|
1266
|
+
ASSERT_TRUE(std::strstr(
|
|
1267
|
+
s.getState(),
|
|
1268
|
+
"Option file_temperature_age_thresholds requires elements to be sorted "
|
|
1269
|
+
"in increasing order with respect to `age` field."));
|
|
1270
|
+
|
|
1271
|
+
// not single level
|
|
1272
|
+
// During DB open
|
|
1273
|
+
options.num_levels = 2;
|
|
1274
|
+
s = TryReopen(options);
|
|
1275
|
+
ASSERT_TRUE(s.IsNotSupported());
|
|
1276
|
+
ASSERT_TRUE(std::strstr(s.getState(),
|
|
1277
|
+
"Option file_temperature_age_thresholds is only "
|
|
1278
|
+
"supported when num_levels = 1."));
|
|
1279
|
+
// Dynamically set option
|
|
1280
|
+
options.compaction_options_fifo.file_temperature_age_thresholds.clear();
|
|
1281
|
+
DestroyAndReopen(options);
|
|
1282
|
+
s = db_->SetOptions(
|
|
1283
|
+
{{"compaction_options_fifo",
|
|
1284
|
+
"{file_temperature_age_thresholds={temperature=kCold;age=1000}}"}});
|
|
1285
|
+
ASSERT_TRUE(s.IsNotSupported());
|
|
1286
|
+
ASSERT_TRUE(std::strstr(s.getState(),
|
|
1287
|
+
"Option file_temperature_age_thresholds is only "
|
|
1288
|
+
"supported when num_levels = 1."));
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
TEST_F(DBOptionsTest, TempOptionsFailTest) {
|
|
1292
|
+
std::shared_ptr<FaultInjectionTestFS> fs;
|
|
1293
|
+
std::unique_ptr<Env> env;
|
|
1294
|
+
|
|
1295
|
+
fs.reset(new FaultInjectionTestFS(env_->GetFileSystem()));
|
|
1296
|
+
env = NewCompositeEnv(fs);
|
|
1297
|
+
Options options = CurrentOptions();
|
|
1298
|
+
options.env = env.get();
|
|
1299
|
+
|
|
1300
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
1301
|
+
"PersistRocksDBOptions:create",
|
|
1302
|
+
[&](void* /*arg*/) { fs->SetFilesystemActive(false); });
|
|
1303
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
1304
|
+
"PersistRocksDBOptions:written",
|
|
1305
|
+
[&](void* /*arg*/) { fs->SetFilesystemActive(true); });
|
|
1306
|
+
|
|
1307
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
1308
|
+
TryReopen(options);
|
|
1309
|
+
SyncPoint::GetInstance()->DisableProcessing();
|
|
1310
|
+
|
|
1311
|
+
std::vector<std::string> filenames;
|
|
1312
|
+
ASSERT_OK(env_->GetChildren(dbname_, &filenames));
|
|
1313
|
+
uint64_t number;
|
|
1314
|
+
FileType type;
|
|
1315
|
+
bool found_temp_file = false;
|
|
1316
|
+
for (size_t i = 0; i < filenames.size(); i++) {
|
|
1317
|
+
if (ParseFileName(filenames[i], &number, &type) && type == kTempFile) {
|
|
1318
|
+
found_temp_file = true;
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
ASSERT_FALSE(found_temp_file);
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1209
1324
|
} // namespace ROCKSDB_NAMESPACE
|
|
1210
1325
|
|
|
1211
1326
|
int main(int argc, char** argv) {
|
|
@@ -2333,8 +2333,9 @@ TEST_F(DBPropertiesTest, TableMetaIndexKeys) {
|
|
|
2333
2333
|
|
|
2334
2334
|
// Read metaindex
|
|
2335
2335
|
BlockContents bc;
|
|
2336
|
-
|
|
2337
|
-
|
|
2336
|
+
const ReadOptions read_options;
|
|
2337
|
+
ASSERT_OK(ReadMetaIndexBlockInFile(
|
|
2338
|
+
r.get(), file_size, 0U, ImmutableOptions(options), read_options, &bc));
|
|
2338
2339
|
Block metaindex_block(std::move(bc));
|
|
2339
2340
|
std::unique_ptr<InternalIterator> meta_iter;
|
|
2340
2341
|
meta_iter.reset(metaindex_block.NewMetaIterator());
|
|
@@ -235,8 +235,9 @@ TEST_P(DBRateLimiterOnReadTest, VerifyChecksum) {
|
|
|
235
235
|
ASSERT_EQ(0, options_.rate_limiter->GetTotalRequests(Env::IO_USER));
|
|
236
236
|
|
|
237
237
|
ASSERT_OK(db_->VerifyChecksum(GetReadOptions()));
|
|
238
|
-
//
|
|
239
|
-
|
|
238
|
+
// There are 3 reads per file: ReadMetaIndexBlock,
|
|
239
|
+
// VerifyChecksumInMetaBlocks, VerifyChecksumInBlocks
|
|
240
|
+
int expected = kNumFiles * 3;
|
|
240
241
|
ASSERT_EQ(expected, options_.rate_limiter->GetTotalRequests(Env::IO_USER));
|
|
241
242
|
}
|
|
242
243
|
|
|
@@ -743,7 +743,7 @@ TEST_P(DBSSTTestRateLimit, RateLimitedDelete) {
|
|
|
743
743
|
|
|
744
744
|
// Compaction will move the 4 files in L0 to trash and create 1 L1 file
|
|
745
745
|
ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
|
746
|
-
ASSERT_OK(dbfull()->TEST_WaitForCompact(
|
|
746
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
747
747
|
ASSERT_EQ("0,1", FilesPerLevel(0));
|
|
748
748
|
|
|
749
749
|
uint64_t delete_start_time = env_->NowMicros();
|
|
@@ -810,11 +810,12 @@ TEST_F(DBSSTTest, RateLimitedWALDelete) {
|
|
|
810
810
|
// We created 4 sst files in L0
|
|
811
811
|
ASSERT_EQ("4", FilesPerLevel(0));
|
|
812
812
|
|
|
813
|
-
// Compaction will move the 4 files in L0 to trash and create 1 L1 file
|
|
813
|
+
// Compaction will move the 4 files in L0 to trash and create 1 L1 file.
|
|
814
|
+
// Use kForceOptimized to not rewrite the new L1 file.
|
|
814
815
|
CompactRangeOptions cro;
|
|
815
|
-
cro.bottommost_level_compaction = BottommostLevelCompaction::
|
|
816
|
+
cro.bottommost_level_compaction = BottommostLevelCompaction::kForceOptimized;
|
|
816
817
|
ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
|
|
817
|
-
ASSERT_OK(dbfull()->TEST_WaitForCompact(
|
|
818
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
818
819
|
ASSERT_EQ("0,1", FilesPerLevel(0));
|
|
819
820
|
|
|
820
821
|
sfm->WaitForEmptyTrash();
|
|
@@ -1223,7 +1224,7 @@ TEST_F(DBSSTTest, CancellingCompactionsWorks) {
|
|
|
1223
1224
|
ASSERT_OK(Put(Key(i), rnd.RandomString(50)));
|
|
1224
1225
|
}
|
|
1225
1226
|
ASSERT_OK(Flush());
|
|
1226
|
-
ASSERT_OK(dbfull()->TEST_WaitForCompact(
|
|
1227
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1227
1228
|
|
|
1228
1229
|
// Because we set a callback in CancelledCompaction, we actually
|
|
1229
1230
|
// let the compaction run
|
|
@@ -1280,7 +1281,7 @@ TEST_F(DBSSTTest, CancellingManualCompactionsWorks) {
|
|
|
1280
1281
|
.IsCompactionTooLarge());
|
|
1281
1282
|
|
|
1282
1283
|
// Wait for manual compaction to get scheduled and finish
|
|
1283
|
-
ASSERT_OK(dbfull()->TEST_WaitForCompact(
|
|
1284
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1284
1285
|
|
|
1285
1286
|
ASSERT_EQ(sfm->GetCompactionsReservedSize(), 0);
|
|
1286
1287
|
// Make sure the stat is bumped
|
|
@@ -1296,7 +1297,7 @@ TEST_F(DBSSTTest, CancellingManualCompactionsWorks) {
|
|
|
1296
1297
|
.IsCompactionTooLarge());
|
|
1297
1298
|
|
|
1298
1299
|
// Wait for manual compaction to get scheduled and finish
|
|
1299
|
-
ASSERT_OK(dbfull()->TEST_WaitForCompact(
|
|
1300
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1300
1301
|
|
|
1301
1302
|
ASSERT_EQ(dbfull()->immutable_db_options().statistics.get()->getTickerCount(
|
|
1302
1303
|
COMPACTION_CANCELLED),
|
|
@@ -1313,7 +1314,7 @@ TEST_F(DBSSTTest, CancellingManualCompactionsWorks) {
|
|
|
1313
1314
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
|
|
1314
1315
|
ASSERT_OK(dbfull()->CompactFiles(ROCKSDB_NAMESPACE::CompactionOptions(),
|
|
1315
1316
|
l0_files, 0));
|
|
1316
|
-
ASSERT_OK(dbfull()->TEST_WaitForCompact(
|
|
1317
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1317
1318
|
|
|
1318
1319
|
ASSERT_EQ(sfm->GetCompactionsReservedSize(), 0);
|
|
1319
1320
|
ASSERT_GT(completed_compactions, 0);
|