@nxtedition/rocksdb 10.0.13 → 10.0.15
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/.tap/coverage/213879bb-47ae-470e-bb54-f4157d9f60e2.json +162898 -0
- package/.tap/processinfo/{4c642b53-6895-4ef0-9391-7c6b8d484262.json → 213879bb-47ae-470e-bb54-f4157d9f60e2.json} +117 -121
- package/.tap/test-results/node_modules/abstract-level/test/get-test.js.tap +0 -0
- package/.tap/test-results/test/abstract-level-test.js.tap +1705 -0
- package/.tap/test-results/test/batch-test.js.tap +12 -0
- package/.tap/test-results/test/chained-batch-gc-test.js.tap +11 -0
- package/.tap/test-results/test/cleanup-hanging-iterators-test.js.tap +58 -0
- package/.tap/test-results/test/clear-gc-test.js.tap +13 -0
- package/.tap/test-results/test/column-test.js.tap +55 -0
- package/.tap/test-results/test/common.js.tap +0 -0
- package/.tap/test-results/test/compression-test.js.tap +30 -0
- package/.tap/test-results/test/db-identity.js.tap +12 -0
- package/.tap/test-results/test/electron.js.tap +0 -0
- package/.tap/test-results/test/env-cleanup-hook-test.js.tap +2 -0
- package/.tap/test-results/test/env-cleanup-hook.js.tap +0 -0
- package/.tap/test-results/test/gc.js.tap +0 -0
- package/.tap/test-results/test/getproperty-test.js.tap +29 -0
- package/.tap/test-results/test/iterator-gc-test.js.tap +4 -0
- package/.tap/test-results/test/iterator-hwm-test.js.tap +24 -0
- package/.tap/test-results/test/iterator-recursion-test.js.tap +12 -0
- package/.tap/test-results/test/iterator-starvation-test.js.tap +2 -0
- package/.tap/test-results/test/iterator-test.js.tap +0 -0
- package/.tap/test-results/test/leak-tester-batch.js.tap +0 -0
- package/.tap/test-results/test/leak-tester-iterator.js.tap +0 -0
- package/.tap/test-results/test/leak-tester.js.tap +0 -0
- package/.tap/test-results/test/lock-test.js.tap +0 -0
- package/.tap/test-results/test/lock.js.tap +0 -0
- package/.tap/test-results/test/make.js.tap +0 -0
- package/.tap/test-results/test/max-rev-merge.js.tap +0 -12
- package/.tap/test-results/test/merge-operator-test.js.tap +0 -0
- package/.tap/test-results/test/mkdir-test.js.tap +0 -0
- package/.tap/test-results/test/segfault-test.js.tap +0 -0
- package/.tap/test-results/test/stack-blower.js.tap +0 -0
- package/binding.cc +42 -34
- package/deps/rocksdb/rocksdb/CMakeLists.txt +44 -14
- package/deps/rocksdb/rocksdb/Makefile +34 -17
- package/deps/rocksdb/rocksdb/TARGETS +27 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +95 -42
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +381 -393
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +88 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +14 -7
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +1 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +21 -19
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +8 -7
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +1 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +89 -13
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +16 -8
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +6 -6
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +15 -9
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +16 -13
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +306 -23
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +3 -4
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +30 -27
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +8 -10
- package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.cc +20 -0
- package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.h +83 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +19 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +18 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +7 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +56 -27
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +11 -7
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +20 -19
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +106 -31
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +5 -8
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +4 -2
- package/deps/rocksdb/rocksdb/db/builder.cc +89 -44
- package/deps/rocksdb/rocksdb/db/builder.h +4 -6
- package/deps/rocksdb/rocksdb/db/c.cc +205 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +141 -20
- package/deps/rocksdb/rocksdb/db/coalescing_iterator.cc +47 -0
- package/deps/rocksdb/rocksdb/db/coalescing_iterator.h +79 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +100 -36
- package/deps/rocksdb/rocksdb/db/column_family.h +46 -28
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +168 -46
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +51 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +72 -24
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +11 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +7 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +87 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +310 -70
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +78 -62
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +33 -96
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +18 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +42 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +20 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +7 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +18 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +95 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +6 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +213 -34
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +7 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +16 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +75 -142
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +577 -34
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience.cc +1 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +7 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +366 -136
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +9 -10
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +282 -6
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +551 -150
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +41 -13
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +54 -17
- package/deps/rocksdb/rocksdb/db/db_follower_test.cc +527 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -58
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +34 -45
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +699 -580
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +308 -230
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +180 -107
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +10 -6
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +36 -61
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +347 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.h +54 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +206 -155
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +5 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +41 -39
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +26 -22
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +14 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +126 -46
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +21 -9
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +294 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +116 -78
- package/deps/rocksdb/rocksdb/db/db_iter.h +31 -7
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +34 -14
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +69 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +153 -18
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +9 -1
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +6 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +105 -0
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +97 -111
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +12 -3
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +82 -30
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -22
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +74 -0
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +175 -47
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/db_test.cc +133 -109
- package/deps/rocksdb/rocksdb/db/db_test2.cc +227 -139
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.h +67 -24
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +140 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +17 -19
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +332 -87
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +250 -30
- package/deps/rocksdb/rocksdb/db/dbformat.cc +41 -8
- package/deps/rocksdb/rocksdb/db/dbformat.h +100 -17
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +48 -8
- package/deps/rocksdb/rocksdb/db/error_handler.cc +102 -116
- package/deps/rocksdb/rocksdb/db/error_handler.h +28 -6
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +263 -99
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +3 -1
- package/deps/rocksdb/rocksdb/db/experimental.cc +1073 -7
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +261 -111
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +263 -183
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +31 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +698 -7
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +5 -3
- package/deps/rocksdb/rocksdb/db/flush_job.cc +41 -41
- package/deps/rocksdb/rocksdb/db/flush_job.h +11 -8
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -13
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +19 -6
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +12 -12
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +83 -52
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +169 -2
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -6
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -2
- package/deps/rocksdb/rocksdb/db/job_context.h +17 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +44 -20
- package/deps/rocksdb/rocksdb/db/log_reader.h +3 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +81 -17
- package/deps/rocksdb/rocksdb/db/log_writer.cc +135 -92
- package/deps/rocksdb/rocksdb/db/log_writer.h +11 -10
- package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -3
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable.cc +82 -62
- package/deps/rocksdb/rocksdb/db/memtable.h +17 -9
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +19 -13
- package/deps/rocksdb/rocksdb/db/memtable_list.h +3 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +38 -5
- package/deps/rocksdb/rocksdb/db/merge_context.h +3 -0
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +34 -156
- package/deps/rocksdb/rocksdb/db/merge_helper.h +52 -46
- package/deps/rocksdb/rocksdb/db/merge_test.cc +16 -11
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_impl.h +289 -0
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_test.cc +918 -0
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/output_validator.cc +8 -12
- package/deps/rocksdb/rocksdb/db/output_validator.h +1 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +23 -4
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +2 -3
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +2 -2
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +21 -8
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +0 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +0 -1
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +17 -4
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +6 -3
- package/deps/rocksdb/rocksdb/db/repair.cc +35 -29
- package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +428 -156
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +393 -227
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +154 -82
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +2 -2
- package/deps/rocksdb/rocksdb/db/table_cache.cc +9 -11
- package/deps/rocksdb/rocksdb/db/table_cache.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +8 -3
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +27 -26
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +23 -23
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +5 -5
- package/deps/rocksdb/rocksdb/db/version_builder.cc +6 -0
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +62 -29
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +30 -11
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +291 -116
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +54 -11
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/version_set.cc +301 -141
- package/deps/rocksdb/rocksdb/db/version_set.h +90 -33
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +817 -193
- package/deps/rocksdb/rocksdb/db/version_util.h +10 -5
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +15 -11
- package/deps/rocksdb/rocksdb/db/wal_manager.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +10 -9
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +403 -28
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +2 -2
- package/deps/rocksdb/rocksdb/db/write_batch.cc +204 -18
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +4 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +149 -5
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/write_stall_stats.h +7 -7
- package/deps/rocksdb/rocksdb/db/write_thread.cc +86 -47
- package/deps/rocksdb/rocksdb/db/write_thread.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +176 -68
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +337 -125
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +38 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +126 -34
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +2 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +161 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +267 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +13 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +9 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +535 -86
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +27 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +8 -15
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +46 -21
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +74 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +28 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +426 -151
- package/deps/rocksdb/rocksdb/env/composite_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/emulated_clock.h +6 -6
- package/deps/rocksdb/rocksdb/env/env.cc +21 -11
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +9 -9
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +3 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +3 -3
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -2
- package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -10
- package/deps/rocksdb/rocksdb/env/env_test.cc +24 -18
- package/deps/rocksdb/rocksdb/env/file_system.cc +7 -6
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +3 -3
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +3 -3
- package/deps/rocksdb/rocksdb/env/fs_on_demand.cc +331 -0
- package/deps/rocksdb/rocksdb/env/fs_on_demand.h +139 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +14 -15
- package/deps/rocksdb/rocksdb/env/io_posix.cc +15 -10
- package/deps/rocksdb/rocksdb/env/io_posix.h +86 -92
- package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +6 -6
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +8 -6
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +599 -592
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +312 -200
- package/deps/rocksdb/rocksdb/file/file_util.cc +19 -14
- package/deps/rocksdb/rocksdb/file/file_util.h +34 -24
- package/deps/rocksdb/rocksdb/file/filename.cc +32 -17
- package/deps/rocksdb/rocksdb/file/filename.h +51 -53
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +82 -441
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +7 -6
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -5
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +9 -3
- package/deps/rocksdb/rocksdb/file/read_write_util.h +3 -3
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +6 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +9 -4
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +8 -4
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +110 -89
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +34 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +39 -189
- package/deps/rocksdb/rocksdb/include/rocksdb/attribute_groups.h +114 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +91 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +52 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +27 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +146 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +254 -151
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +39 -36
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +431 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +57 -23
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +27 -57
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator_base.h +74 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +146 -71
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +7 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +17 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -19
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +10 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +18 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +12 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +118 -116
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +26 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +18 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +8 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +12 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +5 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +159 -167
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +52 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +3 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/types_util.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +118 -20
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +87 -45
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +26 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +22 -1
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +7 -9
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +5 -6
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +2 -2
- package/deps/rocksdb/rocksdb/logging/env_logger.h +3 -3
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -1
- package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -3
- package/deps/rocksdb/rocksdb/memory/arena.h +11 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +17 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +1 -1
- package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +1 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
- package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +11 -10
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +8 -7
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +3 -3
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +2 -2
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +3 -1
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +20 -10
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +15 -15
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +7 -3
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +14 -14
- package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +4 -0
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +8 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +5 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +64 -58
- package/deps/rocksdb/rocksdb/monitoring/statistics_impl.h +11 -12
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +7 -1
- package/deps/rocksdb/rocksdb/options/cf_options.cc +20 -28
- package/deps/rocksdb/rocksdb/options/cf_options.h +7 -14
- package/deps/rocksdb/rocksdb/options/configurable.cc +20 -12
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +4 -6
- package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -2
- package/deps/rocksdb/rocksdb/options/customizable.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +3 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +22 -48
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -3
- package/deps/rocksdb/rocksdb/options/offpeak_time_info.cc +59 -0
- package/deps/rocksdb/rocksdb/options/offpeak_time_info.h +37 -0
- package/deps/rocksdb/rocksdb/options/options.cc +14 -6
- package/deps/rocksdb/rocksdb/options/options_helper.cc +8 -13
- package/deps/rocksdb/rocksdb/options/options_helper.h +2 -3
- package/deps/rocksdb/rocksdb/options/options_parser.cc +35 -26
- package/deps/rocksdb/rocksdb/options/options_parser.h +4 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -3
- package/deps/rocksdb/rocksdb/options/options_test.cc +30 -23
- package/deps/rocksdb/rocksdb/port/lang.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_example.h +7 -7
- package/deps/rocksdb/rocksdb/port/port_posix.cc +7 -7
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -7
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +85 -24
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +1 -2
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +4 -4
- package/deps/rocksdb/rocksdb/port/win/io_win.h +13 -17
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +3 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +4 -4
- package/deps/rocksdb/rocksdb/src.mk +16 -1
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -7
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +39 -15
- package/deps/rocksdb/rocksdb/table/block_based/block.h +7 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +80 -40
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +20 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +228 -122
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +50 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +82 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +17 -20
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +47 -13
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +163 -50
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +23 -23
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +6 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +32 -27
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +7 -10
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +25 -7
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -5
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +4 -6
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -5
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -5
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +138 -86
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +22 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +26 -13
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +11 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +11 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +10 -5
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +6 -7
- package/deps/rocksdb/rocksdb/table/format.cc +15 -21
- package/deps/rocksdb/rocksdb/table/format.h +8 -0
- package/deps/rocksdb/rocksdb/table/get_context.cc +121 -78
- package/deps/rocksdb/rocksdb/table/get_context.h +11 -6
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +12 -5
- package/deps/rocksdb/rocksdb/table/iterator.cc +4 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -1
- package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +5 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +4 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +15 -11
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +8 -4
- package/deps/rocksdb/rocksdb/table/mock_table.cc +12 -8
- package/deps/rocksdb/rocksdb/table/mock_table.h +1 -3
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +0 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -21
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +4 -14
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +7 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +7 -5
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +15 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +75 -30
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +7 -2
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +76 -11
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +358 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +93 -16
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +12 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +12 -6
- package/deps/rocksdb/rocksdb/table/table_iterator.h +69 -0
- package/deps/rocksdb/rocksdb/table/table_properties.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/table/table_test.cc +732 -121
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +3 -1
- package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/table/unique_id.cc +2 -2
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +2 -2
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +5 -5
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -6
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +2 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +56 -32
- package/deps/rocksdb/rocksdb/test_util/testutil.h +57 -34
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +18 -1
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
- 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 +210 -112
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +22 -27
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +10 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +328 -59
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +34 -2
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +64 -17
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +8 -1
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +3 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +136 -10
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -2
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +50 -8
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +51 -45
- package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +10 -10
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +14 -4
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +2 -1
- package/deps/rocksdb/rocksdb/unreleased_history/README.txt +2 -2
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +2 -4
- package/deps/rocksdb/rocksdb/util/atomic.h +111 -0
- package/deps/rocksdb/rocksdb/util/autovector.h +5 -1
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +12 -2
- package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
- package/deps/rocksdb/rocksdb/util/coding.h +34 -38
- package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/comparator.cc +18 -5
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +4 -4
- package/deps/rocksdb/rocksdb/util/crc32c.cc +3 -6
- package/deps/rocksdb/rocksdb/util/crc32c.h +3 -3
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +3 -4
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -2
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -4
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -2
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +3 -3
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +83 -59
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/hash.h +4 -4
- package/deps/rocksdb/rocksdb/util/log_write_bench.cc +3 -3
- package/deps/rocksdb/rocksdb/util/murmurhash.cc +1 -1
- package/deps/rocksdb/rocksdb/util/random.cc +3 -4
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +23 -43
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +21 -16
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +44 -24
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +2 -3
- package/deps/rocksdb/rocksdb/util/ribbon_config.cc +2 -10
- package/deps/rocksdb/rocksdb/util/ribbon_impl.h +2 -2
- package/deps/rocksdb/rocksdb/util/slice.cc +4 -5
- package/deps/rocksdb/rocksdb/util/slice_test.cc +70 -4
- package/deps/rocksdb/rocksdb/util/status.cc +1 -1
- package/deps/rocksdb/rocksdb/util/stderr_logger.cc +39 -7
- package/deps/rocksdb/rocksdb/util/stderr_logger.h +12 -2
- package/deps/rocksdb/rocksdb/util/string_util.cc +31 -18
- package/deps/rocksdb/rocksdb/util/string_util.h +9 -9
- package/deps/rocksdb/rocksdb/util/string_util_test.cc +36 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +5 -5
- package/deps/rocksdb/rocksdb/util/thread_local.cc +1 -1
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +3 -4
- package/deps/rocksdb/rocksdb/util/threadpool_imp.h +1 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/vector_iterator.h +12 -16
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +5 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +116 -116
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +33 -31
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -22
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +9 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +3 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +22 -55
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +113 -74
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +36 -24
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +27 -11
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +68 -54
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +16 -16
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +29 -9
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +27 -14
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +8 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +9 -7
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +7 -10
- package/deps/rocksdb/rocksdb/utilities/debug.cc +6 -2
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +18 -11
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +18 -25
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +32 -23
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +51 -48
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +10 -10
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +5 -6
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +5 -6
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -8
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +29 -21
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +14 -15
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -5
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +8 -8
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +6 -9
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +6 -6
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +12 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +17 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +442 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +27 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +28 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +70 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +50 -22
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +64 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +76 -17
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +573 -77
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +65 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +13 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +14 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +37 -24
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +23 -29
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +31 -40
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +8 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +34 -18
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +21 -25
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/types_util.cc +88 -0
- package/deps/rocksdb/rocksdb/utilities/types_util_test.cc +98 -0
- package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +463 -90
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +259 -76
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +70 -14
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +609 -10
- package/deps/rocksdb/rocksdb.gyp +8 -4
- package/index.js +18 -4
- package/max_rev_operator.h +2 -0
- package/package.json +2 -2
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/util.h +29 -5
- package/.tap/coverage/4c642b53-6895-4ef0-9391-7c6b8d484262.json +0 -14334
- package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +0 -57
|
@@ -33,10 +33,11 @@ class SeqnoTimeTest : public DBTestBase {
|
|
|
33
33
|
void SetUp() override {
|
|
34
34
|
mock_clock_->InstallTimedWaitFixCallback();
|
|
35
35
|
SyncPoint::GetInstance()->SetCallBack(
|
|
36
|
-
"DBImpl::StartPeriodicTaskScheduler:Init",
|
|
36
|
+
"DBImpl::StartPeriodicTaskScheduler:Init",
|
|
37
|
+
[mock_clock = mock_clock_](void* arg) {
|
|
37
38
|
auto periodic_task_scheduler_ptr =
|
|
38
|
-
|
|
39
|
-
periodic_task_scheduler_ptr->TEST_OverrideTimer(
|
|
39
|
+
static_cast<PeriodicTaskScheduler*>(arg);
|
|
40
|
+
periodic_task_scheduler_ptr->TEST_OverrideTimer(mock_clock.get());
|
|
40
41
|
});
|
|
41
42
|
mock_clock_->SetCurrentTime(kMockStartTime);
|
|
42
43
|
}
|
|
@@ -78,7 +79,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicUniversal) {
|
|
|
78
79
|
options.compaction_style = kCompactionStyleUniversal;
|
|
79
80
|
options.preclude_last_level_data_seconds = 10000;
|
|
80
81
|
options.env = mock_env_.get();
|
|
81
|
-
options.
|
|
82
|
+
options.last_level_temperature = Temperature::kCold;
|
|
82
83
|
options.num_levels = kNumLevels;
|
|
83
84
|
DestroyAndReopen(options);
|
|
84
85
|
|
|
@@ -180,7 +181,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicLevel) {
|
|
|
180
181
|
Options options = CurrentOptions();
|
|
181
182
|
options.preclude_last_level_data_seconds = 10000;
|
|
182
183
|
options.env = mock_env_.get();
|
|
183
|
-
options.
|
|
184
|
+
options.last_level_temperature = Temperature::kCold;
|
|
184
185
|
options.num_levels = kNumLevels;
|
|
185
186
|
options.level_compaction_dynamic_level_bytes = true;
|
|
186
187
|
// TODO(zjay): for level compaction, auto-compaction may stuck in deadloop, if
|
|
@@ -330,25 +331,41 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
|
|
|
330
331
|
ASSERT_EQ(tables_props.size(), 1);
|
|
331
332
|
auto it = tables_props.begin();
|
|
332
333
|
SeqnoToTimeMapping tp_mapping;
|
|
333
|
-
ASSERT_OK(tp_mapping.
|
|
334
|
-
|
|
334
|
+
ASSERT_OK(tp_mapping.DecodeFrom(it->second->seqno_to_time_mapping));
|
|
335
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
335
336
|
ASSERT_FALSE(tp_mapping.Empty());
|
|
336
337
|
auto seqs = tp_mapping.TEST_GetInternalMapping();
|
|
337
338
|
// about ~20 seqs->time entries, because the sample rate is 10000/100, and it
|
|
338
339
|
// passes 2k time. Add (roughly) one for starting entry.
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
340
|
+
// Revised: with automatic pre-population of mappings, some of these entries
|
|
341
|
+
// might be purged to keep the DB mapping within capacity.
|
|
342
|
+
EXPECT_GE(seqs.size(), 20 / 2);
|
|
343
|
+
EXPECT_LE(seqs.size(), 22);
|
|
344
|
+
|
|
345
|
+
auto ValidateProximalSeqnos = [&](const char* name, double fuzz_ratio) {
|
|
346
|
+
SequenceNumber seq_end = dbfull()->GetLatestSequenceNumber() + 1;
|
|
347
|
+
uint64_t end_time = mock_clock_->NowSeconds();
|
|
348
|
+
uint64_t seqno_fuzz =
|
|
349
|
+
static_cast<uint64_t>((seq_end - start_seq) * fuzz_ratio + 0.999999);
|
|
350
|
+
for (unsigned time_pct = 0; time_pct <= 100; time_pct++) {
|
|
351
|
+
SCOPED_TRACE("name=" + std::string(name) +
|
|
352
|
+
" time_pct=" + std::to_string(time_pct));
|
|
353
|
+
// Validate the important proximal API (GetProximalSeqnoBeforeTime)
|
|
354
|
+
uint64_t t = start_time + time_pct * (end_time - start_time) / 100;
|
|
355
|
+
auto seqno_reported = tp_mapping.GetProximalSeqnoBeforeTime(t);
|
|
356
|
+
auto seqno_expected = start_seq + time_pct * (seq_end - start_seq) / 100;
|
|
357
|
+
EXPECT_LE(seqno_reported, seqno_expected);
|
|
358
|
+
if (end_time - t < 10000) {
|
|
359
|
+
EXPECT_LE(seqno_expected, seqno_reported + seqno_fuzz);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
start_seq = seq_end;
|
|
363
|
+
start_time = end_time;
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
ValidateProximalSeqnos("a", 0.1);
|
|
367
|
+
|
|
349
368
|
checked_file_nums.insert(it->second->orig_file_number);
|
|
350
|
-
start_seq = seq_end;
|
|
351
|
-
start_time = mock_clock_->NowSeconds();
|
|
352
369
|
|
|
353
370
|
// Write a key every 1 seconds
|
|
354
371
|
for (int i = 0; i < 200; i++) {
|
|
@@ -356,7 +373,7 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
|
|
|
356
373
|
dbfull()->TEST_WaitForPeriodicTaskRun(
|
|
357
374
|
[&] { mock_clock_->MockSleepForSeconds(static_cast<int>(1)); });
|
|
358
375
|
}
|
|
359
|
-
|
|
376
|
+
|
|
360
377
|
ASSERT_OK(Flush());
|
|
361
378
|
tables_props.clear();
|
|
362
379
|
ASSERT_OK(dbfull()->GetPropertiesOfAllTables(&tables_props));
|
|
@@ -371,21 +388,17 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
|
|
|
371
388
|
ASSERT_TRUE(it != tables_props.end());
|
|
372
389
|
|
|
373
390
|
tp_mapping.Clear();
|
|
374
|
-
ASSERT_OK(tp_mapping.
|
|
375
|
-
|
|
391
|
+
ASSERT_OK(tp_mapping.DecodeFrom(it->second->seqno_to_time_mapping));
|
|
392
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
376
393
|
seqs = tp_mapping.TEST_GetInternalMapping();
|
|
377
394
|
// There only a few time sample
|
|
378
395
|
ASSERT_GE(seqs.size(), 1);
|
|
379
396
|
ASSERT_LE(seqs.size(), 3);
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
start_time + (i - start_seq));
|
|
385
|
-
}
|
|
397
|
+
|
|
398
|
+
// High fuzz ratio because of low number of samples
|
|
399
|
+
ValidateProximalSeqnos("b", 0.5);
|
|
400
|
+
|
|
386
401
|
checked_file_nums.insert(it->second->orig_file_number);
|
|
387
|
-
start_seq = seq_end;
|
|
388
|
-
start_time = mock_clock_->NowSeconds();
|
|
389
402
|
|
|
390
403
|
// Write a key every 200 seconds
|
|
391
404
|
for (int i = 0; i < 200; i++) {
|
|
@@ -393,7 +406,7 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
|
|
|
393
406
|
dbfull()->TEST_WaitForPeriodicTaskRun(
|
|
394
407
|
[&] { mock_clock_->MockSleepForSeconds(static_cast<int>(200)); });
|
|
395
408
|
}
|
|
396
|
-
seq_end = dbfull()->GetLatestSequenceNumber() + 1;
|
|
409
|
+
// seq_end = dbfull()->GetLatestSequenceNumber() + 1;
|
|
397
410
|
ASSERT_OK(Flush());
|
|
398
411
|
tables_props.clear();
|
|
399
412
|
ASSERT_OK(dbfull()->GetPropertiesOfAllTables(&tables_props));
|
|
@@ -408,24 +421,16 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
|
|
|
408
421
|
ASSERT_TRUE(it != tables_props.end());
|
|
409
422
|
|
|
410
423
|
tp_mapping.Clear();
|
|
411
|
-
ASSERT_OK(tp_mapping.
|
|
412
|
-
|
|
424
|
+
ASSERT_OK(tp_mapping.DecodeFrom(it->second->seqno_to_time_mapping));
|
|
425
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
413
426
|
seqs = tp_mapping.TEST_GetInternalMapping();
|
|
414
|
-
//
|
|
415
|
-
ASSERT_GE(seqs.size(),
|
|
416
|
-
ASSERT_LE(seqs.size(),
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
ASSERT_GE(tp_mapping.GetProximalTimeBeforeSeqno(i),
|
|
421
|
-
start_time + (i - start_seq) * 200 - 100);
|
|
422
|
-
}
|
|
423
|
-
ASSERT_LE(tp_mapping.GetProximalTimeBeforeSeqno(i),
|
|
424
|
-
start_time + (i - start_seq) * 200);
|
|
425
|
-
}
|
|
427
|
+
// For the preserved time span, only 10000/200=50 (+1) entries were recorded
|
|
428
|
+
ASSERT_GE(seqs.size(), 50);
|
|
429
|
+
ASSERT_LE(seqs.size(), 51);
|
|
430
|
+
|
|
431
|
+
ValidateProximalSeqnos("c", 0.04);
|
|
432
|
+
|
|
426
433
|
checked_file_nums.insert(it->second->orig_file_number);
|
|
427
|
-
start_seq = seq_end;
|
|
428
|
-
start_time = mock_clock_->NowSeconds();
|
|
429
434
|
|
|
430
435
|
// Write a key every 100 seconds
|
|
431
436
|
for (int i = 0; i < 200; i++) {
|
|
@@ -433,7 +438,6 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
|
|
|
433
438
|
dbfull()->TEST_WaitForPeriodicTaskRun(
|
|
434
439
|
[&] { mock_clock_->MockSleepForSeconds(static_cast<int>(100)); });
|
|
435
440
|
}
|
|
436
|
-
seq_end = dbfull()->GetLatestSequenceNumber() + 1;
|
|
437
441
|
ASSERT_OK(Flush());
|
|
438
442
|
tables_props.clear();
|
|
439
443
|
ASSERT_OK(dbfull()->GetPropertiesOfAllTables(&tables_props));
|
|
@@ -447,9 +451,11 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
|
|
|
447
451
|
}
|
|
448
452
|
ASSERT_TRUE(it != tables_props.end());
|
|
449
453
|
tp_mapping.Clear();
|
|
450
|
-
ASSERT_OK(tp_mapping.
|
|
451
|
-
|
|
454
|
+
ASSERT_OK(tp_mapping.DecodeFrom(it->second->seqno_to_time_mapping));
|
|
455
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
452
456
|
seqs = tp_mapping.TEST_GetInternalMapping();
|
|
457
|
+
// For the preserved time span, max entries were recorded and
|
|
458
|
+
// preserved (10000/100=100 (+1))
|
|
453
459
|
ASSERT_GE(seqs.size(), 99);
|
|
454
460
|
ASSERT_LE(seqs.size(), 101);
|
|
455
461
|
|
|
@@ -474,21 +480,14 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
|
|
|
474
480
|
}
|
|
475
481
|
ASSERT_TRUE(it != tables_props.end());
|
|
476
482
|
tp_mapping.Clear();
|
|
477
|
-
ASSERT_OK(tp_mapping.
|
|
478
|
-
|
|
483
|
+
ASSERT_OK(tp_mapping.DecodeFrom(it->second->seqno_to_time_mapping));
|
|
484
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
479
485
|
seqs = tp_mapping.TEST_GetInternalMapping();
|
|
480
486
|
ASSERT_GE(seqs.size(), 99);
|
|
481
487
|
ASSERT_LE(seqs.size(), 101);
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
if ((seq_end - i) * 100 < 10000) {
|
|
486
|
-
ASSERT_GE(tp_mapping.GetProximalTimeBeforeSeqno(i),
|
|
487
|
-
start_time + (i - start_seq) * 100 - 100);
|
|
488
|
-
}
|
|
489
|
-
ASSERT_LE(tp_mapping.GetProximalTimeBeforeSeqno(i),
|
|
490
|
-
start_time + (i - start_seq) * 100);
|
|
491
|
-
}
|
|
488
|
+
|
|
489
|
+
ValidateProximalSeqnos("d", 0.02);
|
|
490
|
+
|
|
492
491
|
ASSERT_OK(db_->Close());
|
|
493
492
|
}
|
|
494
493
|
|
|
@@ -545,8 +544,8 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
|
|
|
545
544
|
ASSERT_EQ(tables_props.size(), 1);
|
|
546
545
|
it = tables_props.begin();
|
|
547
546
|
SeqnoToTimeMapping tp_mapping;
|
|
548
|
-
ASSERT_OK(tp_mapping.
|
|
549
|
-
|
|
547
|
+
ASSERT_OK(tp_mapping.DecodeFrom(it->second->seqno_to_time_mapping));
|
|
548
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
550
549
|
ASSERT_FALSE(tp_mapping.Empty());
|
|
551
550
|
auto seqs = tp_mapping.TEST_GetInternalMapping();
|
|
552
551
|
ASSERT_GE(seqs.size(), 1);
|
|
@@ -565,7 +564,8 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
|
|
|
565
564
|
}
|
|
566
565
|
seqs = dbfull()->TEST_GetSeqnoToTimeMapping().TEST_GetInternalMapping();
|
|
567
566
|
ASSERT_GE(seqs.size(), 1000 - 1);
|
|
568
|
-
|
|
567
|
+
// Non-strict limit can exceed capacity by a reasonable fraction
|
|
568
|
+
ASSERT_LE(seqs.size(), 1000 * 9 / 8);
|
|
569
569
|
|
|
570
570
|
ASSERT_OK(Flush(2));
|
|
571
571
|
tables_props.clear();
|
|
@@ -573,8 +573,8 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
|
|
|
573
573
|
ASSERT_EQ(tables_props.size(), 1);
|
|
574
574
|
it = tables_props.begin();
|
|
575
575
|
tp_mapping.Clear();
|
|
576
|
-
ASSERT_OK(tp_mapping.
|
|
577
|
-
|
|
576
|
+
ASSERT_OK(tp_mapping.DecodeFrom(it->second->seqno_to_time_mapping));
|
|
577
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
578
578
|
seqs = tp_mapping.TEST_GetInternalMapping();
|
|
579
579
|
// the max encoded entries is 100
|
|
580
580
|
ASSERT_GE(seqs.size(), 100 - 1);
|
|
@@ -606,8 +606,8 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
|
|
|
606
606
|
ASSERT_EQ(tables_props.size(), 1);
|
|
607
607
|
it = tables_props.begin();
|
|
608
608
|
tp_mapping.Clear();
|
|
609
|
-
ASSERT_OK(tp_mapping.
|
|
610
|
-
|
|
609
|
+
ASSERT_OK(tp_mapping.DecodeFrom(it->second->seqno_to_time_mapping));
|
|
610
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
611
611
|
seqs = tp_mapping.TEST_GetInternalMapping();
|
|
612
612
|
ASSERT_GE(seqs.size(), 99);
|
|
613
613
|
ASSERT_LE(seqs.size(), 101);
|
|
@@ -721,8 +721,8 @@ TEST_P(SeqnoTimeTablePropTest, SeqnoToTimeMappingUniversal) {
|
|
|
721
721
|
for (const auto& props : tables_props) {
|
|
722
722
|
ASSERT_FALSE(props.second->seqno_to_time_mapping.empty());
|
|
723
723
|
SeqnoToTimeMapping tp_mapping;
|
|
724
|
-
ASSERT_OK(tp_mapping.
|
|
725
|
-
|
|
724
|
+
ASSERT_OK(tp_mapping.DecodeFrom(props.second->seqno_to_time_mapping));
|
|
725
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
726
726
|
ASSERT_FALSE(tp_mapping.Empty());
|
|
727
727
|
auto seqs = tp_mapping.TEST_GetInternalMapping();
|
|
728
728
|
// Add (roughly) one for starting entry.
|
|
@@ -746,7 +746,8 @@ TEST_P(SeqnoTimeTablePropTest, SeqnoToTimeMappingUniversal) {
|
|
|
746
746
|
auto it = tables_props.begin();
|
|
747
747
|
SeqnoToTimeMapping tp_mapping;
|
|
748
748
|
ASSERT_FALSE(it->second->seqno_to_time_mapping.empty());
|
|
749
|
-
ASSERT_OK(tp_mapping.
|
|
749
|
+
ASSERT_OK(tp_mapping.DecodeFrom(it->second->seqno_to_time_mapping));
|
|
750
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
750
751
|
|
|
751
752
|
// compact to the last level
|
|
752
753
|
CompactRangeOptions cro;
|
|
@@ -773,7 +774,8 @@ TEST_P(SeqnoTimeTablePropTest, SeqnoToTimeMappingUniversal) {
|
|
|
773
774
|
|
|
774
775
|
it = tables_props.begin();
|
|
775
776
|
ASSERT_FALSE(it->second->seqno_to_time_mapping.empty());
|
|
776
|
-
ASSERT_OK(tp_mapping.
|
|
777
|
+
ASSERT_OK(tp_mapping.DecodeFrom(it->second->seqno_to_time_mapping));
|
|
778
|
+
ASSERT_TRUE(tp_mapping.TEST_IsEnforced());
|
|
777
779
|
|
|
778
780
|
// make half of the data expired
|
|
779
781
|
mock_clock_->MockSleepForSeconds(static_cast<int>(8000));
|
|
@@ -929,7 +931,7 @@ TEST_P(SeqnoTimeTablePropTest, PrePopulateInDB) {
|
|
|
929
931
|
DestroyAndReopen(track_options);
|
|
930
932
|
|
|
931
933
|
// Ensure pre-population
|
|
932
|
-
constexpr auto kPrePopPairs =
|
|
934
|
+
constexpr auto kPrePopPairs = kMaxSeqnoTimePairsPerSST;
|
|
933
935
|
sttm = dbfull()->TEST_GetSeqnoToTimeMapping();
|
|
934
936
|
latest_seqno = db_->GetLatestSequenceNumber();
|
|
935
937
|
start_time = mock_clock_->NowSeconds();
|
|
@@ -970,7 +972,7 @@ TEST_P(SeqnoTimeTablePropTest, PrePopulateInDB) {
|
|
|
970
972
|
sttm = dbfull()->TEST_GetSeqnoToTimeMapping();
|
|
971
973
|
latest_seqno = db_->GetLatestSequenceNumber();
|
|
972
974
|
end_time = mock_clock_->NowSeconds();
|
|
973
|
-
|
|
975
|
+
ASSERT_GE(sttm.Size(), kPrePopPairs);
|
|
974
976
|
ASSERT_EQ(sttm.GetProximalSeqnoBeforeTime(end_time), latest_seqno);
|
|
975
977
|
ASSERT_EQ(sttm.GetProximalSeqnoBeforeTime(start_time - kPreserveSecs / 2),
|
|
976
978
|
kPrePopPairs / 2);
|
|
@@ -1015,42 +1017,153 @@ TEST_P(SeqnoTimeTablePropTest, PrePopulateInDB) {
|
|
|
1015
1017
|
}
|
|
1016
1018
|
|
|
1017
1019
|
TEST_F(SeqnoTimeTest, MappingAppend) {
|
|
1018
|
-
|
|
1020
|
+
using P = SeqnoToTimeMapping::SeqnoTimePair;
|
|
1021
|
+
SeqnoToTimeMapping test;
|
|
1022
|
+
test.SetMaxTimeSpan(100).SetCapacity(10);
|
|
1019
1023
|
|
|
1020
1024
|
// ignore seqno == 0, as it may mean the seqno is zeroed out
|
|
1021
|
-
ASSERT_FALSE(test.Append(0,
|
|
1025
|
+
ASSERT_FALSE(test.Append(0, 100));
|
|
1022
1026
|
|
|
1023
|
-
ASSERT_TRUE(test.Append(3,
|
|
1027
|
+
ASSERT_TRUE(test.Append(3, 200));
|
|
1024
1028
|
auto size = test.Size();
|
|
1025
1029
|
// normal add
|
|
1026
|
-
ASSERT_TRUE(test.Append(10,
|
|
1030
|
+
ASSERT_TRUE(test.Append(10, 300));
|
|
1027
1031
|
size++;
|
|
1028
1032
|
ASSERT_EQ(size, test.Size());
|
|
1029
1033
|
|
|
1030
|
-
// Append unsorted
|
|
1031
|
-
ASSERT_FALSE(test.Append(8, 12));
|
|
1032
|
-
ASSERT_EQ(size, test.Size());
|
|
1033
|
-
|
|
1034
1034
|
// Append with the same seqno, newer time is rejected because that makes
|
|
1035
1035
|
// GetProximalSeqnoBeforeTime queries worse (see later test)
|
|
1036
|
-
ASSERT_FALSE(test.Append(10,
|
|
1036
|
+
ASSERT_FALSE(test.Append(10, 301));
|
|
1037
1037
|
ASSERT_EQ(size, test.Size());
|
|
1038
|
-
|
|
1039
|
-
|
|
1038
|
+
ASSERT_EQ(test.TEST_GetLastEntry(), P({10, 300}));
|
|
1039
|
+
|
|
1040
|
+
// Same or new seqno with same or older time (as last successfully added) is
|
|
1041
|
+
// accepted by replacing last entry (improves GetProximalSeqnoBeforeTime
|
|
1042
|
+
// queries without blowing up size)
|
|
1043
|
+
ASSERT_FALSE(test.Append(10, 299));
|
|
1040
1044
|
ASSERT_EQ(size, test.Size());
|
|
1045
|
+
ASSERT_EQ(test.TEST_GetLastEntry(), P({10, 299}));
|
|
1041
1046
|
|
|
1042
|
-
|
|
1043
|
-
ASSERT_FALSE(test.Append(12, 8));
|
|
1047
|
+
ASSERT_FALSE(test.Append(11, 299));
|
|
1044
1048
|
ASSERT_EQ(size, test.Size());
|
|
1049
|
+
ASSERT_EQ(test.TEST_GetLastEntry(), P({11, 299}));
|
|
1045
1050
|
|
|
1046
|
-
|
|
1047
|
-
// (improves GetProximalSeqnoBeforeTime queries without blowing up size)
|
|
1048
|
-
ASSERT_TRUE(test.Append(12, 11));
|
|
1051
|
+
ASSERT_FALSE(test.Append(11, 250));
|
|
1049
1052
|
ASSERT_EQ(size, test.Size());
|
|
1053
|
+
ASSERT_EQ(test.TEST_GetLastEntry(), P({11, 250}));
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
TEST_F(SeqnoTimeTest, CapacityLimits) {
|
|
1057
|
+
using P = SeqnoToTimeMapping::SeqnoTimePair;
|
|
1058
|
+
SeqnoToTimeMapping test;
|
|
1059
|
+
|
|
1060
|
+
test.SetCapacity(3);
|
|
1061
|
+
EXPECT_TRUE(test.Append(10, 300));
|
|
1062
|
+
EXPECT_TRUE(test.Append(20, 400));
|
|
1063
|
+
EXPECT_TRUE(test.Append(30, 500));
|
|
1064
|
+
EXPECT_TRUE(test.Append(40, 600));
|
|
1065
|
+
// Capacity 3 is small enough that the non-strict limit is
|
|
1066
|
+
// equal to the strict limit.
|
|
1067
|
+
EXPECT_EQ(3U, test.Size());
|
|
1068
|
+
EXPECT_EQ(test.TEST_GetLastEntry(), P({40, 600}));
|
|
1069
|
+
|
|
1070
|
+
// Same for Capacity 2
|
|
1071
|
+
test.SetCapacity(2);
|
|
1072
|
+
EXPECT_EQ(2U, test.Size());
|
|
1073
|
+
EXPECT_EQ(test.TEST_GetLastEntry(), P({40, 600}));
|
|
1074
|
+
|
|
1075
|
+
EXPECT_TRUE(test.Append(50, 700));
|
|
1076
|
+
EXPECT_EQ(2U, test.Size());
|
|
1077
|
+
EXPECT_EQ(test.TEST_GetLastEntry(), P({50, 700}));
|
|
1078
|
+
|
|
1079
|
+
// Capacity 1 is difficult to work with internally, so is
|
|
1080
|
+
// coerced to 2.
|
|
1081
|
+
test.SetCapacity(1);
|
|
1082
|
+
EXPECT_EQ(2U, test.Size());
|
|
1083
|
+
EXPECT_EQ(test.TEST_GetLastEntry(), P({50, 700}));
|
|
1084
|
+
|
|
1085
|
+
EXPECT_TRUE(test.Append(60, 800));
|
|
1086
|
+
EXPECT_EQ(2U, test.Size());
|
|
1087
|
+
EXPECT_EQ(test.TEST_GetLastEntry(), P({60, 800}));
|
|
1088
|
+
|
|
1089
|
+
// Capacity 0 means throw everything away
|
|
1090
|
+
test.SetCapacity(0);
|
|
1091
|
+
EXPECT_EQ(0U, test.Size());
|
|
1092
|
+
|
|
1093
|
+
EXPECT_FALSE(test.Append(70, 900));
|
|
1094
|
+
EXPECT_EQ(0U, test.Size());
|
|
1095
|
+
|
|
1096
|
+
// Unlimited capacity
|
|
1097
|
+
test.SetCapacity(UINT64_MAX);
|
|
1098
|
+
for (unsigned i = 1; i <= 10101U; i++) {
|
|
1099
|
+
EXPECT_TRUE(test.Append(i, 11U * i));
|
|
1100
|
+
}
|
|
1101
|
+
EXPECT_EQ(10101U, test.Size());
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
TEST_F(SeqnoTimeTest, TimeSpanLimits) {
|
|
1105
|
+
SeqnoToTimeMapping test;
|
|
1106
|
+
|
|
1107
|
+
// Default: no limit
|
|
1108
|
+
for (unsigned i = 1; i <= 63U; i++) {
|
|
1109
|
+
EXPECT_TRUE(test.Append(1000 + i, uint64_t{1} << i));
|
|
1110
|
+
}
|
|
1111
|
+
// None dropped.
|
|
1112
|
+
EXPECT_EQ(63U, test.Size());
|
|
1113
|
+
|
|
1114
|
+
test.Clear();
|
|
1115
|
+
|
|
1116
|
+
// Explicit no limit
|
|
1117
|
+
test.SetMaxTimeSpan(UINT64_MAX);
|
|
1118
|
+
for (unsigned i = 1; i <= 63U; i++) {
|
|
1119
|
+
EXPECT_TRUE(test.Append(1000 + i, uint64_t{1} << i));
|
|
1120
|
+
}
|
|
1121
|
+
// None dropped.
|
|
1122
|
+
EXPECT_EQ(63U, test.Size());
|
|
1123
|
+
|
|
1124
|
+
// We generally keep 2 entries as long as the configured max time span
|
|
1125
|
+
// is non-zero
|
|
1126
|
+
test.SetMaxTimeSpan(10);
|
|
1127
|
+
EXPECT_EQ(2U, test.Size());
|
|
1128
|
+
|
|
1129
|
+
test.SetMaxTimeSpan(1);
|
|
1130
|
+
EXPECT_EQ(2U, test.Size());
|
|
1131
|
+
|
|
1132
|
+
// But go down to 1 entry if the max time span is zero
|
|
1133
|
+
test.SetMaxTimeSpan(0);
|
|
1134
|
+
EXPECT_EQ(1U, test.Size());
|
|
1135
|
+
|
|
1136
|
+
EXPECT_TRUE(test.Append(2000, (uint64_t{1} << 63) + 42U));
|
|
1137
|
+
EXPECT_EQ(1U, test.Size());
|
|
1138
|
+
|
|
1139
|
+
test.Clear();
|
|
1140
|
+
|
|
1141
|
+
// Test more typical behavior. Note that one entry at or beyond the max span
|
|
1142
|
+
// is kept.
|
|
1143
|
+
test.SetMaxTimeSpan(100);
|
|
1144
|
+
EXPECT_TRUE(test.Append(1001, 123));
|
|
1145
|
+
EXPECT_TRUE(test.Append(1002, 134));
|
|
1146
|
+
EXPECT_TRUE(test.Append(1003, 150));
|
|
1147
|
+
EXPECT_TRUE(test.Append(1004, 189));
|
|
1148
|
+
EXPECT_TRUE(test.Append(1005, 220));
|
|
1149
|
+
EXPECT_EQ(5U, test.Size());
|
|
1150
|
+
EXPECT_TRUE(test.Append(1006, 233));
|
|
1151
|
+
EXPECT_EQ(6U, test.Size());
|
|
1152
|
+
EXPECT_TRUE(test.Append(1007, 234));
|
|
1153
|
+
EXPECT_EQ(6U, test.Size());
|
|
1154
|
+
EXPECT_TRUE(test.Append(1008, 235));
|
|
1155
|
+
EXPECT_EQ(7U, test.Size());
|
|
1156
|
+
EXPECT_TRUE(test.Append(1009, 300));
|
|
1157
|
+
EXPECT_EQ(6U, test.Size());
|
|
1158
|
+
EXPECT_TRUE(test.Append(1010, 350));
|
|
1159
|
+
EXPECT_EQ(3U, test.Size());
|
|
1160
|
+
EXPECT_TRUE(test.Append(1011, 470));
|
|
1161
|
+
EXPECT_EQ(2U, test.Size());
|
|
1050
1162
|
}
|
|
1051
1163
|
|
|
1052
1164
|
TEST_F(SeqnoTimeTest, ProximalFunctions) {
|
|
1053
|
-
SeqnoToTimeMapping test
|
|
1165
|
+
SeqnoToTimeMapping test;
|
|
1166
|
+
test.SetCapacity(10);
|
|
1054
1167
|
|
|
1055
1168
|
EXPECT_EQ(test.GetProximalTimeBeforeSeqno(1), kUnknownTimeBeforeAll);
|
|
1056
1169
|
EXPECT_EQ(test.GetProximalTimeBeforeSeqno(1000000000000U),
|
|
@@ -1081,6 +1194,7 @@ TEST_F(SeqnoTimeTest, ProximalFunctions) {
|
|
|
1081
1194
|
// More samples
|
|
1082
1195
|
EXPECT_TRUE(test.Append(20, 600));
|
|
1083
1196
|
EXPECT_TRUE(test.Append(30, 700));
|
|
1197
|
+
EXPECT_EQ(test.Size(), 3U);
|
|
1084
1198
|
|
|
1085
1199
|
EXPECT_EQ(test.GetProximalTimeBeforeSeqno(10), kUnknownTimeBeforeAll);
|
|
1086
1200
|
EXPECT_EQ(test.GetProximalTimeBeforeSeqno(11), 500U);
|
|
@@ -1140,8 +1254,9 @@ TEST_F(SeqnoTimeTest, ProximalFunctions) {
|
|
|
1140
1254
|
|
|
1141
1255
|
// Burst of writes during a short time creates an opportunity
|
|
1142
1256
|
// for better results from GetProximalSeqnoBeforeTime(), at the
|
|
1143
|
-
// expense of GetProximalTimeBeforeSeqno().
|
|
1144
|
-
|
|
1257
|
+
// expense of GetProximalTimeBeforeSeqno(). False return indicates
|
|
1258
|
+
// merge with previous entry.
|
|
1259
|
+
EXPECT_FALSE(test.Append(50, 900));
|
|
1145
1260
|
|
|
1146
1261
|
// These are subject to later revision depending on priorities
|
|
1147
1262
|
EXPECT_EQ(test.GetProximalTimeBeforeSeqno(49), 700U);
|
|
@@ -1151,7 +1266,8 @@ TEST_F(SeqnoTimeTest, ProximalFunctions) {
|
|
|
1151
1266
|
}
|
|
1152
1267
|
|
|
1153
1268
|
TEST_F(SeqnoTimeTest, PrePopulate) {
|
|
1154
|
-
SeqnoToTimeMapping test
|
|
1269
|
+
SeqnoToTimeMapping test;
|
|
1270
|
+
test.SetMaxTimeSpan(100).SetCapacity(10);
|
|
1155
1271
|
|
|
1156
1272
|
EXPECT_EQ(test.Size(), 0U);
|
|
1157
1273
|
|
|
@@ -1194,14 +1310,102 @@ TEST_F(SeqnoTimeTest, PrePopulate) {
|
|
|
1194
1310
|
}
|
|
1195
1311
|
}
|
|
1196
1312
|
|
|
1197
|
-
TEST_F(SeqnoTimeTest,
|
|
1198
|
-
|
|
1199
|
-
SeqnoToTimeMapping
|
|
1313
|
+
TEST_F(SeqnoTimeTest, CopyFromSeqnoRange) {
|
|
1314
|
+
SeqnoToTimeMapping test_from;
|
|
1315
|
+
SeqnoToTimeMapping test_to;
|
|
1316
|
+
|
|
1317
|
+
// With zero to draw from
|
|
1318
|
+
test_to.Clear();
|
|
1319
|
+
test_to.CopyFromSeqnoRange(test_from, 0, 1000000);
|
|
1320
|
+
EXPECT_EQ(test_to.Size(), 0U);
|
|
1321
|
+
|
|
1322
|
+
test_to.Clear();
|
|
1323
|
+
test_to.CopyFromSeqnoRange(test_from, 100, 100);
|
|
1324
|
+
EXPECT_EQ(test_to.Size(), 0U);
|
|
1325
|
+
|
|
1326
|
+
test_to.Clear();
|
|
1327
|
+
test_to.CopyFromSeqnoRange(test_from, kMaxSequenceNumber, 0);
|
|
1328
|
+
EXPECT_EQ(test_to.Size(), 0U);
|
|
1329
|
+
|
|
1330
|
+
// With one to draw from
|
|
1331
|
+
EXPECT_TRUE(test_from.Append(10, 500));
|
|
1332
|
+
|
|
1333
|
+
test_to.Clear();
|
|
1334
|
+
test_to.CopyFromSeqnoRange(test_from, 0, 1000000);
|
|
1335
|
+
EXPECT_EQ(test_to.Size(), 1U);
|
|
1336
|
+
|
|
1337
|
+
// Includes one entry before range
|
|
1338
|
+
test_to.Clear();
|
|
1339
|
+
test_to.CopyFromSeqnoRange(test_from, 100, 100);
|
|
1340
|
+
EXPECT_EQ(test_to.Size(), 1U);
|
|
1341
|
+
|
|
1342
|
+
// Includes one entry before range (even if somewhat nonsensical)
|
|
1343
|
+
test_to.Clear();
|
|
1344
|
+
test_to.CopyFromSeqnoRange(test_from, kMaxSequenceNumber, 0);
|
|
1345
|
+
EXPECT_EQ(test_to.Size(), 1U);
|
|
1346
|
+
|
|
1347
|
+
test_to.Clear();
|
|
1348
|
+
test_to.CopyFromSeqnoRange(test_from, 0, 9);
|
|
1349
|
+
EXPECT_EQ(test_to.Size(), 0U);
|
|
1350
|
+
|
|
1351
|
+
test_to.Clear();
|
|
1352
|
+
test_to.CopyFromSeqnoRange(test_from, 0, 10);
|
|
1353
|
+
EXPECT_EQ(test_to.Size(), 1U);
|
|
1354
|
+
|
|
1355
|
+
// With more to draw from
|
|
1356
|
+
EXPECT_TRUE(test_from.Append(20, 600));
|
|
1357
|
+
EXPECT_TRUE(test_from.Append(30, 700));
|
|
1358
|
+
EXPECT_TRUE(test_from.Append(40, 800));
|
|
1359
|
+
EXPECT_TRUE(test_from.Append(50, 900));
|
|
1360
|
+
|
|
1361
|
+
test_to.Clear();
|
|
1362
|
+
test_to.CopyFromSeqnoRange(test_from, 0, 1000000);
|
|
1363
|
+
EXPECT_EQ(test_to.Size(), 5U);
|
|
1364
|
+
|
|
1365
|
+
// Includes one entry before range
|
|
1366
|
+
test_to.Clear();
|
|
1367
|
+
test_to.CopyFromSeqnoRange(test_from, 100, 100);
|
|
1368
|
+
EXPECT_EQ(test_to.Size(), 1U);
|
|
1369
|
+
|
|
1370
|
+
test_to.Clear();
|
|
1371
|
+
test_to.CopyFromSeqnoRange(test_from, 19, 19);
|
|
1372
|
+
EXPECT_EQ(test_to.Size(), 1U);
|
|
1373
|
+
|
|
1374
|
+
// Includes one entry before range (even if somewhat nonsensical)
|
|
1375
|
+
test_to.Clear();
|
|
1376
|
+
test_to.CopyFromSeqnoRange(test_from, kMaxSequenceNumber, 0);
|
|
1377
|
+
EXPECT_EQ(test_to.Size(), 1U);
|
|
1378
|
+
|
|
1379
|
+
test_to.Clear();
|
|
1380
|
+
test_to.CopyFromSeqnoRange(test_from, 0, 9);
|
|
1381
|
+
EXPECT_EQ(test_to.Size(), 0U);
|
|
1382
|
+
|
|
1383
|
+
test_to.Clear();
|
|
1384
|
+
test_to.CopyFromSeqnoRange(test_from, 0, 10);
|
|
1385
|
+
EXPECT_EQ(test_to.Size(), 1U);
|
|
1386
|
+
|
|
1387
|
+
test_to.Clear();
|
|
1388
|
+
test_to.CopyFromSeqnoRange(test_from, 20, 20);
|
|
1389
|
+
EXPECT_EQ(test_to.Size(), 2U);
|
|
1390
|
+
|
|
1391
|
+
test_to.Clear();
|
|
1392
|
+
test_to.CopyFromSeqnoRange(test_from, 20, 29);
|
|
1393
|
+
EXPECT_EQ(test_to.Size(), 2U);
|
|
1394
|
+
|
|
1395
|
+
test_to.Clear();
|
|
1396
|
+
test_to.CopyFromSeqnoRange(test_from, 20, 30);
|
|
1397
|
+
EXPECT_EQ(test_to.Size(), 3U);
|
|
1398
|
+
}
|
|
1399
|
+
|
|
1400
|
+
TEST_F(SeqnoTimeTest, EnforceWithNow) {
|
|
1401
|
+
constexpr uint64_t kMaxTimeSpan = 420;
|
|
1402
|
+
SeqnoToTimeMapping test;
|
|
1403
|
+
test.SetMaxTimeSpan(kMaxTimeSpan).SetCapacity(10);
|
|
1200
1404
|
|
|
1201
1405
|
EXPECT_EQ(test.Size(), 0U);
|
|
1202
1406
|
|
|
1203
1407
|
// Safe on empty mapping
|
|
1204
|
-
test.
|
|
1408
|
+
test.Enforce(/*now=*/500);
|
|
1205
1409
|
|
|
1206
1410
|
EXPECT_EQ(test.Size(), 0U);
|
|
1207
1411
|
|
|
@@ -1223,13 +1427,13 @@ TEST_F(SeqnoTimeTest, TruncateOldEntries) {
|
|
|
1223
1427
|
// etc.
|
|
1224
1428
|
|
|
1225
1429
|
// Must keep first entry
|
|
1226
|
-
test.
|
|
1430
|
+
test.Enforce(/*now=*/500 + kMaxTimeSpan);
|
|
1227
1431
|
EXPECT_EQ(test.Size(), 5U);
|
|
1228
|
-
test.
|
|
1432
|
+
test.Enforce(/*now=*/599 + kMaxTimeSpan);
|
|
1229
1433
|
EXPECT_EQ(test.Size(), 5U);
|
|
1230
1434
|
|
|
1231
1435
|
// Purges first entry
|
|
1232
|
-
test.
|
|
1436
|
+
test.Enforce(/*now=*/600 + kMaxTimeSpan);
|
|
1233
1437
|
EXPECT_EQ(test.Size(), 4U);
|
|
1234
1438
|
|
|
1235
1439
|
EXPECT_EQ(test.GetProximalSeqnoBeforeTime(500), kUnknownSeqnoBeforeAll);
|
|
@@ -1239,20 +1443,20 @@ TEST_F(SeqnoTimeTest, TruncateOldEntries) {
|
|
|
1239
1443
|
EXPECT_EQ(test.GetProximalSeqnoBeforeTime(700), 30U);
|
|
1240
1444
|
|
|
1241
1445
|
// No effect
|
|
1242
|
-
test.
|
|
1446
|
+
test.Enforce(/*now=*/600 + kMaxTimeSpan);
|
|
1243
1447
|
EXPECT_EQ(test.Size(), 4U);
|
|
1244
|
-
test.
|
|
1448
|
+
test.Enforce(/*now=*/699 + kMaxTimeSpan);
|
|
1245
1449
|
EXPECT_EQ(test.Size(), 4U);
|
|
1246
1450
|
|
|
1247
1451
|
// Purges next two
|
|
1248
|
-
test.
|
|
1452
|
+
test.Enforce(/*now=*/899 + kMaxTimeSpan);
|
|
1249
1453
|
EXPECT_EQ(test.Size(), 2U);
|
|
1250
1454
|
|
|
1251
1455
|
EXPECT_EQ(test.GetProximalSeqnoBeforeTime(799), kUnknownSeqnoBeforeAll);
|
|
1252
1456
|
EXPECT_EQ(test.GetProximalSeqnoBeforeTime(899), 40U);
|
|
1253
1457
|
|
|
1254
1458
|
// Always keep last entry, to have a non-trivial seqno bound
|
|
1255
|
-
test.
|
|
1459
|
+
test.Enforce(/*now=*/10000000);
|
|
1256
1460
|
EXPECT_EQ(test.Size(), 1U);
|
|
1257
1461
|
|
|
1258
1462
|
EXPECT_EQ(test.GetProximalSeqnoBeforeTime(10000000), 50U);
|
|
@@ -1262,67 +1466,114 @@ TEST_F(SeqnoTimeTest, Sort) {
|
|
|
1262
1466
|
SeqnoToTimeMapping test;
|
|
1263
1467
|
|
|
1264
1468
|
// single entry
|
|
1265
|
-
test.
|
|
1266
|
-
|
|
1469
|
+
test.AddUnenforced(10, 11);
|
|
1470
|
+
test.Enforce();
|
|
1267
1471
|
ASSERT_EQ(test.Size(), 1);
|
|
1268
1472
|
|
|
1269
|
-
// duplicate
|
|
1270
|
-
test.
|
|
1271
|
-
|
|
1272
|
-
test.
|
|
1473
|
+
// duplicate is ignored
|
|
1474
|
+
test.AddUnenforced(10, 11);
|
|
1475
|
+
test.Enforce();
|
|
1476
|
+
ASSERT_EQ(test.Size(), 1);
|
|
1273
1477
|
|
|
1274
|
-
//
|
|
1275
|
-
test.
|
|
1276
|
-
test.
|
|
1478
|
+
// add some revised mappings for that seqno
|
|
1479
|
+
test.AddUnenforced(10, 10);
|
|
1480
|
+
test.AddUnenforced(10, 12);
|
|
1277
1481
|
|
|
1278
|
-
//
|
|
1279
|
-
|
|
1280
|
-
test.
|
|
1482
|
+
// We currently favor GetProximalSeqnoBeforeTime over
|
|
1483
|
+
// GetProximalTimeBeforeSeqno by keeping the older time.
|
|
1484
|
+
test.Enforce();
|
|
1485
|
+
auto seqs = test.TEST_GetInternalMapping();
|
|
1486
|
+
std::deque<SeqnoToTimeMapping::SeqnoTimePair> expected;
|
|
1487
|
+
expected.emplace_back(10, 10);
|
|
1488
|
+
ASSERT_EQ(expected, seqs);
|
|
1281
1489
|
|
|
1282
|
-
|
|
1490
|
+
// add an inconsistent / unuseful mapping
|
|
1491
|
+
test.AddUnenforced(9, 11);
|
|
1492
|
+
test.Enforce();
|
|
1493
|
+
seqs = test.TEST_GetInternalMapping();
|
|
1494
|
+
ASSERT_EQ(expected, seqs);
|
|
1283
1495
|
|
|
1284
|
-
|
|
1496
|
+
// And a mapping that is considered more useful (for
|
|
1497
|
+
// GetProximalSeqnoBeforeTime) and thus replaces that one
|
|
1498
|
+
test.AddUnenforced(11, 9);
|
|
1499
|
+
test.Enforce();
|
|
1500
|
+
seqs = test.TEST_GetInternalMapping();
|
|
1501
|
+
expected.clear();
|
|
1502
|
+
expected.emplace_back(11, 9);
|
|
1503
|
+
ASSERT_EQ(expected, seqs);
|
|
1285
1504
|
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1505
|
+
// Add more good, non-mergable entries
|
|
1506
|
+
test.AddUnenforced(1, 5);
|
|
1507
|
+
test.AddUnenforced(100, 100);
|
|
1508
|
+
test.Enforce();
|
|
1509
|
+
seqs = test.TEST_GetInternalMapping();
|
|
1510
|
+
expected.clear();
|
|
1511
|
+
expected.emplace_back(1, 5);
|
|
1512
|
+
expected.emplace_back(11, 9);
|
|
1289
1513
|
expected.emplace_back(100, 100);
|
|
1290
|
-
|
|
1291
1514
|
ASSERT_EQ(expected, seqs);
|
|
1292
1515
|
}
|
|
1293
1516
|
|
|
1294
1517
|
TEST_F(SeqnoTimeTest, EncodeDecodeBasic) {
|
|
1295
|
-
|
|
1518
|
+
constexpr uint32_t kOriginalSamples = 1000;
|
|
1519
|
+
SeqnoToTimeMapping test;
|
|
1520
|
+
test.SetCapacity(kOriginalSamples);
|
|
1296
1521
|
|
|
1297
1522
|
std::string output;
|
|
1298
|
-
test.
|
|
1523
|
+
test.EncodeTo(output);
|
|
1299
1524
|
ASSERT_TRUE(output.empty());
|
|
1300
1525
|
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
}
|
|
1304
|
-
test.Encode(output, 0, 1000, 100);
|
|
1526
|
+
ASSERT_OK(test.DecodeFrom(output));
|
|
1527
|
+
ASSERT_EQ(test.Size(), 0U);
|
|
1305
1528
|
|
|
1529
|
+
Random rnd(123);
|
|
1530
|
+
for (uint32_t i = 1; i <= kOriginalSamples; i++) {
|
|
1531
|
+
ASSERT_TRUE(test.Append(i, i * 10 + rnd.Uniform(10)));
|
|
1532
|
+
}
|
|
1533
|
+
output.clear();
|
|
1534
|
+
test.EncodeTo(output);
|
|
1306
1535
|
ASSERT_FALSE(output.empty());
|
|
1307
1536
|
|
|
1308
1537
|
SeqnoToTimeMapping decoded;
|
|
1309
|
-
ASSERT_OK(decoded.
|
|
1310
|
-
|
|
1311
|
-
ASSERT_EQ(
|
|
1312
|
-
ASSERT_EQ(test.
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1538
|
+
ASSERT_OK(decoded.DecodeFrom(output));
|
|
1539
|
+
ASSERT_TRUE(decoded.TEST_IsEnforced());
|
|
1540
|
+
ASSERT_EQ(test.Size(), decoded.Size());
|
|
1541
|
+
ASSERT_EQ(test.TEST_GetInternalMapping(), decoded.TEST_GetInternalMapping());
|
|
1542
|
+
|
|
1543
|
+
// Encode a reduced set of mappings
|
|
1544
|
+
constexpr uint32_t kReducedSize = 51U;
|
|
1545
|
+
output.clear();
|
|
1546
|
+
SeqnoToTimeMapping(test).SetCapacity(kReducedSize).EncodeTo(output);
|
|
1547
|
+
|
|
1548
|
+
decoded.Clear();
|
|
1549
|
+
ASSERT_OK(decoded.DecodeFrom(output));
|
|
1550
|
+
ASSERT_TRUE(decoded.TEST_IsEnforced());
|
|
1551
|
+
ASSERT_EQ(decoded.Size(), kReducedSize);
|
|
1552
|
+
|
|
1553
|
+
for (uint64_t t = 1; t <= kOriginalSamples * 11; t += 1 + t / 100) {
|
|
1554
|
+
SCOPED_TRACE("t=" + std::to_string(t));
|
|
1555
|
+
// `test` has the more accurate time mapping, but the reduced set should
|
|
1556
|
+
// nicely span and approximate the whole range
|
|
1557
|
+
auto orig_s = test.GetProximalSeqnoBeforeTime(t);
|
|
1558
|
+
auto approx_s = decoded.GetProximalSeqnoBeforeTime(t);
|
|
1559
|
+
// The oldest entry should be preserved exactly
|
|
1560
|
+
ASSERT_EQ(orig_s == kUnknownSeqnoBeforeAll,
|
|
1561
|
+
approx_s == kUnknownSeqnoBeforeAll);
|
|
1562
|
+
// The newest entry should be preserved exactly
|
|
1563
|
+
ASSERT_EQ(orig_s == kOriginalSamples, approx_s == kOriginalSamples);
|
|
1564
|
+
|
|
1565
|
+
// Approximate seqno before time should err toward older seqno to avoid
|
|
1566
|
+
// classifying data as old too early, but should be within a reasonable
|
|
1567
|
+
// bound.
|
|
1568
|
+
constexpr uint32_t kSeqnoFuzz = kOriginalSamples * 3 / 2 / kReducedSize;
|
|
1569
|
+
EXPECT_GE(approx_s + kSeqnoFuzz, orig_s);
|
|
1570
|
+
EXPECT_GE(orig_s, approx_s);
|
|
1321
1571
|
}
|
|
1322
1572
|
}
|
|
1323
1573
|
|
|
1324
|
-
TEST_F(SeqnoTimeTest,
|
|
1325
|
-
SeqnoToTimeMapping test
|
|
1574
|
+
TEST_F(SeqnoTimeTest, EncodeDecodeMinimizeTimeGaps) {
|
|
1575
|
+
SeqnoToTimeMapping test;
|
|
1576
|
+
test.SetCapacity(10);
|
|
1326
1577
|
|
|
1327
1578
|
test.Append(1, 10);
|
|
1328
1579
|
test.Append(5, 17);
|
|
@@ -1330,45 +1581,66 @@ TEST_F(SeqnoTimeTest, EncodeDecodePerferNewTime) {
|
|
|
1330
1581
|
test.Append(8, 30);
|
|
1331
1582
|
|
|
1332
1583
|
std::string output;
|
|
1333
|
-
test.
|
|
1584
|
+
SeqnoToTimeMapping(test).SetCapacity(3).EncodeTo(output);
|
|
1334
1585
|
|
|
1335
1586
|
SeqnoToTimeMapping decoded;
|
|
1336
|
-
ASSERT_OK(decoded.
|
|
1337
|
-
|
|
1587
|
+
ASSERT_OK(decoded.DecodeFrom(output));
|
|
1588
|
+
ASSERT_TRUE(decoded.TEST_IsEnforced());
|
|
1338
1589
|
|
|
1339
1590
|
ASSERT_EQ(decoded.Size(), 3);
|
|
1340
1591
|
|
|
1341
1592
|
auto seqs = decoded.TEST_GetInternalMapping();
|
|
1342
1593
|
std::deque<SeqnoToTimeMapping::SeqnoTimePair> expected;
|
|
1343
1594
|
expected.emplace_back(1, 10);
|
|
1344
|
-
expected.emplace_back(
|
|
1595
|
+
expected.emplace_back(5, 17);
|
|
1345
1596
|
expected.emplace_back(8, 30);
|
|
1346
1597
|
ASSERT_EQ(expected, seqs);
|
|
1347
1598
|
|
|
1348
1599
|
// Add a few large time number
|
|
1349
1600
|
test.Append(10, 100);
|
|
1350
1601
|
test.Append(13, 200);
|
|
1351
|
-
test.Append(
|
|
1602
|
+
test.Append(40, 250);
|
|
1603
|
+
test.Append(70, 300);
|
|
1352
1604
|
|
|
1353
1605
|
output.clear();
|
|
1354
|
-
test.
|
|
1606
|
+
SeqnoToTimeMapping(test).SetCapacity(4).EncodeTo(output);
|
|
1355
1607
|
decoded.Clear();
|
|
1356
|
-
ASSERT_OK(decoded.
|
|
1357
|
-
|
|
1608
|
+
ASSERT_OK(decoded.DecodeFrom(output));
|
|
1609
|
+
ASSERT_TRUE(decoded.TEST_IsEnforced());
|
|
1358
1610
|
ASSERT_EQ(decoded.Size(), 4);
|
|
1359
1611
|
|
|
1360
1612
|
expected.clear();
|
|
1613
|
+
// Except for beginning and end, entries are removed that minimize the
|
|
1614
|
+
// remaining time gaps, regardless of seqno gaps.
|
|
1361
1615
|
expected.emplace_back(1, 10);
|
|
1362
|
-
// entry #6, #8 are skipped as they are too close to #1.
|
|
1363
|
-
// entry #100 is also within skip range, but if it's skipped, there not enough
|
|
1364
|
-
// number to fill 4 entries, so select it.
|
|
1365
1616
|
expected.emplace_back(10, 100);
|
|
1366
1617
|
expected.emplace_back(13, 200);
|
|
1367
|
-
expected.emplace_back(
|
|
1618
|
+
expected.emplace_back(70, 300);
|
|
1368
1619
|
seqs = decoded.TEST_GetInternalMapping();
|
|
1369
1620
|
ASSERT_EQ(expected, seqs);
|
|
1370
1621
|
}
|
|
1371
1622
|
|
|
1623
|
+
TEST(PackValueAndSeqnoTest, Basic) {
|
|
1624
|
+
std::string packed_value_buf;
|
|
1625
|
+
Slice packed_value_slice =
|
|
1626
|
+
PackValueAndWriteTime("foo", 30u, &packed_value_buf);
|
|
1627
|
+
auto [unpacked_value, write_time] =
|
|
1628
|
+
ParsePackedValueWithWriteTime(packed_value_slice);
|
|
1629
|
+
ASSERT_EQ(unpacked_value, "foo");
|
|
1630
|
+
ASSERT_EQ(write_time, 30u);
|
|
1631
|
+
ASSERT_EQ(ParsePackedValueForValue(packed_value_slice), "foo");
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
TEST(PackValueAndWriteTimeTest, Basic) {
|
|
1635
|
+
std::string packed_value_buf;
|
|
1636
|
+
Slice packed_value_slice = PackValueAndSeqno("foo", 30u, &packed_value_buf);
|
|
1637
|
+
auto [unpacked_value, write_time] =
|
|
1638
|
+
ParsePackedValueWithSeqno(packed_value_slice);
|
|
1639
|
+
ASSERT_EQ(unpacked_value, "foo");
|
|
1640
|
+
ASSERT_EQ(write_time, 30u);
|
|
1641
|
+
ASSERT_EQ(ParsePackedValueForValue(packed_value_slice), "foo");
|
|
1642
|
+
}
|
|
1643
|
+
|
|
1372
1644
|
} // namespace ROCKSDB_NAMESPACE
|
|
1373
1645
|
|
|
1374
1646
|
|