@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
|
@@ -104,6 +104,9 @@ struct OptionsOverride {
|
|
|
104
104
|
std::shared_ptr<const FilterPolicy> filter_policy = nullptr;
|
|
105
105
|
// These will be used only if filter_policy is set
|
|
106
106
|
bool partition_filters = false;
|
|
107
|
+
// Force using a default block cache. (Setting to false allows ASAN build
|
|
108
|
+
// use a trivially small block cache for better UAF error detection.)
|
|
109
|
+
bool full_block_cache = false;
|
|
107
110
|
uint64_t metadata_block_size = 1024;
|
|
108
111
|
|
|
109
112
|
// Used as a bit mask of individual enums in which to skip an XF test point
|
|
@@ -949,6 +952,51 @@ class CacheWrapper : public Cache {
|
|
|
949
952
|
std::shared_ptr<Cache> target_;
|
|
950
953
|
};
|
|
951
954
|
|
|
955
|
+
/*
|
|
956
|
+
* A cache wrapper that tracks certain CacheEntryRole's cache charge, its
|
|
957
|
+
* peaks and increments
|
|
958
|
+
*
|
|
959
|
+
* p0
|
|
960
|
+
* / \ p1
|
|
961
|
+
* / \ /\
|
|
962
|
+
* / \/ \
|
|
963
|
+
* a / b \
|
|
964
|
+
* peaks = {p0, p1}
|
|
965
|
+
* increments = {p1-a, p2-b}
|
|
966
|
+
*/
|
|
967
|
+
template <CacheEntryRole R>
|
|
968
|
+
class TargetCacheChargeTrackingCache : public CacheWrapper {
|
|
969
|
+
public:
|
|
970
|
+
explicit TargetCacheChargeTrackingCache(std::shared_ptr<Cache> target);
|
|
971
|
+
|
|
972
|
+
using Cache::Insert;
|
|
973
|
+
Status Insert(const Slice& key, void* value, size_t charge,
|
|
974
|
+
void (*deleter)(const Slice& key, void* value),
|
|
975
|
+
Handle** handle = nullptr,
|
|
976
|
+
Priority priority = Priority::LOW) override;
|
|
977
|
+
|
|
978
|
+
using Cache::Release;
|
|
979
|
+
bool Release(Handle* handle, bool erase_if_last_ref = false) override;
|
|
980
|
+
|
|
981
|
+
std::size_t GetCacheCharge() { return cur_cache_charge_; }
|
|
982
|
+
|
|
983
|
+
std::deque<std::size_t> GetChargedCachePeaks() { return cache_charge_peaks_; }
|
|
984
|
+
|
|
985
|
+
std::size_t GetChargedCacheIncrementSum() {
|
|
986
|
+
return cache_charge_increments_sum_;
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
private:
|
|
990
|
+
static const Cache::DeleterFn kNoopDeleter;
|
|
991
|
+
|
|
992
|
+
std::size_t cur_cache_charge_;
|
|
993
|
+
std::size_t cache_charge_peak_;
|
|
994
|
+
std::size_t cache_charge_increment_;
|
|
995
|
+
bool last_peak_tracked_;
|
|
996
|
+
std::deque<std::size_t> cache_charge_peaks_;
|
|
997
|
+
std::size_t cache_charge_increments_sum_;
|
|
998
|
+
};
|
|
999
|
+
|
|
952
1000
|
class DBTestBase : public testing::Test {
|
|
953
1001
|
public:
|
|
954
1002
|
// Sequence of option configurations to try
|
|
@@ -1151,10 +1199,12 @@ class DBTestBase : public testing::Test {
|
|
|
1151
1199
|
std::vector<std::string> MultiGet(std::vector<int> cfs,
|
|
1152
1200
|
const std::vector<std::string>& k,
|
|
1153
1201
|
const Snapshot* snapshot,
|
|
1154
|
-
const bool batched
|
|
1202
|
+
const bool batched,
|
|
1203
|
+
const bool async = false);
|
|
1155
1204
|
|
|
1156
1205
|
std::vector<std::string> MultiGet(const std::vector<std::string>& k,
|
|
1157
|
-
const Snapshot* snapshot = nullptr
|
|
1206
|
+
const Snapshot* snapshot = nullptr,
|
|
1207
|
+
const bool async = false);
|
|
1158
1208
|
|
|
1159
1209
|
uint64_t GetNumSnapshots();
|
|
1160
1210
|
|
|
@@ -549,7 +549,7 @@ TEST_P(DBTestUniversalCompaction, CompactFilesOnUniversalCompaction) {
|
|
|
549
549
|
ASSERT_EQ(options.compaction_style, kCompactionStyleUniversal);
|
|
550
550
|
Random rnd(301);
|
|
551
551
|
for (int key = 1024 * kEntriesPerBuffer; key >= 0; --key) {
|
|
552
|
-
ASSERT_OK(Put(1,
|
|
552
|
+
ASSERT_OK(Put(1, std::to_string(key), rnd.RandomString(kTestValueSize)));
|
|
553
553
|
}
|
|
554
554
|
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable(handles_[1]));
|
|
555
555
|
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
@@ -1009,7 +1009,7 @@ TEST_F(DBWALTest, RecoveryWithLogDataForSomeCFs) {
|
|
|
1009
1009
|
if (log_files.size() > 0) {
|
|
1010
1010
|
earliest_log_nums[i] = log_files[0]->LogNumber();
|
|
1011
1011
|
} else {
|
|
1012
|
-
earliest_log_nums[i] =
|
|
1012
|
+
earliest_log_nums[i] = std::numeric_limits<uint64_t>::max();
|
|
1013
1013
|
}
|
|
1014
1014
|
}
|
|
1015
1015
|
// Check at least the first WAL was cleaned up during the recovery.
|
|
@@ -1288,7 +1288,7 @@ class RecoveryTestHelper {
|
|
|
1288
1288
|
|
|
1289
1289
|
WriteBatch batch;
|
|
1290
1290
|
for (int i = 0; i < kKeysPerWALFile; i++) {
|
|
1291
|
-
std::string key = "key" +
|
|
1291
|
+
std::string key = "key" + std::to_string((*count)++);
|
|
1292
1292
|
std::string value = test->DummyString(kValueSize);
|
|
1293
1293
|
ASSERT_NE(current_log_writer.get(), nullptr);
|
|
1294
1294
|
uint64_t seq = versions->LastSequence() + 1;
|
|
@@ -1319,7 +1319,7 @@ class RecoveryTestHelper {
|
|
|
1319
1319
|
static size_t GetData(DBWALTestBase* test) {
|
|
1320
1320
|
size_t count = 0;
|
|
1321
1321
|
for (size_t i = 0; i < kWALFilesCount * kKeysPerWALFile; i++) {
|
|
1322
|
-
if (test->Get("key" +
|
|
1322
|
+
if (test->Get("key" + std::to_string(i)) != "NOT_FOUND") {
|
|
1323
1323
|
++count;
|
|
1324
1324
|
}
|
|
1325
1325
|
}
|
|
@@ -1616,7 +1616,7 @@ TEST_P(DBWALTestWithParams, kPointInTimeRecovery) {
|
|
|
1616
1616
|
if (!trunc || corrupt_offset != 0) {
|
|
1617
1617
|
bool expect_data = true;
|
|
1618
1618
|
for (size_t k = 0; k < maxkeys; ++k) {
|
|
1619
|
-
bool found = Get("key" +
|
|
1619
|
+
bool found = Get("key" + std::to_string(k)) != "NOT_FOUND";
|
|
1620
1620
|
if (expect_data && !found) {
|
|
1621
1621
|
expect_data = false;
|
|
1622
1622
|
}
|
|
@@ -1752,7 +1752,7 @@ TEST_F(DBWALTest, RecoverWithoutFlush) {
|
|
|
1752
1752
|
size_t count = RecoveryTestHelper::FillData(this, &options);
|
|
1753
1753
|
auto validateData = [this, count]() {
|
|
1754
1754
|
for (size_t i = 0; i < count; i++) {
|
|
1755
|
-
ASSERT_NE(Get("key" +
|
|
1755
|
+
ASSERT_NE(Get("key" + std::to_string(i)), "NOT_FOUND");
|
|
1756
1756
|
}
|
|
1757
1757
|
};
|
|
1758
1758
|
Reopen(options);
|
|
@@ -1891,7 +1891,7 @@ TEST_P(DBWALTestWithParamsVaryingRecoveryMode,
|
|
|
1891
1891
|
ASSERT_OK(TryReopen(options));
|
|
1892
1892
|
// Append some more data.
|
|
1893
1893
|
for (int k = 0; k < kAppendKeys; k++) {
|
|
1894
|
-
std::string key = "extra_key" +
|
|
1894
|
+
std::string key = "extra_key" + std::to_string(k);
|
|
1895
1895
|
std::string value = DummyString(RecoveryTestHelper::kValueSize);
|
|
1896
1896
|
ASSERT_OK(Put(key, value));
|
|
1897
1897
|
}
|
|
@@ -1925,7 +1925,7 @@ TEST_F(DBWALTest, RestoreTotalLogSizeAfterRecoverWithoutFlush) {
|
|
|
1925
1925
|
std::string value_300k(300 * kKB, 'v');
|
|
1926
1926
|
ASSERT_OK(Put(0, "foo", "v1"));
|
|
1927
1927
|
for (int i = 0; i < 9; i++) {
|
|
1928
|
-
ASSERT_OK(Put(1, "key" +
|
|
1928
|
+
ASSERT_OK(Put(1, "key" + std::to_string(i), value_100k));
|
|
1929
1929
|
}
|
|
1930
1930
|
// Get log files before reopen.
|
|
1931
1931
|
VectorLogPtr log_files_before;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// Use of this source code is governed by a BSD-style license that can be
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
|
|
10
|
-
#include "db/
|
|
10
|
+
#include "db/db_with_timestamp_test_util.h"
|
|
11
11
|
#include "port/stack_trace.h"
|
|
12
12
|
#include "rocksdb/perf_context.h"
|
|
13
13
|
#include "rocksdb/utilities/debug.h"
|
|
@@ -20,176 +20,6 @@
|
|
|
20
20
|
#include "utilities/fault_injection_env.h"
|
|
21
21
|
|
|
22
22
|
namespace ROCKSDB_NAMESPACE {
|
|
23
|
-
class DBBasicTestWithTimestampBase : public DBTestBase {
|
|
24
|
-
public:
|
|
25
|
-
explicit DBBasicTestWithTimestampBase(const std::string& dbname)
|
|
26
|
-
: DBTestBase(dbname, /*env_do_fsync=*/true) {}
|
|
27
|
-
|
|
28
|
-
protected:
|
|
29
|
-
static std::string Key1(uint64_t k) {
|
|
30
|
-
std::string ret;
|
|
31
|
-
PutFixed64(&ret, k);
|
|
32
|
-
std::reverse(ret.begin(), ret.end());
|
|
33
|
-
return ret;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
static std::string KeyWithPrefix(std::string prefix, uint64_t k) {
|
|
37
|
-
std::string ret;
|
|
38
|
-
PutFixed64(&ret, k);
|
|
39
|
-
std::reverse(ret.begin(), ret.end());
|
|
40
|
-
return prefix + ret;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
static std::vector<Slice> ConvertStrToSlice(
|
|
44
|
-
std::vector<std::string>& strings) {
|
|
45
|
-
std::vector<Slice> ret;
|
|
46
|
-
for (const auto& s : strings) {
|
|
47
|
-
ret.emplace_back(s);
|
|
48
|
-
}
|
|
49
|
-
return ret;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
class TestComparator : public Comparator {
|
|
53
|
-
private:
|
|
54
|
-
const Comparator* cmp_without_ts_;
|
|
55
|
-
|
|
56
|
-
public:
|
|
57
|
-
explicit TestComparator(size_t ts_sz)
|
|
58
|
-
: Comparator(ts_sz), cmp_without_ts_(nullptr) {
|
|
59
|
-
cmp_without_ts_ = BytewiseComparator();
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const char* Name() const override { return "TestComparator"; }
|
|
63
|
-
|
|
64
|
-
void FindShortSuccessor(std::string*) const override {}
|
|
65
|
-
|
|
66
|
-
void FindShortestSeparator(std::string*, const Slice&) const override {}
|
|
67
|
-
|
|
68
|
-
int Compare(const Slice& a, const Slice& b) const override {
|
|
69
|
-
int r = CompareWithoutTimestamp(a, b);
|
|
70
|
-
if (r != 0 || 0 == timestamp_size()) {
|
|
71
|
-
return r;
|
|
72
|
-
}
|
|
73
|
-
return -CompareTimestamp(
|
|
74
|
-
Slice(a.data() + a.size() - timestamp_size(), timestamp_size()),
|
|
75
|
-
Slice(b.data() + b.size() - timestamp_size(), timestamp_size()));
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
using Comparator::CompareWithoutTimestamp;
|
|
79
|
-
int CompareWithoutTimestamp(const Slice& a, bool a_has_ts, const Slice& b,
|
|
80
|
-
bool b_has_ts) const override {
|
|
81
|
-
if (a_has_ts) {
|
|
82
|
-
assert(a.size() >= timestamp_size());
|
|
83
|
-
}
|
|
84
|
-
if (b_has_ts) {
|
|
85
|
-
assert(b.size() >= timestamp_size());
|
|
86
|
-
}
|
|
87
|
-
Slice lhs = a_has_ts ? StripTimestampFromUserKey(a, timestamp_size()) : a;
|
|
88
|
-
Slice rhs = b_has_ts ? StripTimestampFromUserKey(b, timestamp_size()) : b;
|
|
89
|
-
return cmp_without_ts_->Compare(lhs, rhs);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
int CompareTimestamp(const Slice& ts1, const Slice& ts2) const override {
|
|
93
|
-
if (!ts1.data() && !ts2.data()) {
|
|
94
|
-
return 0;
|
|
95
|
-
} else if (ts1.data() && !ts2.data()) {
|
|
96
|
-
return 1;
|
|
97
|
-
} else if (!ts1.data() && ts2.data()) {
|
|
98
|
-
return -1;
|
|
99
|
-
}
|
|
100
|
-
assert(ts1.size() == ts2.size());
|
|
101
|
-
uint64_t low1 = 0;
|
|
102
|
-
uint64_t low2 = 0;
|
|
103
|
-
uint64_t high1 = 0;
|
|
104
|
-
uint64_t high2 = 0;
|
|
105
|
-
const size_t kSize = ts1.size();
|
|
106
|
-
std::unique_ptr<char[]> ts1_buf(new char[kSize]);
|
|
107
|
-
memcpy(ts1_buf.get(), ts1.data(), ts1.size());
|
|
108
|
-
std::unique_ptr<char[]> ts2_buf(new char[kSize]);
|
|
109
|
-
memcpy(ts2_buf.get(), ts2.data(), ts2.size());
|
|
110
|
-
Slice ts1_copy = Slice(ts1_buf.get(), kSize);
|
|
111
|
-
Slice ts2_copy = Slice(ts2_buf.get(), kSize);
|
|
112
|
-
auto* ptr1 = const_cast<Slice*>(&ts1_copy);
|
|
113
|
-
auto* ptr2 = const_cast<Slice*>(&ts2_copy);
|
|
114
|
-
if (!GetFixed64(ptr1, &low1) || !GetFixed64(ptr1, &high1) ||
|
|
115
|
-
!GetFixed64(ptr2, &low2) || !GetFixed64(ptr2, &high2)) {
|
|
116
|
-
assert(false);
|
|
117
|
-
}
|
|
118
|
-
if (high1 < high2) {
|
|
119
|
-
return -1;
|
|
120
|
-
} else if (high1 > high2) {
|
|
121
|
-
return 1;
|
|
122
|
-
}
|
|
123
|
-
if (low1 < low2) {
|
|
124
|
-
return -1;
|
|
125
|
-
} else if (low1 > low2) {
|
|
126
|
-
return 1;
|
|
127
|
-
}
|
|
128
|
-
return 0;
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
std::string Timestamp(uint64_t low, uint64_t high) {
|
|
133
|
-
std::string ts;
|
|
134
|
-
PutFixed64(&ts, low);
|
|
135
|
-
PutFixed64(&ts, high);
|
|
136
|
-
return ts;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
void CheckIterUserEntry(const Iterator* it, const Slice& expected_key,
|
|
140
|
-
ValueType expected_value_type,
|
|
141
|
-
const Slice& expected_value,
|
|
142
|
-
const Slice& expected_ts) const {
|
|
143
|
-
ASSERT_TRUE(it->Valid());
|
|
144
|
-
ASSERT_OK(it->status());
|
|
145
|
-
ASSERT_EQ(expected_key, it->key());
|
|
146
|
-
if (kTypeValue == expected_value_type) {
|
|
147
|
-
ASSERT_EQ(expected_value, it->value());
|
|
148
|
-
}
|
|
149
|
-
ASSERT_EQ(expected_ts, it->timestamp());
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
void CheckIterEntry(const Iterator* it, const Slice& expected_ukey,
|
|
153
|
-
SequenceNumber expected_seq, ValueType expected_val_type,
|
|
154
|
-
const Slice& expected_value, const Slice& expected_ts) {
|
|
155
|
-
ASSERT_TRUE(it->Valid());
|
|
156
|
-
ASSERT_OK(it->status());
|
|
157
|
-
std::string ukey_and_ts;
|
|
158
|
-
ukey_and_ts.assign(expected_ukey.data(), expected_ukey.size());
|
|
159
|
-
ukey_and_ts.append(expected_ts.data(), expected_ts.size());
|
|
160
|
-
ParsedInternalKey parsed_ikey;
|
|
161
|
-
ASSERT_OK(
|
|
162
|
-
ParseInternalKey(it->key(), &parsed_ikey, true /* log_err_key */));
|
|
163
|
-
ASSERT_EQ(ukey_and_ts, parsed_ikey.user_key);
|
|
164
|
-
ASSERT_EQ(expected_val_type, parsed_ikey.type);
|
|
165
|
-
ASSERT_EQ(expected_seq, parsed_ikey.sequence);
|
|
166
|
-
if (expected_val_type == kTypeValue) {
|
|
167
|
-
ASSERT_EQ(expected_value, it->value());
|
|
168
|
-
}
|
|
169
|
-
ASSERT_EQ(expected_ts, it->timestamp());
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
void CheckIterEntry(const Iterator* it, const Slice& expected_ukey,
|
|
173
|
-
ValueType expected_val_type, const Slice& expected_value,
|
|
174
|
-
const Slice& expected_ts) {
|
|
175
|
-
ASSERT_TRUE(it->Valid());
|
|
176
|
-
ASSERT_OK(it->status());
|
|
177
|
-
std::string ukey_and_ts;
|
|
178
|
-
ukey_and_ts.assign(expected_ukey.data(), expected_ukey.size());
|
|
179
|
-
ukey_and_ts.append(expected_ts.data(), expected_ts.size());
|
|
180
|
-
|
|
181
|
-
ParsedInternalKey parsed_ikey;
|
|
182
|
-
ASSERT_OK(
|
|
183
|
-
ParseInternalKey(it->key(), &parsed_ikey, true /* log_err_key */));
|
|
184
|
-
ASSERT_EQ(expected_val_type, parsed_ikey.type);
|
|
185
|
-
ASSERT_EQ(Slice(ukey_and_ts), parsed_ikey.user_key);
|
|
186
|
-
if (expected_val_type == kTypeValue) {
|
|
187
|
-
ASSERT_EQ(expected_value, it->value());
|
|
188
|
-
}
|
|
189
|
-
ASSERT_EQ(expected_ts, it->timestamp());
|
|
190
|
-
}
|
|
191
|
-
};
|
|
192
|
-
|
|
193
23
|
class DBBasicTestWithTimestamp : public DBBasicTestWithTimestampBase {
|
|
194
24
|
public:
|
|
195
25
|
DBBasicTestWithTimestamp()
|
|
@@ -1492,8 +1322,8 @@ TEST_F(DBBasicTestWithTimestamp, MultiGetRangeFiltering) {
|
|
|
1492
1322
|
|
|
1493
1323
|
// random data
|
|
1494
1324
|
for (int i = 0; i < 3; i++) {
|
|
1495
|
-
auto key =
|
|
1496
|
-
auto value =
|
|
1325
|
+
auto key = std::to_string(i * 10);
|
|
1326
|
+
auto value = std::to_string(i * 10);
|
|
1497
1327
|
Slice key_slice = key;
|
|
1498
1328
|
Slice value_slice = value;
|
|
1499
1329
|
ASSERT_OK(db_->Put(write_opts, key_slice, ts, value_slice));
|
|
@@ -1824,8 +1654,8 @@ class DataVisibilityTest : public DBBasicTestWithTimestampBase {
|
|
|
1824
1654
|
DataVisibilityTest() : DBBasicTestWithTimestampBase("data_visibility_test") {
|
|
1825
1655
|
// Initialize test data
|
|
1826
1656
|
for (int i = 0; i < kTestDataSize; i++) {
|
|
1827
|
-
test_data_[i].key = "key" +
|
|
1828
|
-
test_data_[i].value = "value" +
|
|
1657
|
+
test_data_[i].key = "key" + std::to_string(i);
|
|
1658
|
+
test_data_[i].value = "value" + std::to_string(i);
|
|
1829
1659
|
test_data_[i].timestamp = Timestamp(i, 0);
|
|
1830
1660
|
test_data_[i].ts = i;
|
|
1831
1661
|
test_data_[i].seq_num = kMaxSequenceNumber;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
//
|
|
6
|
+
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
|
7
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
8
|
+
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
|
+
|
|
10
|
+
#include "db/db_with_timestamp_test_util.h"
|
|
11
|
+
|
|
12
|
+
namespace ROCKSDB_NAMESPACE {
|
|
13
|
+
std::string DBBasicTestWithTimestampBase::Key1(uint64_t k) {
|
|
14
|
+
std::string ret;
|
|
15
|
+
PutFixed64(&ret, k);
|
|
16
|
+
std::reverse(ret.begin(), ret.end());
|
|
17
|
+
return ret;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
std::string DBBasicTestWithTimestampBase::KeyWithPrefix(std::string prefix,
|
|
21
|
+
uint64_t k) {
|
|
22
|
+
std::string ret;
|
|
23
|
+
PutFixed64(&ret, k);
|
|
24
|
+
std::reverse(ret.begin(), ret.end());
|
|
25
|
+
return prefix + ret;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
std::vector<Slice> DBBasicTestWithTimestampBase::ConvertStrToSlice(
|
|
29
|
+
std::vector<std::string>& strings) {
|
|
30
|
+
std::vector<Slice> ret;
|
|
31
|
+
for (const auto& s : strings) {
|
|
32
|
+
ret.emplace_back(s);
|
|
33
|
+
}
|
|
34
|
+
return ret;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
std::string DBBasicTestWithTimestampBase::Timestamp(uint64_t low,
|
|
38
|
+
uint64_t high) {
|
|
39
|
+
std::string ts;
|
|
40
|
+
PutFixed64(&ts, low);
|
|
41
|
+
PutFixed64(&ts, high);
|
|
42
|
+
return ts;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
void DBBasicTestWithTimestampBase::CheckIterUserEntry(
|
|
46
|
+
const Iterator* it, const Slice& expected_key,
|
|
47
|
+
ValueType expected_value_type, const Slice& expected_value,
|
|
48
|
+
const Slice& expected_ts) const {
|
|
49
|
+
ASSERT_TRUE(it->Valid());
|
|
50
|
+
ASSERT_OK(it->status());
|
|
51
|
+
ASSERT_EQ(expected_key, it->key());
|
|
52
|
+
if (kTypeValue == expected_value_type) {
|
|
53
|
+
ASSERT_EQ(expected_value, it->value());
|
|
54
|
+
}
|
|
55
|
+
ASSERT_EQ(expected_ts, it->timestamp());
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
void DBBasicTestWithTimestampBase::CheckIterEntry(
|
|
59
|
+
const Iterator* it, const Slice& expected_ukey, SequenceNumber expected_seq,
|
|
60
|
+
ValueType expected_val_type, const Slice& expected_value,
|
|
61
|
+
const Slice& expected_ts) const {
|
|
62
|
+
ASSERT_TRUE(it->Valid());
|
|
63
|
+
ASSERT_OK(it->status());
|
|
64
|
+
std::string ukey_and_ts;
|
|
65
|
+
ukey_and_ts.assign(expected_ukey.data(), expected_ukey.size());
|
|
66
|
+
ukey_and_ts.append(expected_ts.data(), expected_ts.size());
|
|
67
|
+
ParsedInternalKey parsed_ikey;
|
|
68
|
+
ASSERT_OK(ParseInternalKey(it->key(), &parsed_ikey, true /* log_err_key */));
|
|
69
|
+
ASSERT_EQ(ukey_and_ts, parsed_ikey.user_key);
|
|
70
|
+
ASSERT_EQ(expected_val_type, parsed_ikey.type);
|
|
71
|
+
ASSERT_EQ(expected_seq, parsed_ikey.sequence);
|
|
72
|
+
if (expected_val_type == kTypeValue) {
|
|
73
|
+
ASSERT_EQ(expected_value, it->value());
|
|
74
|
+
}
|
|
75
|
+
ASSERT_EQ(expected_ts, it->timestamp());
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
void DBBasicTestWithTimestampBase::CheckIterEntry(
|
|
79
|
+
const Iterator* it, const Slice& expected_ukey, ValueType expected_val_type,
|
|
80
|
+
const Slice& expected_value, const Slice& expected_ts) const {
|
|
81
|
+
ASSERT_TRUE(it->Valid());
|
|
82
|
+
ASSERT_OK(it->status());
|
|
83
|
+
std::string ukey_and_ts;
|
|
84
|
+
ukey_and_ts.assign(expected_ukey.data(), expected_ukey.size());
|
|
85
|
+
ukey_and_ts.append(expected_ts.data(), expected_ts.size());
|
|
86
|
+
|
|
87
|
+
ParsedInternalKey parsed_ikey;
|
|
88
|
+
ASSERT_OK(ParseInternalKey(it->key(), &parsed_ikey, true /* log_err_key */));
|
|
89
|
+
ASSERT_EQ(expected_val_type, parsed_ikey.type);
|
|
90
|
+
ASSERT_EQ(Slice(ukey_and_ts), parsed_ikey.user_key);
|
|
91
|
+
if (expected_val_type == kTypeValue) {
|
|
92
|
+
ASSERT_EQ(expected_value, it->value());
|
|
93
|
+
}
|
|
94
|
+
ASSERT_EQ(expected_ts, it->timestamp());
|
|
95
|
+
}
|
|
96
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
//
|
|
6
|
+
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
|
7
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
8
|
+
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
|
+
|
|
10
|
+
#pragma once
|
|
11
|
+
|
|
12
|
+
#include "db/db_test_util.h"
|
|
13
|
+
#include "port/stack_trace.h"
|
|
14
|
+
#include "test_util/testutil.h"
|
|
15
|
+
|
|
16
|
+
namespace ROCKSDB_NAMESPACE {
|
|
17
|
+
class DBBasicTestWithTimestampBase : public DBTestBase {
|
|
18
|
+
public:
|
|
19
|
+
explicit DBBasicTestWithTimestampBase(const std::string& dbname)
|
|
20
|
+
: DBTestBase(dbname, /*env_do_fsync=*/true) {}
|
|
21
|
+
|
|
22
|
+
protected:
|
|
23
|
+
static std::string Key1(uint64_t k);
|
|
24
|
+
|
|
25
|
+
static std::string KeyWithPrefix(std::string prefix, uint64_t k);
|
|
26
|
+
|
|
27
|
+
static std::vector<Slice> ConvertStrToSlice(
|
|
28
|
+
std::vector<std::string>& strings);
|
|
29
|
+
|
|
30
|
+
class TestComparator : public Comparator {
|
|
31
|
+
private:
|
|
32
|
+
const Comparator* cmp_without_ts_;
|
|
33
|
+
|
|
34
|
+
public:
|
|
35
|
+
explicit TestComparator(size_t ts_sz)
|
|
36
|
+
: Comparator(ts_sz), cmp_without_ts_(nullptr) {
|
|
37
|
+
cmp_without_ts_ = BytewiseComparator();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const char* Name() const override { return "TestComparator"; }
|
|
41
|
+
|
|
42
|
+
void FindShortSuccessor(std::string*) const override {}
|
|
43
|
+
|
|
44
|
+
void FindShortestSeparator(std::string*, const Slice&) const override {}
|
|
45
|
+
|
|
46
|
+
int Compare(const Slice& a, const Slice& b) const override {
|
|
47
|
+
int r = CompareWithoutTimestamp(a, b);
|
|
48
|
+
if (r != 0 || 0 == timestamp_size()) {
|
|
49
|
+
return r;
|
|
50
|
+
}
|
|
51
|
+
return -CompareTimestamp(
|
|
52
|
+
Slice(a.data() + a.size() - timestamp_size(), timestamp_size()),
|
|
53
|
+
Slice(b.data() + b.size() - timestamp_size(), timestamp_size()));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
using Comparator::CompareWithoutTimestamp;
|
|
57
|
+
int CompareWithoutTimestamp(const Slice& a, bool a_has_ts, const Slice& b,
|
|
58
|
+
bool b_has_ts) const override {
|
|
59
|
+
if (a_has_ts) {
|
|
60
|
+
assert(a.size() >= timestamp_size());
|
|
61
|
+
}
|
|
62
|
+
if (b_has_ts) {
|
|
63
|
+
assert(b.size() >= timestamp_size());
|
|
64
|
+
}
|
|
65
|
+
Slice lhs = a_has_ts ? StripTimestampFromUserKey(a, timestamp_size()) : a;
|
|
66
|
+
Slice rhs = b_has_ts ? StripTimestampFromUserKey(b, timestamp_size()) : b;
|
|
67
|
+
return cmp_without_ts_->Compare(lhs, rhs);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
int CompareTimestamp(const Slice& ts1, const Slice& ts2) const override {
|
|
71
|
+
if (!ts1.data() && !ts2.data()) {
|
|
72
|
+
return 0;
|
|
73
|
+
} else if (ts1.data() && !ts2.data()) {
|
|
74
|
+
return 1;
|
|
75
|
+
} else if (!ts1.data() && ts2.data()) {
|
|
76
|
+
return -1;
|
|
77
|
+
}
|
|
78
|
+
assert(ts1.size() == ts2.size());
|
|
79
|
+
uint64_t low1 = 0;
|
|
80
|
+
uint64_t low2 = 0;
|
|
81
|
+
uint64_t high1 = 0;
|
|
82
|
+
uint64_t high2 = 0;
|
|
83
|
+
const size_t kSize = ts1.size();
|
|
84
|
+
std::unique_ptr<char[]> ts1_buf(new char[kSize]);
|
|
85
|
+
memcpy(ts1_buf.get(), ts1.data(), ts1.size());
|
|
86
|
+
std::unique_ptr<char[]> ts2_buf(new char[kSize]);
|
|
87
|
+
memcpy(ts2_buf.get(), ts2.data(), ts2.size());
|
|
88
|
+
Slice ts1_copy = Slice(ts1_buf.get(), kSize);
|
|
89
|
+
Slice ts2_copy = Slice(ts2_buf.get(), kSize);
|
|
90
|
+
auto* ptr1 = const_cast<Slice*>(&ts1_copy);
|
|
91
|
+
auto* ptr2 = const_cast<Slice*>(&ts2_copy);
|
|
92
|
+
if (!GetFixed64(ptr1, &low1) || !GetFixed64(ptr1, &high1) ||
|
|
93
|
+
!GetFixed64(ptr2, &low2) || !GetFixed64(ptr2, &high2)) {
|
|
94
|
+
assert(false);
|
|
95
|
+
}
|
|
96
|
+
if (high1 < high2) {
|
|
97
|
+
return -1;
|
|
98
|
+
} else if (high1 > high2) {
|
|
99
|
+
return 1;
|
|
100
|
+
}
|
|
101
|
+
if (low1 < low2) {
|
|
102
|
+
return -1;
|
|
103
|
+
} else if (low1 > low2) {
|
|
104
|
+
return 1;
|
|
105
|
+
}
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
std::string Timestamp(uint64_t low, uint64_t high);
|
|
111
|
+
|
|
112
|
+
void CheckIterUserEntry(const Iterator* it, const Slice& expected_key,
|
|
113
|
+
ValueType expected_value_type,
|
|
114
|
+
const Slice& expected_value,
|
|
115
|
+
const Slice& expected_ts) const;
|
|
116
|
+
|
|
117
|
+
void CheckIterEntry(const Iterator* it, const Slice& expected_ukey,
|
|
118
|
+
SequenceNumber expected_seq, ValueType expected_val_type,
|
|
119
|
+
const Slice& expected_value,
|
|
120
|
+
const Slice& expected_ts) const;
|
|
121
|
+
|
|
122
|
+
void CheckIterEntry(const Iterator* it, const Slice& expected_ukey,
|
|
123
|
+
ValueType expected_val_type, const Slice& expected_value,
|
|
124
|
+
const Slice& expected_ts) const;
|
|
125
|
+
};
|
|
126
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -289,7 +289,7 @@ TEST_P(DBWriteTest, IOErrorOnWALWritePropagateToWriteThreadFollower) {
|
|
|
289
289
|
threads.push_back(port::Thread(
|
|
290
290
|
[&](int index) {
|
|
291
291
|
// All threads should fail.
|
|
292
|
-
auto res = Put("key" +
|
|
292
|
+
auto res = Put("key" + std::to_string(index), "value");
|
|
293
293
|
if (options.manual_wal_flush) {
|
|
294
294
|
ASSERT_TRUE(res.ok());
|
|
295
295
|
// we should see fs error when we do the flush
|
|
@@ -322,13 +322,13 @@ TEST_P(DBWriteTest, ManualWalFlushInEffect) {
|
|
|
322
322
|
Options options = GetOptions();
|
|
323
323
|
Reopen(options);
|
|
324
324
|
// try the 1st WAL created during open
|
|
325
|
-
ASSERT_TRUE(Put("key" +
|
|
325
|
+
ASSERT_TRUE(Put("key" + std::to_string(0), "value").ok());
|
|
326
326
|
ASSERT_TRUE(options.manual_wal_flush != dbfull()->TEST_WALBufferIsEmpty());
|
|
327
327
|
ASSERT_TRUE(dbfull()->FlushWAL(false).ok());
|
|
328
328
|
ASSERT_TRUE(dbfull()->TEST_WALBufferIsEmpty());
|
|
329
329
|
// try the 2nd wal created during SwitchWAL
|
|
330
330
|
ASSERT_OK(dbfull()->TEST_SwitchWAL());
|
|
331
|
-
ASSERT_TRUE(Put("key" +
|
|
331
|
+
ASSERT_TRUE(Put("key" + std::to_string(0), "value").ok());
|
|
332
332
|
ASSERT_TRUE(options.manual_wal_flush != dbfull()->TEST_WALBufferIsEmpty());
|
|
333
333
|
ASSERT_TRUE(dbfull()->FlushWAL(false).ok());
|
|
334
334
|
ASSERT_TRUE(dbfull()->TEST_WALBufferIsEmpty());
|
|
@@ -344,7 +344,7 @@ TEST_P(DBWriteTest, IOErrorOnWALWriteTriggersReadOnlyMode) {
|
|
|
344
344
|
// Forcibly fail WAL write for the first Put only. Subsequent Puts should
|
|
345
345
|
// fail due to read-only mode
|
|
346
346
|
mock_env->SetFilesystemActive(i != 0);
|
|
347
|
-
auto res = Put("key" +
|
|
347
|
+
auto res = Put("key" + std::to_string(i), "value");
|
|
348
348
|
// TSAN reports a false alarm for lock-order-inversion but Open and
|
|
349
349
|
// FlushWAL are not run concurrently. Disabling this until TSAN is
|
|
350
350
|
// fixed.
|
|
@@ -398,14 +398,14 @@ TEST_P(DBWriteTest, LockWalInEffect) {
|
|
|
398
398
|
Options options = GetOptions();
|
|
399
399
|
Reopen(options);
|
|
400
400
|
// try the 1st WAL created during open
|
|
401
|
-
ASSERT_OK(Put("key" +
|
|
401
|
+
ASSERT_OK(Put("key" + std::to_string(0), "value"));
|
|
402
402
|
ASSERT_TRUE(options.manual_wal_flush != dbfull()->TEST_WALBufferIsEmpty());
|
|
403
403
|
ASSERT_OK(dbfull()->LockWAL());
|
|
404
404
|
ASSERT_TRUE(dbfull()->TEST_WALBufferIsEmpty(false));
|
|
405
405
|
ASSERT_OK(dbfull()->UnlockWAL());
|
|
406
406
|
// try the 2nd wal created during SwitchWAL
|
|
407
407
|
ASSERT_OK(dbfull()->TEST_SwitchWAL());
|
|
408
|
-
ASSERT_OK(Put("key" +
|
|
408
|
+
ASSERT_OK(Put("key" + std::to_string(0), "value"));
|
|
409
409
|
ASSERT_TRUE(options.manual_wal_flush != dbfull()->TEST_WALBufferIsEmpty());
|
|
410
410
|
ASSERT_OK(dbfull()->LockWAL());
|
|
411
411
|
ASSERT_TRUE(dbfull()->TEST_WALBufferIsEmpty(false));
|
|
@@ -90,7 +90,8 @@ inline bool IsExtendedValueType(ValueType t) {
|
|
|
90
90
|
// can be packed together into 64-bits.
|
|
91
91
|
static const SequenceNumber kMaxSequenceNumber = ((0x1ull << 56) - 1);
|
|
92
92
|
|
|
93
|
-
static const SequenceNumber kDisableGlobalSequenceNumber =
|
|
93
|
+
static const SequenceNumber kDisableGlobalSequenceNumber =
|
|
94
|
+
std::numeric_limits<uint64_t>::max();
|
|
94
95
|
|
|
95
96
|
constexpr uint64_t kNumInternalBytes = 8;
|
|
96
97
|
|
|
@@ -56,7 +56,7 @@ class DeleteFileTest : public DBTestBase {
|
|
|
56
56
|
options.sync = false;
|
|
57
57
|
ReadOptions roptions;
|
|
58
58
|
for (int i = startkey; i < (numkeys + startkey) ; i++) {
|
|
59
|
-
std::string temp =
|
|
59
|
+
std::string temp = std::to_string(i);
|
|
60
60
|
Slice key(temp);
|
|
61
61
|
Slice value(temp);
|
|
62
62
|
ASSERT_OK(db_->Put(options, key, value));
|
|
@@ -1583,11 +1583,11 @@ TEST_F(DBErrorHandlingFSTest, MultiDBCompactionError) {
|
|
|
1583
1583
|
std::string prop;
|
|
1584
1584
|
ASSERT_EQ(listener[i]->WaitForRecovery(5000000), true);
|
|
1585
1585
|
ASSERT_OK(static_cast<DBImpl*>(db[i])->TEST_WaitForCompact(true));
|
|
1586
|
-
EXPECT_TRUE(
|
|
1587
|
-
|
|
1586
|
+
EXPECT_TRUE(db[i]->GetProperty(
|
|
1587
|
+
"rocksdb.num-files-at-level" + std::to_string(0), &prop));
|
|
1588
1588
|
EXPECT_EQ(atoi(prop.c_str()), 0);
|
|
1589
|
-
EXPECT_TRUE(
|
|
1590
|
-
|
|
1589
|
+
EXPECT_TRUE(db[i]->GetProperty(
|
|
1590
|
+
"rocksdb.num-files-at-level" + std::to_string(1), &prop));
|
|
1591
1591
|
EXPECT_EQ(atoi(prop.c_str()), 1);
|
|
1592
1592
|
}
|
|
1593
1593
|
|
|
@@ -1720,11 +1720,11 @@ TEST_F(DBErrorHandlingFSTest, MultiDBVariousErrors) {
|
|
|
1720
1720
|
if (i == 1) {
|
|
1721
1721
|
ASSERT_OK(static_cast<DBImpl*>(db[i])->TEST_WaitForCompact(true));
|
|
1722
1722
|
}
|
|
1723
|
-
EXPECT_TRUE(
|
|
1724
|
-
|
|
1723
|
+
EXPECT_TRUE(db[i]->GetProperty(
|
|
1724
|
+
"rocksdb.num-files-at-level" + std::to_string(0), &prop));
|
|
1725
1725
|
EXPECT_EQ(atoi(prop.c_str()), 0);
|
|
1726
|
-
EXPECT_TRUE(
|
|
1727
|
-
|
|
1726
|
+
EXPECT_TRUE(db[i]->GetProperty(
|
|
1727
|
+
"rocksdb.num-files-at-level" + std::to_string(1), &prop));
|
|
1728
1728
|
EXPECT_EQ(atoi(prop.c_str()), 1);
|
|
1729
1729
|
}
|
|
1730
1730
|
|