@nxtedition/rocksdb 6.0.0 → 6.0.3
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/BUILDING.md +18 -0
- package/binding.cc +16 -17
- package/binding.gyp +2 -2
- package/deps/rocksdb/build_version.cc +4 -10
- package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
- package/deps/rocksdb/rocksdb/Makefile +73 -91
- package/deps/rocksdb/rocksdb/TARGETS +27 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
- package/deps/rocksdb/rocksdb/common.mk +30 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
- package/deps/rocksdb/rocksdb/db/c.cc +71 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
- package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
- package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
- package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
- package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
- package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
- package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
- package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
- package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
- package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
- package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
- package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
- package/deps/rocksdb/rocksdb/env/env.cc +0 -60
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
- package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
- package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
- package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
- package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
- package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
- package/deps/rocksdb/rocksdb/src.mk +6 -1
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/format.cc +22 -20
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
- package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
- package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
- package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
- package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
- package/deps/rocksdb/rocksdb/util/compression.h +56 -7
- package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
- package/deps/rocksdb/rocksdb/util/heap.h +5 -3
- package/deps/rocksdb/rocksdb/util/random.cc +1 -5
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
- package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
- package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +47 -37
- package/package-lock.json +23687 -0
- package/package.json +2 -30
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/liburing/liburing/README +0 -46
- package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
- package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
- package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
- package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
- package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
- package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
- package/deps/liburing/liburing/test/Makefile +0 -312
- package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
- package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
- package/deps/liburing/liburing/test/accept-link.c +0 -251
- package/deps/liburing/liburing/test/accept-reuse.c +0 -164
- package/deps/liburing/liburing/test/accept-test.c +0 -79
- package/deps/liburing/liburing/test/accept.c +0 -476
- package/deps/liburing/liburing/test/across-fork.c +0 -283
- package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
- package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
- package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
- package/deps/liburing/liburing/test/close-opath.c +0 -122
- package/deps/liburing/liburing/test/config +0 -10
- package/deps/liburing/liburing/test/connect.c +0 -398
- package/deps/liburing/liburing/test/cq-full.c +0 -96
- package/deps/liburing/liburing/test/cq-overflow.c +0 -294
- package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
- package/deps/liburing/liburing/test/cq-ready.c +0 -94
- package/deps/liburing/liburing/test/cq-size.c +0 -58
- package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
- package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
- package/deps/liburing/liburing/test/defer.c +0 -307
- package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
- package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
- package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
- package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
- package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
- package/deps/liburing/liburing/test/eventfd.c +0 -112
- package/deps/liburing/liburing/test/fadvise.c +0 -202
- package/deps/liburing/liburing/test/fallocate.c +0 -249
- package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
- package/deps/liburing/liburing/test/file-register.c +0 -843
- package/deps/liburing/liburing/test/file-update.c +0 -173
- package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
- package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
- package/deps/liburing/liburing/test/fixed-link.c +0 -90
- package/deps/liburing/liburing/test/fsync.c +0 -224
- package/deps/liburing/liburing/test/hardlink.c +0 -136
- package/deps/liburing/liburing/test/helpers.c +0 -135
- package/deps/liburing/liburing/test/helpers.h +0 -67
- package/deps/liburing/liburing/test/io-cancel.c +0 -537
- package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
- package/deps/liburing/liburing/test/io_uring_register.c +0 -664
- package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
- package/deps/liburing/liburing/test/iopoll.c +0 -366
- package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
- package/deps/liburing/liburing/test/lfs-openat.c +0 -273
- package/deps/liburing/liburing/test/link-timeout.c +0 -1107
- package/deps/liburing/liburing/test/link.c +0 -496
- package/deps/liburing/liburing/test/link_drain.c +0 -229
- package/deps/liburing/liburing/test/madvise.c +0 -195
- package/deps/liburing/liburing/test/mkdir.c +0 -108
- package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
- package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
- package/deps/liburing/liburing/test/nop.c +0 -115
- package/deps/liburing/liburing/test/open-close.c +0 -146
- package/deps/liburing/liburing/test/openat2.c +0 -240
- package/deps/liburing/liburing/test/personality.c +0 -204
- package/deps/liburing/liburing/test/pipe-eof.c +0 -81
- package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
- package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
- package/deps/liburing/liburing/test/poll-cancel.c +0 -135
- package/deps/liburing/liburing/test/poll-link.c +0 -227
- package/deps/liburing/liburing/test/poll-many.c +0 -208
- package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
- package/deps/liburing/liburing/test/poll-ring.c +0 -48
- package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
- package/deps/liburing/liburing/test/poll.c +0 -109
- package/deps/liburing/liburing/test/probe.c +0 -137
- package/deps/liburing/liburing/test/read-write.c +0 -876
- package/deps/liburing/liburing/test/register-restrictions.c +0 -633
- package/deps/liburing/liburing/test/rename.c +0 -134
- package/deps/liburing/liburing/test/ring-leak.c +0 -173
- package/deps/liburing/liburing/test/ring-leak2.c +0 -249
- package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
- package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
- package/deps/liburing/liburing/test/runtests.sh +0 -170
- package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
- package/deps/liburing/liburing/test/self.c +0 -91
- package/deps/liburing/liburing/test/send_recv.c +0 -291
- package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
- package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
- package/deps/liburing/liburing/test/shared-wq.c +0 -84
- package/deps/liburing/liburing/test/short-read.c +0 -75
- package/deps/liburing/liburing/test/shutdown.c +0 -163
- package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
- package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
- package/deps/liburing/liburing/test/socket-rw.c +0 -147
- package/deps/liburing/liburing/test/splice.c +0 -511
- package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
- package/deps/liburing/liburing/test/sq-full.c +0 -45
- package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
- package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
- package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
- package/deps/liburing/liburing/test/sq-space_left.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
- package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
- package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
- package/deps/liburing/liburing/test/statx.c +0 -172
- package/deps/liburing/liburing/test/stdout.c +0 -232
- package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
- package/deps/liburing/liburing/test/submit-reuse.c +0 -239
- package/deps/liburing/liburing/test/symlink.c +0 -116
- package/deps/liburing/liburing/test/teardowns.c +0 -58
- package/deps/liburing/liburing/test/thread-exit.c +0 -131
- package/deps/liburing/liburing/test/timeout-new.c +0 -246
- package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
- package/deps/liburing/liburing/test/timeout.c +0 -1354
- package/deps/liburing/liburing/test/unlink.c +0 -111
- package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
- package/deps/rocksdb/rocksdb/README.md +0 -32
- package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
- package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
- package/deps/rocksdb/rocksdb/port/README +0 -10
- package/deps/rocksdb/rocksdb/python.mk +0 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
- package/prebuilds/linux-arm64/node.napi.node +0 -0
|
@@ -112,7 +112,7 @@ Status UpdateManifestForFilesState(
|
|
|
112
112
|
lf->oldest_blob_file_number,
|
|
113
113
|
lf->oldest_ancester_time, lf->file_creation_time,
|
|
114
114
|
lf->file_checksum, lf->file_checksum_func_name,
|
|
115
|
-
lf->min_timestamp, lf->max_timestamp);
|
|
115
|
+
lf->min_timestamp, lf->max_timestamp, lf->unique_id);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
} else {
|
|
@@ -91,7 +91,7 @@ class ExternalSSTFileBasicTest
|
|
|
91
91
|
bool write_global_seqno, bool verify_checksums_before_ingest,
|
|
92
92
|
std::map<std::string, std::string>* true_data) {
|
|
93
93
|
assert(value_types.size() == 1 || keys.size() == value_types.size());
|
|
94
|
-
std::string file_path = sst_files_dir_ +
|
|
94
|
+
std::string file_path = sst_files_dir_ + std::to_string(file_id);
|
|
95
95
|
SstFileWriter sst_file_writer(EnvOptions(), options);
|
|
96
96
|
|
|
97
97
|
Status s = sst_file_writer.Open(file_path);
|
|
@@ -123,7 +123,7 @@ class ExternalSSTFileBasicTest
|
|
|
123
123
|
}
|
|
124
124
|
for (size_t i = 0; i < keys.size(); i++) {
|
|
125
125
|
std::string key = Key(keys[i]);
|
|
126
|
-
std::string value = Key(keys[i]) +
|
|
126
|
+
std::string value = Key(keys[i]) + std::to_string(file_id);
|
|
127
127
|
ValueType value_type =
|
|
128
128
|
(value_types.size() == 1 ? value_types[0] : value_types[i]);
|
|
129
129
|
switch (value_type) {
|
|
@@ -190,10 +190,10 @@ class ExternalSSTFileBasicTest
|
|
|
190
190
|
#ifndef ROCKSDB_LITE
|
|
191
191
|
uint64_t GetSstSizeHelper(Temperature temperature) {
|
|
192
192
|
std::string prop;
|
|
193
|
-
EXPECT_TRUE(
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
193
|
+
EXPECT_TRUE(dbfull()->GetProperty(
|
|
194
|
+
DB::Properties::kLiveSstFilesSizeAtTemperature +
|
|
195
|
+
std::to_string(static_cast<uint8_t>(temperature)),
|
|
196
|
+
&prop));
|
|
197
197
|
return static_cast<uint64_t>(std::atoi(prop.c_str()));
|
|
198
198
|
}
|
|
199
199
|
#endif // ROCKSDB_LITE
|
|
@@ -1184,7 +1184,7 @@ TEST_F(ExternalSSTFileBasicTest, SyncFailure) {
|
|
|
1184
1184
|
std::unique_ptr<SstFileWriter> sst_file_writer(
|
|
1185
1185
|
new SstFileWriter(EnvOptions(), sst_file_writer_options));
|
|
1186
1186
|
std::string file_name =
|
|
1187
|
-
sst_files_dir_ + "sync_failure_test_" +
|
|
1187
|
+
sst_files_dir_ + "sync_failure_test_" + std::to_string(i) + ".sst";
|
|
1188
1188
|
ASSERT_OK(sst_file_writer->Open(file_name));
|
|
1189
1189
|
ASSERT_OK(sst_file_writer->Put("bar", "v2"));
|
|
1190
1190
|
ASSERT_OK(sst_file_writer->Finish());
|
|
@@ -1514,13 +1514,13 @@ TEST_P(ExternalSSTFileBasicTest, IngestFileWithFirstByteTampered) {
|
|
|
1514
1514
|
EnvOptions env_options;
|
|
1515
1515
|
do {
|
|
1516
1516
|
Options options = CurrentOptions();
|
|
1517
|
-
std::string file_path = sst_files_dir_ +
|
|
1517
|
+
std::string file_path = sst_files_dir_ + std::to_string(file_id++);
|
|
1518
1518
|
SstFileWriter sst_file_writer(env_options, options);
|
|
1519
1519
|
Status s = sst_file_writer.Open(file_path);
|
|
1520
1520
|
ASSERT_OK(s);
|
|
1521
1521
|
for (int i = 0; i != 100; ++i) {
|
|
1522
1522
|
std::string key = Key(i);
|
|
1523
|
-
std::string value = Key(i) +
|
|
1523
|
+
std::string value = Key(i) + std::to_string(0);
|
|
1524
1524
|
ASSERT_OK(sst_file_writer.Put(key, value));
|
|
1525
1525
|
}
|
|
1526
1526
|
ASSERT_OK(sst_file_writer.Finish());
|
|
@@ -1585,14 +1585,14 @@ TEST_P(ExternalSSTFileBasicTest, IngestExternalFileWithCorruptedPropsBlock) {
|
|
|
1585
1585
|
int file_id = 0;
|
|
1586
1586
|
Random64 rand(time(nullptr));
|
|
1587
1587
|
do {
|
|
1588
|
-
std::string file_path = sst_files_dir_ +
|
|
1588
|
+
std::string file_path = sst_files_dir_ + std::to_string(file_id++);
|
|
1589
1589
|
Options options = CurrentOptions();
|
|
1590
1590
|
SstFileWriter sst_file_writer(EnvOptions(), options);
|
|
1591
1591
|
Status s = sst_file_writer.Open(file_path);
|
|
1592
1592
|
ASSERT_OK(s);
|
|
1593
1593
|
for (int i = 0; i != 100; ++i) {
|
|
1594
1594
|
std::string key = Key(i);
|
|
1595
|
-
std::string value = Key(i) +
|
|
1595
|
+
std::string value = Key(i) + std::to_string(0);
|
|
1596
1596
|
ASSERT_OK(sst_file_writer.Put(key, value));
|
|
1597
1597
|
}
|
|
1598
1598
|
ASSERT_OK(sst_file_writer.Finish());
|
|
@@ -1799,7 +1799,7 @@ TEST_F(ExternalSSTFileBasicTest, IngestWithTemperature) {
|
|
|
1799
1799
|
TEST_F(ExternalSSTFileBasicTest, FailIfNotBottommostLevel) {
|
|
1800
1800
|
Options options = GetDefaultOptions();
|
|
1801
1801
|
|
|
1802
|
-
std::string file_path = sst_files_dir_ +
|
|
1802
|
+
std::string file_path = sst_files_dir_ + std::to_string(1);
|
|
1803
1803
|
SstFileWriter sfw(EnvOptions(), options);
|
|
1804
1804
|
|
|
1805
1805
|
ASSERT_OK(sfw.Open(file_path));
|
|
@@ -1844,6 +1844,85 @@ TEST_F(ExternalSSTFileBasicTest, FailIfNotBottommostLevel) {
|
|
|
1844
1844
|
}
|
|
1845
1845
|
}
|
|
1846
1846
|
|
|
1847
|
+
TEST_F(ExternalSSTFileBasicTest, VerifyChecksum) {
|
|
1848
|
+
const std::string kPutVal = "put_val";
|
|
1849
|
+
const std::string kIngestedVal = "ingested_val";
|
|
1850
|
+
|
|
1851
|
+
ASSERT_OK(Put("k", kPutVal, WriteOptions()));
|
|
1852
|
+
ASSERT_OK(Flush());
|
|
1853
|
+
|
|
1854
|
+
std::string external_file = sst_files_dir_ + "/file_to_ingest.sst";
|
|
1855
|
+
{
|
|
1856
|
+
SstFileWriter sst_file_writer{EnvOptions(), CurrentOptions()};
|
|
1857
|
+
|
|
1858
|
+
ASSERT_OK(sst_file_writer.Open(external_file));
|
|
1859
|
+
ASSERT_OK(sst_file_writer.Put("k", kIngestedVal));
|
|
1860
|
+
ASSERT_OK(sst_file_writer.Finish());
|
|
1861
|
+
}
|
|
1862
|
+
|
|
1863
|
+
ASSERT_OK(db_->IngestExternalFile(db_->DefaultColumnFamily(), {external_file},
|
|
1864
|
+
IngestExternalFileOptions()));
|
|
1865
|
+
|
|
1866
|
+
ASSERT_OK(db_->VerifyChecksum());
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
TEST_F(ExternalSSTFileBasicTest, VerifySstUniqueId) {
|
|
1870
|
+
const std::string kPutVal = "put_val";
|
|
1871
|
+
const std::string kIngestedVal = "ingested_val";
|
|
1872
|
+
|
|
1873
|
+
ASSERT_OK(Put("k", kPutVal, WriteOptions()));
|
|
1874
|
+
ASSERT_OK(Flush());
|
|
1875
|
+
|
|
1876
|
+
std::string external_file = sst_files_dir_ + "/file_to_ingest.sst";
|
|
1877
|
+
{
|
|
1878
|
+
SstFileWriter sst_file_writer{EnvOptions(), CurrentOptions()};
|
|
1879
|
+
|
|
1880
|
+
ASSERT_OK(sst_file_writer.Open(external_file));
|
|
1881
|
+
ASSERT_OK(sst_file_writer.Put("k", kIngestedVal));
|
|
1882
|
+
ASSERT_OK(sst_file_writer.Finish());
|
|
1883
|
+
}
|
|
1884
|
+
|
|
1885
|
+
ASSERT_OK(db_->IngestExternalFile(db_->DefaultColumnFamily(), {external_file},
|
|
1886
|
+
IngestExternalFileOptions()));
|
|
1887
|
+
auto options = CurrentOptions();
|
|
1888
|
+
options.verify_sst_unique_id_in_manifest = true;
|
|
1889
|
+
Reopen(options);
|
|
1890
|
+
|
|
1891
|
+
// Test ingest file without session_id and db_id (for example generated by an
|
|
1892
|
+
// older version of sst_writer)
|
|
1893
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
1894
|
+
"PropertyBlockBuilder::AddTableProperty:Start", [&](void* props_vs) {
|
|
1895
|
+
auto props = static_cast<TableProperties*>(props_vs);
|
|
1896
|
+
// update table property session_id to a different one
|
|
1897
|
+
props->db_session_id = "";
|
|
1898
|
+
props->db_id = "";
|
|
1899
|
+
});
|
|
1900
|
+
std::atomic_int skipped = 0;
|
|
1901
|
+
SyncPoint::GetInstance()->SetCallBack("Version::VerifySstUniqueIds::Skipped",
|
|
1902
|
+
[&](void* /*arg*/) { skipped++; });
|
|
1903
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
1904
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
1905
|
+
|
|
1906
|
+
external_file = sst_files_dir_ + "/file_to_ingest2.sst";
|
|
1907
|
+
{
|
|
1908
|
+
SstFileWriter sst_file_writer{EnvOptions(), CurrentOptions()};
|
|
1909
|
+
|
|
1910
|
+
ASSERT_OK(sst_file_writer.Open(external_file));
|
|
1911
|
+
ASSERT_OK(sst_file_writer.Put("k", kIngestedVal));
|
|
1912
|
+
ASSERT_OK(sst_file_writer.Finish());
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1915
|
+
ASSERT_OK(db_->IngestExternalFile(db_->DefaultColumnFamily(), {external_file},
|
|
1916
|
+
IngestExternalFileOptions()));
|
|
1917
|
+
|
|
1918
|
+
options.statistics = CreateDBStatistics();
|
|
1919
|
+
options.verify_sst_unique_id_in_manifest = true;
|
|
1920
|
+
ASSERT_EQ(skipped, 0);
|
|
1921
|
+
Reopen(options);
|
|
1922
|
+
// only one sst file is not verified because of missing unique_id
|
|
1923
|
+
ASSERT_EQ(skipped, 1);
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1847
1926
|
INSTANTIATE_TEST_CASE_P(ExternalSSTFileBasicTest, ExternalSSTFileBasicTest,
|
|
1848
1927
|
testing::Values(std::make_tuple(true, true),
|
|
1849
1928
|
std::make_tuple(true, false),
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
#include "table/scoped_arena_iterator.h"
|
|
23
23
|
#include "table/sst_file_writer_collectors.h"
|
|
24
24
|
#include "table/table_builder.h"
|
|
25
|
+
#include "table/unique_id_impl.h"
|
|
25
26
|
#include "test_util/sync_point.h"
|
|
26
27
|
#include "util/stop_watch.h"
|
|
27
28
|
|
|
@@ -142,6 +143,9 @@ Status ExternalSstFileIngestionJob::Prepare(
|
|
|
142
143
|
ingestion_options_.failed_move_fall_back_to_copy) {
|
|
143
144
|
// Original file is on a different FS, use copy instead of hard linking.
|
|
144
145
|
f.copy_file = true;
|
|
146
|
+
ROCKS_LOG_INFO(db_options_.info_log,
|
|
147
|
+
"Triy to link file %s but it's not supported : %s",
|
|
148
|
+
path_outside_db.c_str(), status.ToString().c_str());
|
|
145
149
|
}
|
|
146
150
|
} else {
|
|
147
151
|
f.copy_file = true;
|
|
@@ -446,8 +450,8 @@ Status ExternalSstFileIngestionJob::Run() {
|
|
|
446
450
|
f.smallest_internal_key, f.largest_internal_key, f.assigned_seqno,
|
|
447
451
|
f.assigned_seqno, false, f.file_temperature, kInvalidBlobFileNumber,
|
|
448
452
|
oldest_ancester_time, current_time, f.file_checksum,
|
|
449
|
-
f.file_checksum_func_name, kDisableUserTimestamp,
|
|
450
|
-
|
|
453
|
+
f.file_checksum_func_name, kDisableUserTimestamp, kDisableUserTimestamp,
|
|
454
|
+
f.unique_id);
|
|
451
455
|
f_metadata.temperature = f.file_temperature;
|
|
452
456
|
edit_.AddFile(f.picked_level, f_metadata);
|
|
453
457
|
}
|
|
@@ -727,6 +731,16 @@ Status ExternalSstFileIngestionJob::GetIngestedFileInfo(
|
|
|
727
731
|
|
|
728
732
|
file_to_ingest->table_properties = *props;
|
|
729
733
|
|
|
734
|
+
auto s = GetSstInternalUniqueId(props->db_id, props->db_session_id,
|
|
735
|
+
props->orig_file_number,
|
|
736
|
+
&(file_to_ingest->unique_id));
|
|
737
|
+
if (!s.ok()) {
|
|
738
|
+
ROCKS_LOG_WARN(db_options_.info_log,
|
|
739
|
+
"Failed to get SST unique id for file %s",
|
|
740
|
+
file_to_ingest->internal_file_path.c_str());
|
|
741
|
+
file_to_ingest->unique_id = kNullUniqueId64x2;
|
|
742
|
+
}
|
|
743
|
+
|
|
730
744
|
return status;
|
|
731
745
|
}
|
|
732
746
|
|
|
@@ -70,6 +70,8 @@ struct IngestedFileInfo {
|
|
|
70
70
|
std::string file_checksum_func_name;
|
|
71
71
|
// The temperature of the file to be ingested
|
|
72
72
|
Temperature file_temperature = Temperature::kUnknown;
|
|
73
|
+
// Unique id of the file to be ingested
|
|
74
|
+
UniqueId64x2 unique_id{};
|
|
73
75
|
};
|
|
74
76
|
|
|
75
77
|
class ExternalSstFileIngestionJob {
|
|
@@ -118,7 +118,7 @@ class ExternalSSTFileTest
|
|
|
118
118
|
});
|
|
119
119
|
data.resize(uniq_iter - data.begin());
|
|
120
120
|
}
|
|
121
|
-
std::string file_path = sst_files_dir_ +
|
|
121
|
+
std::string file_path = sst_files_dir_ + std::to_string(file_id);
|
|
122
122
|
SstFileWriter sst_file_writer(EnvOptions(), options, cfh);
|
|
123
123
|
Status s = sst_file_writer.Open(file_path);
|
|
124
124
|
if (!s.ok()) {
|
|
@@ -172,7 +172,7 @@ class ExternalSSTFileTest
|
|
|
172
172
|
});
|
|
173
173
|
data.resize(uniq_iter - data.begin());
|
|
174
174
|
}
|
|
175
|
-
std::string file_path = sst_files_dir_ +
|
|
175
|
+
std::string file_path = sst_files_dir_ + std::to_string(file_id);
|
|
176
176
|
SstFileWriter sst_file_writer(EnvOptions(), options, cfh);
|
|
177
177
|
|
|
178
178
|
Status s = sst_file_writer.Open(file_path);
|
|
@@ -270,7 +270,7 @@ class ExternalSSTFileTest
|
|
|
270
270
|
ColumnFamilyHandle* cfh = nullptr) {
|
|
271
271
|
std::vector<std::pair<std::string, std::string>> file_data;
|
|
272
272
|
for (auto& k : keys) {
|
|
273
|
-
file_data.emplace_back(Key(k), Key(k) +
|
|
273
|
+
file_data.emplace_back(Key(k), Key(k) + std::to_string(file_id));
|
|
274
274
|
}
|
|
275
275
|
return GenerateAndAddExternalFile(options, file_data, file_id,
|
|
276
276
|
allow_global_seqno, write_global_seqno,
|
|
@@ -966,7 +966,7 @@ TEST_F(ExternalSSTFileTest, MultiThreaded) {
|
|
|
966
966
|
// Generate file names
|
|
967
967
|
std::vector<std::string> file_names;
|
|
968
968
|
for (int i = 0; i < num_files; i++) {
|
|
969
|
-
std::string file_name = "file_" +
|
|
969
|
+
std::string file_name = "file_" + std::to_string(i) + ".sst";
|
|
970
970
|
file_names.push_back(sst_files_dir_ + file_name);
|
|
971
971
|
}
|
|
972
972
|
|
|
@@ -1116,7 +1116,7 @@ TEST_F(ExternalSSTFileTest, OverlappingRanges) {
|
|
|
1116
1116
|
int range_end = key_ranges[i].second;
|
|
1117
1117
|
|
|
1118
1118
|
Status s;
|
|
1119
|
-
std::string range_val = "range_" +
|
|
1119
|
+
std::string range_val = "range_" + std::to_string(i);
|
|
1120
1120
|
|
|
1121
1121
|
// For 20% of ranges we use DB::Put, for 80% we use DB::AddFile
|
|
1122
1122
|
if (i && i % 5 == 0) {
|
|
@@ -1456,7 +1456,7 @@ TEST_F(ExternalSSTFileTest, CompactDuringAddFileRandom) {
|
|
|
1456
1456
|
ASSERT_EQ(Get(Key(range_start)), Key(range_start)) << rid;
|
|
1457
1457
|
ASSERT_EQ(Get(Key(range_end)), Key(range_end)) << rid;
|
|
1458
1458
|
for (int k = range_start + 1; k < range_end; k++) {
|
|
1459
|
-
std::string v = Key(k) +
|
|
1459
|
+
std::string v = Key(k) + std::to_string(rid);
|
|
1460
1460
|
ASSERT_EQ(Get(Key(k)), v) << rid;
|
|
1461
1461
|
}
|
|
1462
1462
|
}
|
|
@@ -2405,7 +2405,7 @@ TEST_P(ExternalSSTBlockChecksumTest, DISABLED_HugeBlockChecksum) {
|
|
|
2405
2405
|
SstFileWriter sst_file_writer(EnvOptions(), options);
|
|
2406
2406
|
|
|
2407
2407
|
// 2^32 - 1, will lead to data block with more than 2^32 bytes
|
|
2408
|
-
size_t huge_size =
|
|
2408
|
+
size_t huge_size = std::numeric_limits<uint32_t>::max();
|
|
2409
2409
|
|
|
2410
2410
|
std::string f = sst_files_dir_ + "f.sst";
|
|
2411
2411
|
ASSERT_OK(sst_file_writer.Open(f));
|
|
@@ -58,10 +58,7 @@ class FileIndexer {
|
|
|
58
58
|
void UpdateIndex(Arena* arena, const size_t num_levels,
|
|
59
59
|
std::vector<FileMetaData*>* const files);
|
|
60
60
|
|
|
61
|
-
enum {
|
|
62
|
-
// MSVC version 1800 still does not have constexpr for ::max()
|
|
63
|
-
kLevelMaxIndex = ROCKSDB_NAMESPACE::port::kMaxInt32
|
|
64
|
-
};
|
|
61
|
+
enum { kLevelMaxIndex = std::numeric_limits<int32_t>::max() };
|
|
65
62
|
|
|
66
63
|
private:
|
|
67
64
|
size_t num_levels_;
|
|
@@ -9,9 +9,8 @@
|
|
|
9
9
|
|
|
10
10
|
#include "db/flush_job.h"
|
|
11
11
|
|
|
12
|
-
#include <cinttypes>
|
|
13
|
-
|
|
14
12
|
#include <algorithm>
|
|
13
|
+
#include <cinttypes>
|
|
15
14
|
#include <vector>
|
|
16
15
|
|
|
17
16
|
#include "db/builder.h"
|
|
@@ -464,6 +463,7 @@ Status FlushJob::MemPurge() {
|
|
|
464
463
|
env, ShouldReportDetailedTime(env, ioptions->stats),
|
|
465
464
|
true /* internal key corruption is not ok */, range_del_agg.get(),
|
|
466
465
|
nullptr, ioptions->allow_data_in_errors,
|
|
466
|
+
ioptions->enforce_single_del_contracts,
|
|
467
467
|
/*compaction=*/nullptr, compaction_filter.get(),
|
|
468
468
|
/*shutting_down=*/nullptr,
|
|
469
469
|
/*manual_compaction_paused=*/nullptr,
|
|
@@ -809,6 +809,7 @@ Status FlushJob::WriteLevel0Table() {
|
|
|
809
809
|
|
|
810
810
|
{
|
|
811
811
|
auto write_hint = cfd_->CalculateSSTWriteHint(0);
|
|
812
|
+
Env::IOPriority io_priority = GetRateLimiterPriorityForWrite();
|
|
812
813
|
db_mutex_->Unlock();
|
|
813
814
|
if (log_buffer_) {
|
|
814
815
|
log_buffer_->FlushBufferToLog();
|
|
@@ -924,16 +925,16 @@ Status FlushJob::WriteLevel0Table() {
|
|
|
924
925
|
snapshot_checker_, mutable_cf_options_.paranoid_file_checks,
|
|
925
926
|
cfd_->internal_stats(), &io_s, io_tracer_,
|
|
926
927
|
BlobFileCreationReason::kFlush, event_logger_, job_context_->job_id,
|
|
927
|
-
|
|
928
|
+
io_priority, &table_properties_, write_hint, full_history_ts_low,
|
|
928
929
|
blob_callback_, &num_input_entries, &memtable_payload_bytes,
|
|
929
930
|
&memtable_garbage_bytes);
|
|
930
931
|
// TODO: Cleanup io_status in BuildTable and table builders
|
|
931
932
|
assert(!s.ok() || io_s.ok());
|
|
932
933
|
io_s.PermitUncheckedError();
|
|
933
934
|
if (num_input_entries != total_num_entries && s.ok()) {
|
|
934
|
-
std::string msg = "Expected " +
|
|
935
|
+
std::string msg = "Expected " + std::to_string(total_num_entries) +
|
|
935
936
|
" entries in memtables, but read " +
|
|
936
|
-
|
|
937
|
+
std::to_string(num_input_entries);
|
|
937
938
|
ROCKS_LOG_WARN(db_options_.info_log, "[%s] [JOB %d] Level-0 flush %s",
|
|
938
939
|
cfd_->GetName().c_str(), job_context_->job_id,
|
|
939
940
|
msg.c_str());
|
|
@@ -950,14 +951,14 @@ Status FlushJob::WriteLevel0Table() {
|
|
|
950
951
|
}
|
|
951
952
|
LogFlush(db_options_.info_log);
|
|
952
953
|
}
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
954
|
+
ROCKS_LOG_BUFFER(log_buffer_,
|
|
955
|
+
"[%s] [JOB %d] Level-0 flush table #%" PRIu64 ": %" PRIu64
|
|
956
|
+
" bytes %s"
|
|
957
|
+
"%s",
|
|
958
|
+
cfd_->GetName().c_str(), job_context_->job_id,
|
|
959
|
+
meta_.fd.GetNumber(), meta_.fd.GetFileSize(),
|
|
960
|
+
s.ToString().c_str(),
|
|
961
|
+
meta_.marked_for_compaction ? " (needs compaction)" : "");
|
|
961
962
|
|
|
962
963
|
if (s.ok() && output_file_directory_ != nullptr && sync_output_directory_) {
|
|
963
964
|
s = output_file_directory_->FsyncWithDirOptions(
|
|
@@ -987,7 +988,7 @@ Status FlushJob::WriteLevel0Table() {
|
|
|
987
988
|
meta_.oldest_blob_file_number, meta_.oldest_ancester_time,
|
|
988
989
|
meta_.file_creation_time, meta_.file_checksum,
|
|
989
990
|
meta_.file_checksum_func_name, meta_.min_timestamp,
|
|
990
|
-
meta_.max_timestamp);
|
|
991
|
+
meta_.max_timestamp, meta_.unique_id);
|
|
991
992
|
|
|
992
993
|
edit_->SetBlobFileAdditions(std::move(blob_file_additions));
|
|
993
994
|
}
|
|
@@ -1031,6 +1032,19 @@ Status FlushJob::WriteLevel0Table() {
|
|
|
1031
1032
|
return s;
|
|
1032
1033
|
}
|
|
1033
1034
|
|
|
1035
|
+
Env::IOPriority FlushJob::GetRateLimiterPriorityForWrite() {
|
|
1036
|
+
if (versions_ && versions_->GetColumnFamilySet() &&
|
|
1037
|
+
versions_->GetColumnFamilySet()->write_controller()) {
|
|
1038
|
+
WriteController* write_controller =
|
|
1039
|
+
versions_->GetColumnFamilySet()->write_controller();
|
|
1040
|
+
if (write_controller->IsStopped() || write_controller->NeedsDelay()) {
|
|
1041
|
+
return Env::IO_USER;
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
return Env::IO_HIGH;
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1034
1048
|
#ifndef ROCKSDB_LITE
|
|
1035
1049
|
std::unique_ptr<FlushJobInfo> FlushJob::GetFlushJobInfo() const {
|
|
1036
1050
|
db_mutex_->AssertHeld();
|
|
@@ -1063,7 +1077,6 @@ std::unique_ptr<FlushJobInfo> FlushJob::GetFlushJobInfo() const {
|
|
|
1063
1077
|
}
|
|
1064
1078
|
return info;
|
|
1065
1079
|
}
|
|
1066
|
-
|
|
1067
1080
|
#endif // !ROCKSDB_LITE
|
|
1068
1081
|
|
|
1069
1082
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -94,6 +94,8 @@ class FlushJob {
|
|
|
94
94
|
#endif // !ROCKSDB_LITE
|
|
95
95
|
|
|
96
96
|
private:
|
|
97
|
+
friend class FlushJobTest_GetRateLimiterPriorityForWrite_Test;
|
|
98
|
+
|
|
97
99
|
void ReportStartedFlush();
|
|
98
100
|
void ReportFlushInputSize(const autovector<MemTable*>& mems);
|
|
99
101
|
void RecordFlushIOStats();
|
|
@@ -121,6 +123,8 @@ class FlushJob {
|
|
|
121
123
|
// process has not matured yet.
|
|
122
124
|
Status MemPurge();
|
|
123
125
|
bool MemPurgeDecider();
|
|
126
|
+
// The rate limiter priority (io_priority) is determined dynamically here.
|
|
127
|
+
Env::IOPriority GetRateLimiterPriorityForWrite();
|
|
124
128
|
#ifndef ROCKSDB_LITE
|
|
125
129
|
std::unique_ptr<FlushJobInfo> GetFlushJobInfo() const;
|
|
126
130
|
#endif // !ROCKSDB_LITE
|
|
@@ -164,12 +164,12 @@ TEST_F(FlushJobTest, Empty) {
|
|
|
164
164
|
SnapshotChecker* snapshot_checker = nullptr; // not relavant
|
|
165
165
|
FlushJob flush_job(
|
|
166
166
|
dbname_, versions_->GetColumnFamilySet()->GetDefault(), db_options_,
|
|
167
|
-
*cfd->GetLatestMutableCFOptions(),
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
Env::Priority::USER, nullptr /*IOTracer*/);
|
|
167
|
+
*cfd->GetLatestMutableCFOptions(),
|
|
168
|
+
std::numeric_limits<uint64_t>::max() /* memtable_id */, env_options_,
|
|
169
|
+
versions_.get(), &mutex_, &shutting_down_, {}, kMaxSequenceNumber,
|
|
170
|
+
snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
|
|
171
|
+
nullptr, &event_logger, false, true /* sync_output_directory */,
|
|
172
|
+
true /* write_manifest */, Env::Priority::USER, nullptr /*IOTracer*/);
|
|
173
173
|
{
|
|
174
174
|
InstrumentedMutexLock l(&mutex_);
|
|
175
175
|
flush_job.PickMemTable();
|
|
@@ -191,7 +191,7 @@ TEST_F(FlushJobTest, NonEmpty) {
|
|
|
191
191
|
// range-delete "9995" -> "9999" at seqno 10000
|
|
192
192
|
// blob references with seqnos 10001..10006
|
|
193
193
|
for (int i = 1; i < 10000; ++i) {
|
|
194
|
-
std::string key(
|
|
194
|
+
std::string key(std::to_string((i + 1000) % 10000));
|
|
195
195
|
std::string value("value" + key);
|
|
196
196
|
ASSERT_OK(new_mem->Add(SequenceNumber(i), kTypeValue, key, value,
|
|
197
197
|
nullptr /* kv_prot_info */));
|
|
@@ -214,7 +214,7 @@ TEST_F(FlushJobTest, NonEmpty) {
|
|
|
214
214
|
constexpr std::array<uint64_t, 6> blob_file_numbers{{
|
|
215
215
|
kInvalidBlobFileNumber, 5, 103, 17, 102, 101}};
|
|
216
216
|
for (size_t i = 0; i < blob_file_numbers.size(); ++i) {
|
|
217
|
-
std::string key(
|
|
217
|
+
std::string key(std::to_string(i + 10001));
|
|
218
218
|
std::string blob_index;
|
|
219
219
|
if (i == 0) {
|
|
220
220
|
BlobIndex::EncodeInlinedTTL(&blob_index, /* expiration */ 1234567890ULL,
|
|
@@ -248,11 +248,12 @@ TEST_F(FlushJobTest, NonEmpty) {
|
|
|
248
248
|
SnapshotChecker* snapshot_checker = nullptr; // not relavant
|
|
249
249
|
FlushJob flush_job(
|
|
250
250
|
dbname_, versions_->GetColumnFamilySet()->GetDefault(), db_options_,
|
|
251
|
-
*cfd->GetLatestMutableCFOptions(),
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
nullptr,
|
|
255
|
-
|
|
251
|
+
*cfd->GetLatestMutableCFOptions(),
|
|
252
|
+
std::numeric_limits<uint64_t>::max() /* memtable_id */, env_options_,
|
|
253
|
+
versions_.get(), &mutex_, &shutting_down_, {}, kMaxSequenceNumber,
|
|
254
|
+
snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
|
|
255
|
+
db_options_.statistics.get(), &event_logger, true,
|
|
256
|
+
true /* sync_output_directory */, true /* write_manifest */,
|
|
256
257
|
Env::Priority::USER, nullptr /*IOTracer*/);
|
|
257
258
|
|
|
258
259
|
HistogramData hist;
|
|
@@ -264,7 +265,7 @@ TEST_F(FlushJobTest, NonEmpty) {
|
|
|
264
265
|
db_options_.statistics->histogramData(FLUSH_TIME, &hist);
|
|
265
266
|
ASSERT_GT(hist.average, 0.0);
|
|
266
267
|
|
|
267
|
-
ASSERT_EQ(
|
|
268
|
+
ASSERT_EQ(std::to_string(0), file_meta.smallest.user_key().ToString());
|
|
268
269
|
ASSERT_EQ("9999a", file_meta.largest.user_key().ToString());
|
|
269
270
|
ASSERT_EQ(1, file_meta.fd.smallest_seqno);
|
|
270
271
|
ASSERT_EQ(10006, file_meta.fd.largest_seqno);
|
|
@@ -290,7 +291,7 @@ TEST_F(FlushJobTest, FlushMemTablesSingleColumnFamily) {
|
|
|
290
291
|
memtable_ids.push_back(mem->GetID());
|
|
291
292
|
|
|
292
293
|
for (size_t j = 0; j < num_keys_per_table; ++j) {
|
|
293
|
-
std::string key(
|
|
294
|
+
std::string key(std::to_string(j + i * num_keys_per_table));
|
|
294
295
|
std::string value("value" + key);
|
|
295
296
|
ASSERT_OK(mem->Add(SequenceNumber(j + i * num_keys_per_table), kTypeValue,
|
|
296
297
|
key, value, nullptr /* kv_prot_info */));
|
|
@@ -325,7 +326,7 @@ TEST_F(FlushJobTest, FlushMemTablesSingleColumnFamily) {
|
|
|
325
326
|
db_options_.statistics->histogramData(FLUSH_TIME, &hist);
|
|
326
327
|
ASSERT_GT(hist.average, 0.0);
|
|
327
328
|
|
|
328
|
-
ASSERT_EQ(
|
|
329
|
+
ASSERT_EQ(std::to_string(0), file_meta.smallest.user_key().ToString());
|
|
329
330
|
ASSERT_EQ("99", file_meta.largest.user_key().ToString());
|
|
330
331
|
ASSERT_EQ(0, file_meta.fd.smallest_seqno);
|
|
331
332
|
ASSERT_EQ(SequenceNumber(num_mems_to_flush * num_keys_per_table - 1),
|
|
@@ -363,7 +364,7 @@ TEST_F(FlushJobTest, FlushMemtablesMultipleColumnFamilies) {
|
|
|
363
364
|
mem->Ref();
|
|
364
365
|
|
|
365
366
|
for (size_t j = 0; j != num_keys_per_memtable; ++j) {
|
|
366
|
-
std::string key(
|
|
367
|
+
std::string key(std::to_string(j + i * num_keys_per_memtable));
|
|
367
368
|
std::string value("value" + key);
|
|
368
369
|
ASSERT_OK(mem->Add(curr_seqno++, kTypeValue, key, value,
|
|
369
370
|
nullptr /* kv_prot_info */));
|
|
@@ -438,7 +439,7 @@ TEST_F(FlushJobTest, FlushMemtablesMultipleColumnFamilies) {
|
|
|
438
439
|
ASSERT_GT(hist.average, 0.0);
|
|
439
440
|
k = 0;
|
|
440
441
|
for (const auto& file_meta : file_metas) {
|
|
441
|
-
ASSERT_EQ(
|
|
442
|
+
ASSERT_EQ(std::to_string(0), file_meta.smallest.user_key().ToString());
|
|
442
443
|
ASSERT_EQ("999", file_meta.largest.user_key()
|
|
443
444
|
.ToString()); // max key by bytewise comparator
|
|
444
445
|
ASSERT_EQ(smallest_seqs[k], file_meta.fd.smallest_seqno);
|
|
@@ -479,7 +480,7 @@ TEST_F(FlushJobTest, Snapshots) {
|
|
|
479
480
|
SequenceNumber current_seqno = 0;
|
|
480
481
|
auto inserted_keys = mock::MakeMockFile();
|
|
481
482
|
for (int i = 1; i < keys; ++i) {
|
|
482
|
-
std::string key(
|
|
483
|
+
std::string key(std::to_string(i));
|
|
483
484
|
int insertions = rnd.Uniform(max_inserts_per_keys);
|
|
484
485
|
for (int j = 0; j < insertions; ++j) {
|
|
485
486
|
std::string value(rnd.HumanReadableString(10));
|
|
@@ -509,11 +510,12 @@ TEST_F(FlushJobTest, Snapshots) {
|
|
|
509
510
|
SnapshotChecker* snapshot_checker = nullptr; // not relavant
|
|
510
511
|
FlushJob flush_job(
|
|
511
512
|
dbname_, versions_->GetColumnFamilySet()->GetDefault(), db_options_,
|
|
512
|
-
*cfd->GetLatestMutableCFOptions(),
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
nullptr,
|
|
516
|
-
|
|
513
|
+
*cfd->GetLatestMutableCFOptions(),
|
|
514
|
+
std::numeric_limits<uint64_t>::max() /* memtable_id */, env_options_,
|
|
515
|
+
versions_.get(), &mutex_, &shutting_down_, snapshots, kMaxSequenceNumber,
|
|
516
|
+
snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
|
|
517
|
+
db_options_.statistics.get(), &event_logger, true,
|
|
518
|
+
true /* sync_output_directory */, true /* write_manifest */,
|
|
517
519
|
Env::Priority::USER, nullptr /*IOTracer*/);
|
|
518
520
|
mutex_.Lock();
|
|
519
521
|
flush_job.PickMemTable();
|
|
@@ -526,6 +528,72 @@ TEST_F(FlushJobTest, Snapshots) {
|
|
|
526
528
|
job_context.Clean();
|
|
527
529
|
}
|
|
528
530
|
|
|
531
|
+
TEST_F(FlushJobTest, GetRateLimiterPriorityForWrite) {
|
|
532
|
+
// Prepare a FlushJob that flush MemTables of Single Column Family.
|
|
533
|
+
const size_t num_mems = 2;
|
|
534
|
+
const size_t num_mems_to_flush = 1;
|
|
535
|
+
const size_t num_keys_per_table = 100;
|
|
536
|
+
JobContext job_context(0);
|
|
537
|
+
ColumnFamilyData* cfd = versions_->GetColumnFamilySet()->GetDefault();
|
|
538
|
+
std::vector<uint64_t> memtable_ids;
|
|
539
|
+
std::vector<MemTable*> new_mems;
|
|
540
|
+
for (size_t i = 0; i != num_mems; ++i) {
|
|
541
|
+
MemTable* mem = cfd->ConstructNewMemtable(*cfd->GetLatestMutableCFOptions(),
|
|
542
|
+
kMaxSequenceNumber);
|
|
543
|
+
mem->SetID(i);
|
|
544
|
+
mem->Ref();
|
|
545
|
+
new_mems.emplace_back(mem);
|
|
546
|
+
memtable_ids.push_back(mem->GetID());
|
|
547
|
+
|
|
548
|
+
for (size_t j = 0; j < num_keys_per_table; ++j) {
|
|
549
|
+
std::string key(std::to_string(j + i * num_keys_per_table));
|
|
550
|
+
std::string value("value" + key);
|
|
551
|
+
ASSERT_OK(mem->Add(SequenceNumber(j + i * num_keys_per_table), kTypeValue,
|
|
552
|
+
key, value, nullptr /* kv_prot_info */));
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
autovector<MemTable*> to_delete;
|
|
557
|
+
for (auto mem : new_mems) {
|
|
558
|
+
cfd->imm()->Add(mem, &to_delete);
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
EventLogger event_logger(db_options_.info_log.get());
|
|
562
|
+
SnapshotChecker* snapshot_checker = nullptr; // not relavant
|
|
563
|
+
|
|
564
|
+
assert(memtable_ids.size() == num_mems);
|
|
565
|
+
uint64_t smallest_memtable_id = memtable_ids.front();
|
|
566
|
+
uint64_t flush_memtable_id = smallest_memtable_id + num_mems_to_flush - 1;
|
|
567
|
+
FlushJob flush_job(
|
|
568
|
+
dbname_, versions_->GetColumnFamilySet()->GetDefault(), db_options_,
|
|
569
|
+
*cfd->GetLatestMutableCFOptions(), flush_memtable_id, env_options_,
|
|
570
|
+
versions_.get(), &mutex_, &shutting_down_, {}, kMaxSequenceNumber,
|
|
571
|
+
snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
|
|
572
|
+
db_options_.statistics.get(), &event_logger, true,
|
|
573
|
+
true /* sync_output_directory */, true /* write_manifest */,
|
|
574
|
+
Env::Priority::USER, nullptr /*IOTracer*/);
|
|
575
|
+
|
|
576
|
+
// When the state from WriteController is normal.
|
|
577
|
+
ASSERT_EQ(flush_job.GetRateLimiterPriorityForWrite(), Env::IO_HIGH);
|
|
578
|
+
|
|
579
|
+
WriteController* write_controller =
|
|
580
|
+
flush_job.versions_->GetColumnFamilySet()->write_controller();
|
|
581
|
+
|
|
582
|
+
{
|
|
583
|
+
// When the state from WriteController is Delayed.
|
|
584
|
+
std::unique_ptr<WriteControllerToken> delay_token =
|
|
585
|
+
write_controller->GetDelayToken(1000000);
|
|
586
|
+
ASSERT_EQ(flush_job.GetRateLimiterPriorityForWrite(), Env::IO_USER);
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
{
|
|
590
|
+
// When the state from WriteController is Stopped.
|
|
591
|
+
std::unique_ptr<WriteControllerToken> stop_token =
|
|
592
|
+
write_controller->GetStopToken();
|
|
593
|
+
ASSERT_EQ(flush_job.GetRateLimiterPriorityForWrite(), Env::IO_USER);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
|
|
529
597
|
class FlushJobTimestampTest : public FlushJobTestBase {
|
|
530
598
|
public:
|
|
531
599
|
FlushJobTimestampTest()
|
|
@@ -577,9 +645,9 @@ TEST_F(FlushJobTimestampTest, AllKeysExpired) {
|
|
|
577
645
|
PutFixed64(&full_history_ts_low, std::numeric_limits<uint64_t>::max());
|
|
578
646
|
FlushJob flush_job(
|
|
579
647
|
dbname_, cfd, db_options_, *cfd->GetLatestMutableCFOptions(),
|
|
580
|
-
|
|
581
|
-
&mutex_, &shutting_down_, snapshots, kMaxSequenceNumber,
|
|
582
|
-
&job_context, nullptr, nullptr, nullptr, kNoCompression,
|
|
648
|
+
std::numeric_limits<uint64_t>::max() /* memtable_id */, env_options_,
|
|
649
|
+
versions_.get(), &mutex_, &shutting_down_, snapshots, kMaxSequenceNumber,
|
|
650
|
+
snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
|
|
583
651
|
db_options_.statistics.get(), &event_logger, true,
|
|
584
652
|
true /* sync_output_directory */, true /* write_manifest */,
|
|
585
653
|
Env::Priority::USER, nullptr /*IOTracer*/, /*db_id=*/"",
|
|
@@ -628,9 +696,9 @@ TEST_F(FlushJobTimestampTest, NoKeyExpired) {
|
|
|
628
696
|
PutFixed64(&full_history_ts_low, 0);
|
|
629
697
|
FlushJob flush_job(
|
|
630
698
|
dbname_, cfd, db_options_, *cfd->GetLatestMutableCFOptions(),
|
|
631
|
-
|
|
632
|
-
&mutex_, &shutting_down_, snapshots, kMaxSequenceNumber,
|
|
633
|
-
&job_context, nullptr, nullptr, nullptr, kNoCompression,
|
|
699
|
+
std::numeric_limits<uint64_t>::max() /* memtable_id */, env_options_,
|
|
700
|
+
versions_.get(), &mutex_, &shutting_down_, snapshots, kMaxSequenceNumber,
|
|
701
|
+
snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
|
|
634
702
|
db_options_.statistics.get(), &event_logger, true,
|
|
635
703
|
true /* sync_output_directory */, true /* write_manifest */,
|
|
636
704
|
Env::Priority::USER, nullptr /*IOTracer*/, /*db_id=*/"",
|
|
@@ -604,7 +604,7 @@ bool ForwardIterator::PrepareValue() {
|
|
|
604
604
|
Status ForwardIterator::GetProperty(std::string prop_name, std::string* prop) {
|
|
605
605
|
assert(prop != nullptr);
|
|
606
606
|
if (prop_name == "rocksdb.iterator.super-version-number") {
|
|
607
|
-
*prop =
|
|
607
|
+
*prop = std::to_string(sv_->version_number);
|
|
608
608
|
return Status::OK();
|
|
609
609
|
}
|
|
610
610
|
return Status::InvalidArgument();
|