@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
|
@@ -454,7 +454,7 @@ TEST_F(DBTestCompactionFilter, CompactionFilterDeletesAll) {
|
|
|
454
454
|
// put some data
|
|
455
455
|
for (int table = 0; table < 4; ++table) {
|
|
456
456
|
for (int i = 0; i < 10 + table; ++i) {
|
|
457
|
-
ASSERT_OK(Put(
|
|
457
|
+
ASSERT_OK(Put(std::to_string(table * 100 + i), "val"));
|
|
458
458
|
}
|
|
459
459
|
ASSERT_OK(Flush());
|
|
460
460
|
}
|
|
@@ -755,7 +755,7 @@ TEST_F(DBTestCompactionFilter, CompactionFilterContextCfId) {
|
|
|
755
755
|
#ifndef ROCKSDB_LITE
|
|
756
756
|
// Compaction filters aplies to all records, regardless snapshots.
|
|
757
757
|
TEST_F(DBTestCompactionFilter, CompactionFilterIgnoreSnapshot) {
|
|
758
|
-
std::string five =
|
|
758
|
+
std::string five = std::to_string(5);
|
|
759
759
|
Options options = CurrentOptions();
|
|
760
760
|
options.compaction_filter_factory = std::make_shared<DeleteISFilterFactory>();
|
|
761
761
|
options.disable_auto_compactions = true;
|
|
@@ -766,7 +766,7 @@ TEST_F(DBTestCompactionFilter, CompactionFilterIgnoreSnapshot) {
|
|
|
766
766
|
const Snapshot* snapshot = nullptr;
|
|
767
767
|
for (int table = 0; table < 4; ++table) {
|
|
768
768
|
for (int i = 0; i < 10; ++i) {
|
|
769
|
-
ASSERT_OK(Put(
|
|
769
|
+
ASSERT_OK(Put(std::to_string(table * 100 + i), "val"));
|
|
770
770
|
}
|
|
771
771
|
ASSERT_OK(Flush());
|
|
772
772
|
|
|
@@ -968,6 +968,71 @@ TEST_F(DBTestCompactionFilter, IgnoreSnapshotsFalseRecovery) {
|
|
|
968
968
|
ASSERT_TRUE(TryReopen(options).IsNotSupported());
|
|
969
969
|
}
|
|
970
970
|
|
|
971
|
+
TEST_F(DBTestCompactionFilter, DropKeyWithSingleDelete) {
|
|
972
|
+
Options options = GetDefaultOptions();
|
|
973
|
+
options.create_if_missing = true;
|
|
974
|
+
|
|
975
|
+
Reopen(options);
|
|
976
|
+
|
|
977
|
+
ASSERT_OK(Put("a", "v0"));
|
|
978
|
+
ASSERT_OK(Put("b", "v0"));
|
|
979
|
+
const Snapshot* snapshot = db_->GetSnapshot();
|
|
980
|
+
|
|
981
|
+
ASSERT_OK(SingleDelete("b"));
|
|
982
|
+
ASSERT_OK(Flush());
|
|
983
|
+
|
|
984
|
+
{
|
|
985
|
+
CompactRangeOptions cro;
|
|
986
|
+
cro.change_level = true;
|
|
987
|
+
cro.target_level = options.num_levels - 1;
|
|
988
|
+
ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
db_->ReleaseSnapshot(snapshot);
|
|
992
|
+
Close();
|
|
993
|
+
|
|
994
|
+
class DeleteFilterV2 : public CompactionFilter {
|
|
995
|
+
public:
|
|
996
|
+
Decision FilterV2(int /*level*/, const Slice& key, ValueType /*value_type*/,
|
|
997
|
+
const Slice& /*existing_value*/,
|
|
998
|
+
std::string* /*new_value*/,
|
|
999
|
+
std::string* /*skip_until*/) const override {
|
|
1000
|
+
if (key.starts_with("b")) {
|
|
1001
|
+
return Decision::kPurge;
|
|
1002
|
+
}
|
|
1003
|
+
return Decision::kRemove;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
const char* Name() const override { return "DeleteFilterV2"; }
|
|
1007
|
+
} delete_filter_v2;
|
|
1008
|
+
|
|
1009
|
+
options.compaction_filter = &delete_filter_v2;
|
|
1010
|
+
options.level0_file_num_compaction_trigger = 2;
|
|
1011
|
+
Reopen(options);
|
|
1012
|
+
|
|
1013
|
+
ASSERT_OK(Put("b", "v1"));
|
|
1014
|
+
ASSERT_OK(Put("x", "v1"));
|
|
1015
|
+
ASSERT_OK(Flush());
|
|
1016
|
+
|
|
1017
|
+
ASSERT_OK(Put("r", "v1"));
|
|
1018
|
+
ASSERT_OK(Put("z", "v1"));
|
|
1019
|
+
ASSERT_OK(Flush());
|
|
1020
|
+
|
|
1021
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1022
|
+
|
|
1023
|
+
Close();
|
|
1024
|
+
|
|
1025
|
+
options.compaction_filter = nullptr;
|
|
1026
|
+
Reopen(options);
|
|
1027
|
+
ASSERT_OK(SingleDelete("b"));
|
|
1028
|
+
ASSERT_OK(Flush());
|
|
1029
|
+
{
|
|
1030
|
+
CompactRangeOptions cro;
|
|
1031
|
+
cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
|
|
1032
|
+
ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
|
|
971
1036
|
} // namespace ROCKSDB_NAMESPACE
|
|
972
1037
|
|
|
973
1038
|
int main(int argc, char** argv) {
|
|
@@ -2409,6 +2409,30 @@ TEST_P(DBCompactionTestWithParam, LevelCompactionCFPathUse) {
|
|
|
2409
2409
|
|
|
2410
2410
|
check_getvalues();
|
|
2411
2411
|
|
|
2412
|
+
{ // Also verify GetLiveFilesStorageInfo with db_paths / cf_paths
|
|
2413
|
+
std::vector<LiveFileStorageInfo> new_infos;
|
|
2414
|
+
LiveFilesStorageInfoOptions lfsio;
|
|
2415
|
+
lfsio.wal_size_for_flush = UINT64_MAX; // no flush
|
|
2416
|
+
ASSERT_OK(db_->GetLiveFilesStorageInfo(lfsio, &new_infos));
|
|
2417
|
+
std::unordered_map<std::string, int> live_sst_by_dir;
|
|
2418
|
+
for (auto& info : new_infos) {
|
|
2419
|
+
if (info.file_type == kTableFile) {
|
|
2420
|
+
live_sst_by_dir[info.directory]++;
|
|
2421
|
+
// Verify file on disk (no directory confusion)
|
|
2422
|
+
uint64_t size;
|
|
2423
|
+
ASSERT_OK(env_->GetFileSize(
|
|
2424
|
+
info.directory + "/" + info.relative_filename, &size));
|
|
2425
|
+
ASSERT_EQ(info.size, size);
|
|
2426
|
+
}
|
|
2427
|
+
}
|
|
2428
|
+
ASSERT_EQ(3U * 3U, live_sst_by_dir.size());
|
|
2429
|
+
for (auto& paths : {options.db_paths, cf_opt1.cf_paths, cf_opt2.cf_paths}) {
|
|
2430
|
+
ASSERT_EQ(1, live_sst_by_dir[paths[0].path]);
|
|
2431
|
+
ASSERT_EQ(4, live_sst_by_dir[paths[1].path]);
|
|
2432
|
+
ASSERT_EQ(2, live_sst_by_dir[paths[2].path]);
|
|
2433
|
+
}
|
|
2434
|
+
}
|
|
2435
|
+
|
|
2412
2436
|
ReopenWithColumnFamilies({"default", "one", "two"}, option_vector);
|
|
2413
2437
|
|
|
2414
2438
|
check_getvalues();
|
|
@@ -2793,7 +2817,7 @@ TEST_P(DBCompactionTestWithParam, DISABLED_CompactFilesOnLevelCompaction) {
|
|
|
2793
2817
|
|
|
2794
2818
|
Random rnd(301);
|
|
2795
2819
|
for (int key = 64 * kEntriesPerBuffer; key >= 0; --key) {
|
|
2796
|
-
ASSERT_OK(Put(1,
|
|
2820
|
+
ASSERT_OK(Put(1, std::to_string(key), rnd.RandomString(kTestValueSize)));
|
|
2797
2821
|
}
|
|
2798
2822
|
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable(handles_[1]));
|
|
2799
2823
|
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
@@ -2825,7 +2849,7 @@ TEST_P(DBCompactionTestWithParam, DISABLED_CompactFilesOnLevelCompaction) {
|
|
|
2825
2849
|
|
|
2826
2850
|
// make sure all key-values are still there.
|
|
2827
2851
|
for (int key = 64 * kEntriesPerBuffer; key >= 0; --key) {
|
|
2828
|
-
ASSERT_NE(Get(1,
|
|
2852
|
+
ASSERT_NE(Get(1, std::to_string(key)), "NOT_FOUND");
|
|
2829
2853
|
}
|
|
2830
2854
|
}
|
|
2831
2855
|
|
|
@@ -4380,7 +4404,8 @@ TEST_F(DBCompactionTest, LevelPeriodicCompactionWithCompactionFilters) {
|
|
|
4380
4404
|
for (CompactionFilterType comp_filter_type :
|
|
4381
4405
|
{kUseCompactionFilter, kUseCompactionFilterFactory}) {
|
|
4382
4406
|
// Assert that periodic compactions are not enabled.
|
|
4383
|
-
ASSERT_EQ(
|
|
4407
|
+
ASSERT_EQ(std::numeric_limits<uint64_t>::max() - 1,
|
|
4408
|
+
options.periodic_compaction_seconds);
|
|
4384
4409
|
|
|
4385
4410
|
if (comp_filter_type == kUseCompactionFilter) {
|
|
4386
4411
|
options.compaction_filter = &test_compaction_filter;
|
|
@@ -4643,9 +4668,9 @@ TEST_F(DBCompactionTest, CompactRangeSkipFlushAfterDelay) {
|
|
|
4643
4668
|
});
|
|
4644
4669
|
|
|
4645
4670
|
TEST_SYNC_POINT("DBCompactionTest::CompactRangeSkipFlushAfterDelay:PreFlush");
|
|
4646
|
-
ASSERT_OK(Put(
|
|
4671
|
+
ASSERT_OK(Put(std::to_string(0), rnd.RandomString(1024)));
|
|
4647
4672
|
ASSERT_OK(dbfull()->Flush(flush_opts));
|
|
4648
|
-
ASSERT_OK(Put(
|
|
4673
|
+
ASSERT_OK(Put(std::to_string(0), rnd.RandomString(1024)));
|
|
4649
4674
|
TEST_SYNC_POINT("DBCompactionTest::CompactRangeSkipFlushAfterDelay:PostFlush");
|
|
4650
4675
|
manual_compaction_thread.join();
|
|
4651
4676
|
|
|
@@ -4654,7 +4679,7 @@ TEST_F(DBCompactionTest, CompactRangeSkipFlushAfterDelay) {
|
|
|
4654
4679
|
std::string num_keys_in_memtable;
|
|
4655
4680
|
ASSERT_TRUE(db_->GetProperty(DB::Properties::kNumEntriesActiveMemTable,
|
|
4656
4681
|
&num_keys_in_memtable));
|
|
4657
|
-
ASSERT_EQ(
|
|
4682
|
+
ASSERT_EQ(std::to_string(1), num_keys_in_memtable);
|
|
4658
4683
|
|
|
4659
4684
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
4660
4685
|
}
|
|
@@ -4803,7 +4828,7 @@ TEST_F(DBCompactionTest, SubcompactionEvent) {
|
|
|
4803
4828
|
for (int i = 0; i < 4; i++) {
|
|
4804
4829
|
for (int j = 0; j < 10; j++) {
|
|
4805
4830
|
int key_id = i * 10 + j;
|
|
4806
|
-
ASSERT_OK(Put(Key(key_id), "value" +
|
|
4831
|
+
ASSERT_OK(Put(Key(key_id), "value" + std::to_string(key_id)));
|
|
4807
4832
|
}
|
|
4808
4833
|
ASSERT_OK(Flush());
|
|
4809
4834
|
}
|
|
@@ -4813,7 +4838,7 @@ TEST_F(DBCompactionTest, SubcompactionEvent) {
|
|
|
4813
4838
|
for (int i = 0; i < 2; i++) {
|
|
4814
4839
|
for (int j = 0; j < 10; j++) {
|
|
4815
4840
|
int key_id = i * 20 + j * 2;
|
|
4816
|
-
ASSERT_OK(Put(Key(key_id), "value" +
|
|
4841
|
+
ASSERT_OK(Put(Key(key_id), "value" + std::to_string(key_id)));
|
|
4817
4842
|
}
|
|
4818
4843
|
ASSERT_OK(Flush());
|
|
4819
4844
|
}
|
|
@@ -5805,7 +5830,7 @@ TEST_P(DBCompactionTestWithBottommostParam, SequenceKeysManualCompaction) {
|
|
|
5805
5830
|
}
|
|
5806
5831
|
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
|
|
5807
5832
|
|
|
5808
|
-
ASSERT_EQ(
|
|
5833
|
+
ASSERT_EQ(std::to_string(kSstNum), FilesPerLevel(0));
|
|
5809
5834
|
|
|
5810
5835
|
auto cro = CompactRangeOptions();
|
|
5811
5836
|
cro.bottommost_level_compaction = bottommost_level_compaction_;
|
|
@@ -5818,7 +5843,7 @@ TEST_P(DBCompactionTestWithBottommostParam, SequenceKeysManualCompaction) {
|
|
|
5818
5843
|
ASSERT_EQ("0,1", FilesPerLevel(0));
|
|
5819
5844
|
} else {
|
|
5820
5845
|
// Just trivial move from level 0 -> 1
|
|
5821
|
-
ASSERT_EQ("0," +
|
|
5846
|
+
ASSERT_EQ("0," + std::to_string(kSstNum), FilesPerLevel(0));
|
|
5822
5847
|
}
|
|
5823
5848
|
}
|
|
5824
5849
|
|
|
@@ -7149,7 +7174,7 @@ TEST_F(DBCompactionTest, DisableManualCompactionThreadQueueFull) {
|
|
|
7149
7174
|
ASSERT_OK(Put(Key(2), "value2"));
|
|
7150
7175
|
ASSERT_OK(Flush());
|
|
7151
7176
|
}
|
|
7152
|
-
ASSERT_EQ(
|
|
7177
|
+
ASSERT_EQ(std::to_string(kNumL0Files + (kNumL0Files / 2)), FilesPerLevel(0));
|
|
7153
7178
|
|
|
7154
7179
|
db_->DisableManualCompaction();
|
|
7155
7180
|
|
|
@@ -7206,7 +7231,7 @@ TEST_F(DBCompactionTest, DisableManualCompactionThreadQueueFullDBClose) {
|
|
|
7206
7231
|
ASSERT_OK(Put(Key(2), "value2"));
|
|
7207
7232
|
ASSERT_OK(Flush());
|
|
7208
7233
|
}
|
|
7209
|
-
ASSERT_EQ(
|
|
7234
|
+
ASSERT_EQ(std::to_string(kNumL0Files + (kNumL0Files / 2)), FilesPerLevel(0));
|
|
7210
7235
|
|
|
7211
7236
|
db_->DisableManualCompaction();
|
|
7212
7237
|
|
|
@@ -7266,7 +7291,7 @@ TEST_F(DBCompactionTest, DBCloseWithManualCompaction) {
|
|
|
7266
7291
|
ASSERT_OK(Put(Key(2), "value2"));
|
|
7267
7292
|
ASSERT_OK(Flush());
|
|
7268
7293
|
}
|
|
7269
|
-
ASSERT_EQ(
|
|
7294
|
+
ASSERT_EQ(std::to_string(kNumL0Files + (kNumL0Files / 2)), FilesPerLevel(0));
|
|
7270
7295
|
|
|
7271
7296
|
// Close DB with manual compaction and auto triggered compaction in the queue.
|
|
7272
7297
|
auto s = db_->Close();
|
|
@@ -177,7 +177,7 @@ Status DBImpl::GetLiveFilesStorageInfo(
|
|
|
177
177
|
VectorLogPtr live_wal_files;
|
|
178
178
|
bool flush_memtable = true;
|
|
179
179
|
if (!immutable_db_options_.allow_2pc) {
|
|
180
|
-
if (opts.wal_size_for_flush ==
|
|
180
|
+
if (opts.wal_size_for_flush == std::numeric_limits<uint64_t>::max()) {
|
|
181
181
|
flush_memtable = false;
|
|
182
182
|
} else if (opts.wal_size_for_flush > 0) {
|
|
183
183
|
// If the outstanding log files are small, we skip the flush.
|
|
@@ -2356,7 +2356,7 @@ TEST_P(DBAtomicFlushTest, PrecomputeMinLogNumberToKeepNon2PC) {
|
|
|
2356
2356
|
ASSERT_OK(Flush(cf_ids));
|
|
2357
2357
|
uint64_t log_num_after_flush = dbfull()->TEST_GetCurrentLogNumber();
|
|
2358
2358
|
|
|
2359
|
-
uint64_t min_log_number_to_keep =
|
|
2359
|
+
uint64_t min_log_number_to_keep = std::numeric_limits<uint64_t>::max();
|
|
2360
2360
|
autovector<ColumnFamilyData*> flushed_cfds;
|
|
2361
2361
|
autovector<autovector<VersionEdit*>> flush_edits;
|
|
2362
2362
|
for (size_t i = 0; i != num_cfs; ++i) {
|
|
@@ -567,7 +567,7 @@ Status DBImpl::CloseHelper() {
|
|
|
567
567
|
// flushing by first checking if there is a need for
|
|
568
568
|
// flushing (but need to implement something
|
|
569
569
|
// else than imm()->IsFlushPending() because the output
|
|
570
|
-
// memtables added to imm()
|
|
570
|
+
// memtables added to imm() don't trigger flushes).
|
|
571
571
|
if (immutable_db_options_.experimental_mempurge_threshold > 0.0) {
|
|
572
572
|
Status flush_ret;
|
|
573
573
|
mutex_.Unlock();
|
|
@@ -849,7 +849,8 @@ void DBImpl::PersistStats() {
|
|
|
849
849
|
if (stats_slice_.find(stat.first) != stats_slice_.end()) {
|
|
850
850
|
uint64_t delta = stat.second - stats_slice_[stat.first];
|
|
851
851
|
s = batch.Put(persist_stats_cf_handle_,
|
|
852
|
-
Slice(key, std::min(100, length)),
|
|
852
|
+
Slice(key, std::min(100, length)),
|
|
853
|
+
std::to_string(delta));
|
|
853
854
|
}
|
|
854
855
|
}
|
|
855
856
|
}
|
|
@@ -1722,17 +1723,6 @@ Status DBImpl::Get(const ReadOptions& read_options,
|
|
|
1722
1723
|
return s;
|
|
1723
1724
|
}
|
|
1724
1725
|
|
|
1725
|
-
namespace {
|
|
1726
|
-
class GetWithTimestampReadCallback : public ReadCallback {
|
|
1727
|
-
public:
|
|
1728
|
-
explicit GetWithTimestampReadCallback(SequenceNumber seq)
|
|
1729
|
-
: ReadCallback(seq) {}
|
|
1730
|
-
bool IsVisibleFullCheck(SequenceNumber seq) override {
|
|
1731
|
-
return seq <= max_visible_seq_;
|
|
1732
|
-
}
|
|
1733
|
-
};
|
|
1734
|
-
} // namespace
|
|
1735
|
-
|
|
1736
1726
|
Status DBImpl::GetImpl(const ReadOptions& read_options, const Slice& key,
|
|
1737
1727
|
GetImplOptions& get_impl_options) {
|
|
1738
1728
|
assert(get_impl_options.value != nullptr ||
|
|
@@ -2589,7 +2579,8 @@ Status DBImpl::MultiGetImpl(
|
|
|
2589
2579
|
? MultiGetContext::MAX_BATCH_SIZE
|
|
2590
2580
|
: keys_left;
|
|
2591
2581
|
MultiGetContext ctx(sorted_keys, start_key + num_keys - keys_left,
|
|
2592
|
-
batch_size, snapshot, read_options)
|
|
2582
|
+
batch_size, snapshot, read_options, GetFileSystem(),
|
|
2583
|
+
stats_);
|
|
2593
2584
|
MultiGetRange range = ctx.GetMultiGetRange();
|
|
2594
2585
|
range.AddValueSize(curr_value_size);
|
|
2595
2586
|
bool lookup_current = false;
|
|
@@ -3355,7 +3346,7 @@ bool DBImpl::GetProperty(ColumnFamilyHandle* column_family,
|
|
|
3355
3346
|
bool ret_value =
|
|
3356
3347
|
GetIntPropertyInternal(cfd, *property_info, false, &int_value);
|
|
3357
3348
|
if (ret_value) {
|
|
3358
|
-
*value =
|
|
3349
|
+
*value = std::to_string(int_value);
|
|
3359
3350
|
}
|
|
3360
3351
|
return ret_value;
|
|
3361
3352
|
} else if (property_info->handle_string) {
|
|
@@ -3990,8 +3981,8 @@ Status DBImpl::CheckConsistency() {
|
|
|
3990
3981
|
} else if (fsize != md.size) {
|
|
3991
3982
|
corruption_messages += "Sst file size mismatch: " + file_path +
|
|
3992
3983
|
". Size recorded in manifest " +
|
|
3993
|
-
|
|
3994
|
-
|
|
3984
|
+
std::to_string(md.size) + ", actual size " +
|
|
3985
|
+
std::to_string(fsize) + "\n";
|
|
3995
3986
|
}
|
|
3996
3987
|
}
|
|
3997
3988
|
}
|
|
@@ -5123,8 +5114,8 @@ Status DBImpl::VerifyChecksumInternal(const ReadOptions& read_options,
|
|
|
5123
5114
|
fmeta->file_checksum_func_name, fname,
|
|
5124
5115
|
read_options);
|
|
5125
5116
|
} else {
|
|
5126
|
-
s = ROCKSDB_NAMESPACE::VerifySstFileChecksum(
|
|
5127
|
-
|
|
5117
|
+
s = ROCKSDB_NAMESPACE::VerifySstFileChecksum(
|
|
5118
|
+
opts, file_options_, read_options, fname, fd.largest_seqno);
|
|
5128
5119
|
}
|
|
5129
5120
|
RecordTick(stats_, VERIFY_CHECKSUM_READ_BYTES,
|
|
5130
5121
|
IOSTATS(bytes_read) - prev_bytes_read);
|
|
@@ -5338,7 +5329,7 @@ Status DBImpl::ReserveFileNumbersBeforeIngestion(
|
|
|
5338
5329
|
|
|
5339
5330
|
Status DBImpl::GetCreationTimeOfOldestFile(uint64_t* creation_time) {
|
|
5340
5331
|
if (mutable_db_options_.max_open_files == -1) {
|
|
5341
|
-
uint64_t oldest_time =
|
|
5332
|
+
uint64_t oldest_time = std::numeric_limits<uint64_t>::max();
|
|
5342
5333
|
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
|
5343
5334
|
if (!cfd->IsDropped()) {
|
|
5344
5335
|
uint64_t ctime;
|
|
@@ -1974,6 +1974,11 @@ class DBImpl : public DB {
|
|
|
1974
1974
|
IOStatus CreateWAL(uint64_t log_file_num, uint64_t recycle_log_number,
|
|
1975
1975
|
size_t preallocate_block_size, log::Writer** new_log);
|
|
1976
1976
|
|
|
1977
|
+
// Verify SST file unique id between Manifest and table properties to make
|
|
1978
|
+
// sure they're the same. Currently only used during DB open when
|
|
1979
|
+
// `verify_sst_unique_id_in_manifest = true`.
|
|
1980
|
+
Status VerifySstUniqueIdInManifest();
|
|
1981
|
+
|
|
1977
1982
|
// Validate self-consistency of DB options
|
|
1978
1983
|
static Status ValidateOptions(const DBOptions& db_options);
|
|
1979
1984
|
// Validate self-consistency of DB options and its consistency with cf options
|
|
@@ -2299,7 +2304,7 @@ class DBImpl : public DB {
|
|
|
2299
2304
|
|
|
2300
2305
|
static const int KEEP_LOG_FILE_NUM = 1000;
|
|
2301
2306
|
// MSVC version 1800 still does not have constexpr for ::max()
|
|
2302
|
-
static const uint64_t kNoTimeOut =
|
|
2307
|
+
static const uint64_t kNoTimeOut = std::numeric_limits<uint64_t>::max();
|
|
2303
2308
|
|
|
2304
2309
|
std::string db_absolute_path_;
|
|
2305
2310
|
|
|
@@ -2395,6 +2400,15 @@ class DBImpl : public DB {
|
|
|
2395
2400
|
std::unique_ptr<StallInterface> wbm_stall_;
|
|
2396
2401
|
};
|
|
2397
2402
|
|
|
2403
|
+
class GetWithTimestampReadCallback : public ReadCallback {
|
|
2404
|
+
public:
|
|
2405
|
+
explicit GetWithTimestampReadCallback(SequenceNumber seq)
|
|
2406
|
+
: ReadCallback(seq) {}
|
|
2407
|
+
bool IsVisibleFullCheck(SequenceNumber seq) override {
|
|
2408
|
+
return seq <= max_visible_seq_;
|
|
2409
|
+
}
|
|
2410
|
+
};
|
|
2411
|
+
|
|
2398
2412
|
extern Options SanitizeOptions(const std::string& db, const Options& src,
|
|
2399
2413
|
bool read_only = false);
|
|
2400
2414
|
|
|
@@ -188,7 +188,7 @@ Status DBImpl::FlushMemTableToOutputFile(
|
|
|
188
188
|
// a memtable without knowing such snapshot(s).
|
|
189
189
|
uint64_t max_memtable_id = needs_to_sync_closed_wals
|
|
190
190
|
? cfd->imm()->GetLatestMemTableID()
|
|
191
|
-
:
|
|
191
|
+
: std::numeric_limits<uint64_t>::max();
|
|
192
192
|
|
|
193
193
|
// If needs_to_sync_closed_wals is false, then the flush job will pick ALL
|
|
194
194
|
// existing memtables of the column family when PickMemTable() is called
|
|
@@ -1041,7 +1041,8 @@ Status DBImpl::CompactRangeInternal(const CompactRangeOptions& options,
|
|
|
1041
1041
|
}
|
|
1042
1042
|
s = RunManualCompaction(cfd, ColumnFamilyData::kCompactAllLevels,
|
|
1043
1043
|
final_output_level, options, begin, end, exclusive,
|
|
1044
|
-
false,
|
|
1044
|
+
false, std::numeric_limits<uint64_t>::max(),
|
|
1045
|
+
trim_ts);
|
|
1045
1046
|
} else {
|
|
1046
1047
|
int first_overlapped_level = kInvalidLevel;
|
|
1047
1048
|
int max_overlapped_level = kInvalidLevel;
|
|
@@ -1078,7 +1079,7 @@ Status DBImpl::CompactRangeInternal(const CompactRangeOptions& options,
|
|
|
1078
1079
|
if (s.ok() && first_overlapped_level != kInvalidLevel) {
|
|
1079
1080
|
// max_file_num_to_ignore can be used to filter out newly created SST
|
|
1080
1081
|
// files, useful for bottom level compaction in a manual compaction
|
|
1081
|
-
uint64_t max_file_num_to_ignore =
|
|
1082
|
+
uint64_t max_file_num_to_ignore = std::numeric_limits<uint64_t>::max();
|
|
1082
1083
|
uint64_t next_file_number = versions_->current_next_file_number();
|
|
1083
1084
|
final_output_level = max_overlapped_level;
|
|
1084
1085
|
int output_level;
|
|
@@ -1650,7 +1651,8 @@ Status DBImpl::ReFitLevel(ColumnFamilyData* cfd, int level, int target_level) {
|
|
|
1650
1651
|
f->smallest, f->largest, f->fd.smallest_seqno, f->fd.largest_seqno,
|
|
1651
1652
|
f->marked_for_compaction, f->temperature, f->oldest_blob_file_number,
|
|
1652
1653
|
f->oldest_ancester_time, f->file_creation_time, f->file_checksum,
|
|
1653
|
-
f->file_checksum_func_name, f->min_timestamp, f->max_timestamp
|
|
1654
|
+
f->file_checksum_func_name, f->min_timestamp, f->max_timestamp,
|
|
1655
|
+
f->unique_id);
|
|
1654
1656
|
}
|
|
1655
1657
|
ROCKS_LOG_DEBUG(immutable_db_options_.info_log,
|
|
1656
1658
|
"[%s] Apply version edit:\n%s", cfd->GetName().c_str(),
|
|
@@ -1855,11 +1857,12 @@ Status DBImpl::RunManualCompaction(
|
|
|
1855
1857
|
}
|
|
1856
1858
|
}
|
|
1857
1859
|
|
|
1858
|
-
ROCKS_LOG_INFO(immutable_db_options_.info_log,
|
|
1859
|
-
"[%s] Manual compaction starting", cfd->GetName().c_str());
|
|
1860
|
-
|
|
1861
1860
|
LogBuffer log_buffer(InfoLogLevel::INFO_LEVEL,
|
|
1862
1861
|
immutable_db_options_.info_log.get());
|
|
1862
|
+
|
|
1863
|
+
ROCKS_LOG_BUFFER(&log_buffer, "[%s] Manual compaction starting",
|
|
1864
|
+
cfd->GetName().c_str());
|
|
1865
|
+
|
|
1863
1866
|
// We don't check bg_error_ here, because if we get the error in compaction,
|
|
1864
1867
|
// the compaction will set manual.status to bg_error_ and set manual.done to
|
|
1865
1868
|
// true.
|
|
@@ -2013,7 +2016,7 @@ Status DBImpl::FlushMemTable(ColumnFamilyData* cfd,
|
|
|
2013
2016
|
// be created and scheduled, status::OK() will be returned.
|
|
2014
2017
|
s = SwitchMemtable(cfd, &context);
|
|
2015
2018
|
}
|
|
2016
|
-
const uint64_t flush_memtable_id =
|
|
2019
|
+
const uint64_t flush_memtable_id = std::numeric_limits<uint64_t>::max();
|
|
2017
2020
|
if (s.ok()) {
|
|
2018
2021
|
if (cfd->imm()->NumNotFlushed() != 0 || !cfd->mem()->IsEmpty() ||
|
|
2019
2022
|
!cached_recoverable_state_empty_.load()) {
|
|
@@ -3275,7 +3278,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3275
3278
|
f->fd.largest_seqno, f->marked_for_compaction, f->temperature,
|
|
3276
3279
|
f->oldest_blob_file_number, f->oldest_ancester_time,
|
|
3277
3280
|
f->file_creation_time, f->file_checksum, f->file_checksum_func_name,
|
|
3278
|
-
f->min_timestamp, f->max_timestamp);
|
|
3281
|
+
f->min_timestamp, f->max_timestamp, f->unique_id);
|
|
3279
3282
|
|
|
3280
3283
|
ROCKS_LOG_BUFFER(
|
|
3281
3284
|
log_buffer,
|
|
@@ -118,10 +118,11 @@ Status DBImpl::TEST_CompactRange(int level, const Slice* begin,
|
|
|
118
118
|
cfd->ioptions()->compaction_style == kCompactionStyleFIFO)
|
|
119
119
|
? level
|
|
120
120
|
: level + 1;
|
|
121
|
-
return RunManualCompaction(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
121
|
+
return RunManualCompaction(
|
|
122
|
+
cfd, level, output_level, CompactRangeOptions(), begin, end, true,
|
|
123
|
+
disallow_trivial_move,
|
|
124
|
+
std::numeric_limits<uint64_t>::max() /*max_file_num_to_ignore*/,
|
|
125
|
+
"" /*trim_ts*/);
|
|
125
126
|
}
|
|
126
127
|
|
|
127
128
|
Status DBImpl::TEST_SwitchMemtable(ColumnFamilyData* cfd) {
|
|
@@ -137,7 +137,7 @@ Status DBImpl::PromoteL0(ColumnFamilyHandle* column_family, int target_level) {
|
|
|
137
137
|
f->fd.largest_seqno, f->marked_for_compaction, f->temperature,
|
|
138
138
|
f->oldest_blob_file_number, f->oldest_ancester_time,
|
|
139
139
|
f->file_creation_time, f->file_checksum, f->file_checksum_func_name,
|
|
140
|
-
f->min_timestamp, f->max_timestamp);
|
|
140
|
+
f->min_timestamp, f->max_timestamp, f->unique_id);
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
status = versions_->LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
|
|
@@ -761,7 +761,7 @@ uint64_t PrecomputeMinLogNumberToKeepNon2PC(
|
|
|
761
761
|
assert(!cfds_to_flush.empty());
|
|
762
762
|
assert(cfds_to_flush.size() == edit_lists.size());
|
|
763
763
|
|
|
764
|
-
uint64_t min_log_number_to_keep =
|
|
764
|
+
uint64_t min_log_number_to_keep = std::numeric_limits<uint64_t>::max();
|
|
765
765
|
for (const auto& edit_list : edit_lists) {
|
|
766
766
|
uint64_t log = 0;
|
|
767
767
|
for (const auto& e : edit_list) {
|
|
@@ -773,7 +773,7 @@ uint64_t PrecomputeMinLogNumberToKeepNon2PC(
|
|
|
773
773
|
min_log_number_to_keep = std::min(min_log_number_to_keep, log);
|
|
774
774
|
}
|
|
775
775
|
}
|
|
776
|
-
if (min_log_number_to_keep ==
|
|
776
|
+
if (min_log_number_to_keep == std::numeric_limits<uint64_t>::max()) {
|
|
777
777
|
min_log_number_to_keep = cfds_to_flush[0]->GetLogNumber();
|
|
778
778
|
for (size_t i = 1; i < cfds_to_flush.size(); i++) {
|
|
779
779
|
min_log_number_to_keep =
|
|
@@ -518,6 +518,12 @@ Status DBImpl::Recover(
|
|
|
518
518
|
if (!s.ok()) {
|
|
519
519
|
return s;
|
|
520
520
|
}
|
|
521
|
+
if (immutable_db_options_.verify_sst_unique_id_in_manifest) {
|
|
522
|
+
s = VerifySstUniqueIdInManifest();
|
|
523
|
+
if (!s.ok()) {
|
|
524
|
+
return s;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
521
527
|
s = SetDBId(read_only);
|
|
522
528
|
if (s.ok() && !read_only) {
|
|
523
529
|
s = DeleteUnreferencedSstFiles();
|
|
@@ -698,6 +704,25 @@ Status DBImpl::Recover(
|
|
|
698
704
|
return s;
|
|
699
705
|
}
|
|
700
706
|
|
|
707
|
+
Status DBImpl::VerifySstUniqueIdInManifest() {
|
|
708
|
+
mutex_.AssertHeld();
|
|
709
|
+
ROCKS_LOG_INFO(
|
|
710
|
+
immutable_db_options_.info_log,
|
|
711
|
+
"Verifying SST unique id between MANIFEST and SST file table properties");
|
|
712
|
+
Status status;
|
|
713
|
+
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
|
714
|
+
if (!cfd->IsDropped()) {
|
|
715
|
+
auto version = cfd->current();
|
|
716
|
+
version->Ref();
|
|
717
|
+
mutex_.Unlock();
|
|
718
|
+
status = version->VerifySstUniqueIds();
|
|
719
|
+
mutex_.Lock();
|
|
720
|
+
version->Unref();
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
return status;
|
|
724
|
+
}
|
|
725
|
+
|
|
701
726
|
Status DBImpl::PersistentStatsProcessFormatVersion() {
|
|
702
727
|
mutex_.AssertHeld();
|
|
703
728
|
Status s;
|
|
@@ -760,11 +785,11 @@ Status DBImpl::PersistentStatsProcessFormatVersion() {
|
|
|
760
785
|
WriteBatch batch;
|
|
761
786
|
if (s.ok()) {
|
|
762
787
|
s = batch.Put(persist_stats_cf_handle_, kFormatVersionKeyString,
|
|
763
|
-
|
|
788
|
+
std::to_string(kStatsCFCurrentFormatVersion));
|
|
764
789
|
}
|
|
765
790
|
if (s.ok()) {
|
|
766
791
|
s = batch.Put(persist_stats_cf_handle_, kCompatibleVersionKeyString,
|
|
767
|
-
|
|
792
|
+
std::to_string(kStatsCFCompatibleFormatVersion));
|
|
768
793
|
}
|
|
769
794
|
if (s.ok()) {
|
|
770
795
|
WriteOptions wo;
|
|
@@ -947,7 +972,6 @@ Status DBImpl::RecoverLogFiles(const std::vector<uint64_t>& wal_numbers,
|
|
|
947
972
|
// Read all the records and add to a memtable
|
|
948
973
|
std::string scratch;
|
|
949
974
|
Slice record;
|
|
950
|
-
WriteBatch batch;
|
|
951
975
|
|
|
952
976
|
TEST_SYNC_POINT_CALLBACK("DBImpl::RecoverLogFiles:BeforeReadWal",
|
|
953
977
|
/*arg=*/nullptr);
|
|
@@ -961,10 +985,15 @@ Status DBImpl::RecoverLogFiles(const std::vector<uint64_t>& wal_numbers,
|
|
|
961
985
|
continue;
|
|
962
986
|
}
|
|
963
987
|
|
|
988
|
+
// We create a new batch and initialize with a valid prot_info_ to store
|
|
989
|
+
// the data checksums
|
|
990
|
+
WriteBatch batch(0, 0, 8, 0);
|
|
991
|
+
|
|
964
992
|
status = WriteBatchInternal::SetContents(&batch, record);
|
|
965
993
|
if (!status.ok()) {
|
|
966
994
|
return status;
|
|
967
995
|
}
|
|
996
|
+
|
|
968
997
|
SequenceNumber sequence = WriteBatchInternal::Sequence(&batch);
|
|
969
998
|
|
|
970
999
|
if (immutable_db_options_.wal_recovery_mode ==
|
|
@@ -1322,6 +1351,7 @@ Status DBImpl::GetLogSizeAndMaybeTruncate(uint64_t wal_number, bool truncate,
|
|
|
1322
1351
|
Status s;
|
|
1323
1352
|
// This gets the appear size of the wals, not including preallocated space.
|
|
1324
1353
|
s = env_->GetFileSize(fname, &log.size);
|
|
1354
|
+
TEST_SYNC_POINT_CALLBACK("DBImpl::GetLogSizeAndMaybeTruncate:0", /*arg=*/&s);
|
|
1325
1355
|
if (s.ok() && truncate) {
|
|
1326
1356
|
std::unique_ptr<FSWritableFile> last_log;
|
|
1327
1357
|
Status truncate_status = fs_->ReopenWritableFile(
|
|
@@ -1493,13 +1523,14 @@ Status DBImpl::WriteLevel0TableForRecovery(int job_id, ColumnFamilyData* cfd,
|
|
|
1493
1523
|
constexpr int level = 0;
|
|
1494
1524
|
|
|
1495
1525
|
if (s.ok() && has_output) {
|
|
1496
|
-
edit->AddFile(
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1526
|
+
edit->AddFile(level, meta.fd.GetNumber(), meta.fd.GetPathId(),
|
|
1527
|
+
meta.fd.GetFileSize(), meta.smallest, meta.largest,
|
|
1528
|
+
meta.fd.smallest_seqno, meta.fd.largest_seqno,
|
|
1529
|
+
meta.marked_for_compaction, meta.temperature,
|
|
1530
|
+
meta.oldest_blob_file_number, meta.oldest_ancester_time,
|
|
1531
|
+
meta.file_creation_time, meta.file_checksum,
|
|
1532
|
+
meta.file_checksum_func_name, meta.min_timestamp,
|
|
1533
|
+
meta.max_timestamp, meta.unique_id);
|
|
1503
1534
|
|
|
1504
1535
|
for (const auto& blob : blob_file_additions) {
|
|
1505
1536
|
edit->AddBlobFile(blob);
|
|
@@ -1821,6 +1852,7 @@ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname,
|
|
|
1821
1852
|
if (s.ok()) {
|
|
1822
1853
|
// Need to fsync, otherwise it might get lost after a power reset.
|
|
1823
1854
|
s = impl->FlushWAL(false);
|
|
1855
|
+
TEST_SYNC_POINT_CALLBACK("DBImpl::Open::BeforeSyncWAL", /*arg=*/&s);
|
|
1824
1856
|
if (s.ok()) {
|
|
1825
1857
|
s = log_writer->file()->Sync(impl->immutable_db_options_.use_fsync);
|
|
1826
1858
|
}
|