@nxtedition/rocksdb 8.2.8 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +0 -21
- package/deps/rocksdb/rocksdb/CMakeLists.txt +20 -10
- package/deps/rocksdb/rocksdb/Makefile +37 -25
- package/deps/rocksdb/rocksdb/README.md +29 -0
- package/deps/rocksdb/rocksdb/TARGETS +25 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +229 -74
- package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -95
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2683 -496
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +580 -159
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +145 -42
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +20 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +391 -17
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +309 -212
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -32
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +439 -12
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +44 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +11 -1
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -3
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
- package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +28 -12
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +20 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +35 -10
- package/deps/rocksdb/rocksdb/db/c.cc +233 -6
- package/deps/rocksdb/rocksdb/db/c_test.c +140 -6
- package/deps/rocksdb/rocksdb/db/column_family.cc +110 -51
- package/deps/rocksdb/rocksdb/db/column_family.h +34 -2
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +314 -7
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +106 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +47 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +10 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +148 -60
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +22 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +33 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +90 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +170 -95
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +32 -58
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +46 -10
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +850 -44
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +275 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +52 -19
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +733 -320
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +155 -66
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +516 -155
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +8 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +17 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +100 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +95 -50
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +136 -79
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +6 -95
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +31 -22
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +85 -57
- package/deps/rocksdb/rocksdb/db/db_iter.h +11 -2
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +193 -7
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +294 -26
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +364 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +13 -3
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +282 -167
- package/deps/rocksdb/rocksdb/db/db_test.cc +180 -49
- package/deps/rocksdb/rocksdb/db/db_test2.cc +84 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +25 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.h +45 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +14 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +245 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +480 -1
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +67 -34
- package/deps/rocksdb/rocksdb/db/error_handler.h +13 -9
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +144 -4
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +105 -17
- package/deps/rocksdb/rocksdb/db/flush_job.h +27 -4
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -12
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
- package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +70 -83
- package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +45 -11
- package/deps/rocksdb/rocksdb/db/memtable_list.h +43 -2
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +91 -5
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
- package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
- package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +5 -2
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +25 -7
- package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +459 -74
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
- package/deps/rocksdb/rocksdb/db/table_cache.cc +76 -54
- package/deps/rocksdb/rocksdb/db/table_cache.h +18 -12
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
- package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
- package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
- package/deps/rocksdb/rocksdb/db/version_edit.h +58 -10
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
- package/deps/rocksdb/rocksdb/db/version_set.cc +207 -110
- package/deps/rocksdb/rocksdb/db/version_set.h +36 -15
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +47 -26
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +55 -20
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +37 -13
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +110 -58
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +68 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +429 -237
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +13 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +21 -14
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +29 -38
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +302 -101
- package/deps/rocksdb/rocksdb/env/env.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +79 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +100 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +64 -18
- package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
- package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1225 -97
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +72 -33
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +40 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +163 -91
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +112 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +108 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +42 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +92 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +34 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +91 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +130 -22
- package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +92 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +37 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +20 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +42 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -2
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +4 -3
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +22 -1
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +6 -1
- package/deps/rocksdb/rocksdb/options/db_options.cc +54 -2
- package/deps/rocksdb/rocksdb/options/db_options.h +4 -0
- package/deps/rocksdb/rocksdb/options/options.cc +15 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +18 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +14 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -1
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/README +10 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +32 -12
- package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
- package/deps/rocksdb/rocksdb/src.mk +10 -1
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
- package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +116 -43
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +9 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +321 -49
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +98 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +233 -98
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +58 -23
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +52 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -18
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +20 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +232 -71
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +36 -19
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +11 -7
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +14 -13
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +9 -2
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/format.cc +175 -33
- package/deps/rocksdb/rocksdb/table/format.h +63 -10
- package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
- package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +22 -2
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +45 -9
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +24 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
- package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +87 -65
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +221 -33
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -11
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
- package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
- package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
- package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
- package/deps/rocksdb/rocksdb/util/cast_util.h +24 -0
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +55 -8
- package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +119 -35
- package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
- package/deps/rocksdb/rocksdb/util/hash.h +7 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
- package/deps/rocksdb/rocksdb/util/math.h +58 -6
- package/deps/rocksdb/rocksdb/util/math128.h +29 -7
- package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
- package/deps/rocksdb/rocksdb/util/overload.h +23 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
- package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +10 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +385 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +192 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +461 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
- package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +71 -26
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +20 -16
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +7 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +12 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +272 -33
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +195 -23
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +19 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +88 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +43 -17
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +73 -24
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +41 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +15 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +59 -28
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +111 -14
- package/deps/rocksdb/rocksdb.gyp +6 -2
- package/index.js +0 -8
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
|
@@ -11,14 +11,34 @@
|
|
|
11
11
|
|
|
12
12
|
namespace ROCKSDB_NAMESPACE {
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
SeqnoToTimeMapping::pair_const_iterator SeqnoToTimeMapping::FindGreaterTime(
|
|
15
|
+
uint64_t time) const {
|
|
16
|
+
return std::upper_bound(pairs_.cbegin(), pairs_.cend(),
|
|
17
|
+
SeqnoTimePair{0, time}, SeqnoTimePair::TimeLess);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
SeqnoToTimeMapping::pair_const_iterator SeqnoToTimeMapping::FindGreaterEqSeqno(
|
|
21
|
+
SequenceNumber seqno) const {
|
|
22
|
+
return std::lower_bound(pairs_.cbegin(), pairs_.cend(),
|
|
23
|
+
SeqnoTimePair{seqno, 0}, SeqnoTimePair::SeqnoLess);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
SeqnoToTimeMapping::pair_const_iterator SeqnoToTimeMapping::FindGreaterSeqno(
|
|
27
|
+
SequenceNumber seqno) const {
|
|
28
|
+
return std::upper_bound(pairs_.cbegin(), pairs_.cend(),
|
|
29
|
+
SeqnoTimePair{seqno, 0}, SeqnoTimePair::SeqnoLess);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
uint64_t SeqnoToTimeMapping::GetProximalTimeBeforeSeqno(
|
|
33
|
+
SequenceNumber seqno) const {
|
|
16
34
|
assert(is_sorted_);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
35
|
+
// Find the last entry with a seqno strictly less than the given seqno.
|
|
36
|
+
// First, find the first entry >= the given seqno (or end)
|
|
37
|
+
auto it = FindGreaterEqSeqno(seqno);
|
|
38
|
+
if (it == pairs_.cbegin()) {
|
|
39
|
+
return kUnknownTimeBeforeAll;
|
|
21
40
|
}
|
|
41
|
+
// Then return data from previous.
|
|
22
42
|
it--;
|
|
23
43
|
return it->time;
|
|
24
44
|
}
|
|
@@ -28,44 +48,47 @@ void SeqnoToTimeMapping::Add(SequenceNumber seqno, uint64_t time) {
|
|
|
28
48
|
return;
|
|
29
49
|
}
|
|
30
50
|
is_sorted_ = false;
|
|
31
|
-
|
|
51
|
+
pairs_.emplace_back(seqno, time);
|
|
32
52
|
}
|
|
33
53
|
|
|
34
54
|
void SeqnoToTimeMapping::TruncateOldEntries(const uint64_t now) {
|
|
35
55
|
assert(is_sorted_);
|
|
36
56
|
|
|
37
57
|
if (max_time_duration_ == 0) {
|
|
58
|
+
// No cutoff time
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (now < max_time_duration_) {
|
|
63
|
+
// Would under-flow
|
|
38
64
|
return;
|
|
39
65
|
}
|
|
40
66
|
|
|
41
|
-
const uint64_t cut_off_time =
|
|
42
|
-
|
|
43
|
-
assert(cut_off_time <= now); // no overflow
|
|
67
|
+
const uint64_t cut_off_time = now - max_time_duration_;
|
|
68
|
+
assert(cut_off_time <= now); // no under/overflow
|
|
44
69
|
|
|
45
|
-
auto it =
|
|
46
|
-
|
|
47
|
-
[](uint64_t target, const SeqnoTimePair& other) -> bool {
|
|
48
|
-
return target < other.time;
|
|
49
|
-
});
|
|
50
|
-
if (it == seqno_time_mapping_.begin()) {
|
|
70
|
+
auto it = FindGreaterTime(cut_off_time);
|
|
71
|
+
if (it == pairs_.cbegin()) {
|
|
51
72
|
return;
|
|
52
73
|
}
|
|
53
|
-
|
|
54
|
-
|
|
74
|
+
// Move back one, to the entry that would be used to return a good seqno from
|
|
75
|
+
// GetProximalSeqnoBeforeTime(cut_off_time)
|
|
76
|
+
--it;
|
|
77
|
+
// Remove everything strictly before that entry
|
|
78
|
+
pairs_.erase(pairs_.cbegin(), std::move(it));
|
|
55
79
|
}
|
|
56
80
|
|
|
57
|
-
SequenceNumber SeqnoToTimeMapping::
|
|
81
|
+
SequenceNumber SeqnoToTimeMapping::GetProximalSeqnoBeforeTime(uint64_t time) {
|
|
58
82
|
assert(is_sorted_);
|
|
59
83
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (it == seqno_time_mapping_.begin()) {
|
|
66
|
-
return 0;
|
|
84
|
+
// Find the last entry with a time <= the given time.
|
|
85
|
+
// First, find the first entry > the given time (or end).
|
|
86
|
+
auto it = FindGreaterTime(time);
|
|
87
|
+
if (it == pairs_.cbegin()) {
|
|
88
|
+
return kUnknownSeqnoBeforeAll;
|
|
67
89
|
}
|
|
68
|
-
|
|
90
|
+
// Then return data from previous.
|
|
91
|
+
--it;
|
|
69
92
|
return it->seqno;
|
|
70
93
|
}
|
|
71
94
|
|
|
@@ -84,15 +107,13 @@ void SeqnoToTimeMapping::Encode(std::string& dest, const SequenceNumber start,
|
|
|
84
107
|
return;
|
|
85
108
|
}
|
|
86
109
|
|
|
87
|
-
auto start_it =
|
|
88
|
-
|
|
89
|
-
if (start_it != seqno_time_mapping_.begin()) {
|
|
110
|
+
auto start_it = FindGreaterSeqno(start);
|
|
111
|
+
if (start_it != pairs_.begin()) {
|
|
90
112
|
start_it--;
|
|
91
113
|
}
|
|
92
114
|
|
|
93
|
-
auto end_it =
|
|
94
|
-
|
|
95
|
-
if (end_it == seqno_time_mapping_.begin()) {
|
|
115
|
+
auto end_it = FindGreaterSeqno(end);
|
|
116
|
+
if (end_it == pairs_.begin()) {
|
|
96
117
|
return;
|
|
97
118
|
}
|
|
98
119
|
if (start_it >= end_it) {
|
|
@@ -108,7 +129,7 @@ void SeqnoToTimeMapping::Encode(std::string& dest, const SequenceNumber start,
|
|
|
108
129
|
}
|
|
109
130
|
}
|
|
110
131
|
// to include the first element
|
|
111
|
-
if (start_it !=
|
|
132
|
+
if (start_it != pairs_.begin()) {
|
|
112
133
|
start_it--;
|
|
113
134
|
}
|
|
114
135
|
|
|
@@ -166,14 +187,14 @@ void SeqnoToTimeMapping::Encode(std::string& dest, const SequenceNumber start,
|
|
|
166
187
|
SeqnoTimePair base;
|
|
167
188
|
for (auto it = start_it; it < end_it; it++) {
|
|
168
189
|
assert(base < *it);
|
|
169
|
-
SeqnoTimePair val =
|
|
190
|
+
SeqnoTimePair val = it->ComputeDelta(base);
|
|
170
191
|
base = *it;
|
|
171
192
|
val.Encode(dest);
|
|
172
193
|
}
|
|
173
194
|
}
|
|
174
195
|
|
|
175
|
-
Status SeqnoToTimeMapping::Add(const std::string&
|
|
176
|
-
Slice input(
|
|
196
|
+
Status SeqnoToTimeMapping::Add(const std::string& pairs_str) {
|
|
197
|
+
Slice input(pairs_str);
|
|
177
198
|
if (input.empty()) {
|
|
178
199
|
return Status::OK();
|
|
179
200
|
}
|
|
@@ -189,8 +210,8 @@ Status SeqnoToTimeMapping::Add(const std::string& seqno_time_mapping_str) {
|
|
|
189
210
|
if (!s.ok()) {
|
|
190
211
|
return s;
|
|
191
212
|
}
|
|
192
|
-
val.
|
|
193
|
-
|
|
213
|
+
val.ApplyDelta(base);
|
|
214
|
+
pairs_.emplace_back(val);
|
|
194
215
|
base = val;
|
|
195
216
|
}
|
|
196
217
|
return Status::OK();
|
|
@@ -222,33 +243,58 @@ bool SeqnoToTimeMapping::Append(SequenceNumber seqno, uint64_t time) {
|
|
|
222
243
|
return false;
|
|
223
244
|
}
|
|
224
245
|
if (seqno == Last().seqno) {
|
|
225
|
-
Last()
|
|
226
|
-
|
|
246
|
+
// Updating Last() would hurt GetProximalSeqnoBeforeTime() queries, so
|
|
247
|
+
// NOT doing it (for now)
|
|
248
|
+
return false;
|
|
227
249
|
}
|
|
228
250
|
if (time == Last().time) {
|
|
229
|
-
//
|
|
230
|
-
|
|
251
|
+
// Updating Last() here helps GetProximalSeqnoBeforeTime() queries, so
|
|
252
|
+
// doing it (for now)
|
|
253
|
+
Last().seqno = seqno;
|
|
254
|
+
return true;
|
|
231
255
|
}
|
|
232
256
|
}
|
|
233
257
|
|
|
234
|
-
|
|
258
|
+
pairs_.emplace_back(seqno, time);
|
|
235
259
|
|
|
236
|
-
if (
|
|
237
|
-
|
|
260
|
+
if (pairs_.size() > max_capacity_) {
|
|
261
|
+
// FIXME: be smarter about how we erase to avoid data falling off the
|
|
262
|
+
// front prematurely.
|
|
263
|
+
pairs_.pop_front();
|
|
238
264
|
}
|
|
239
265
|
return true;
|
|
240
266
|
}
|
|
241
267
|
|
|
268
|
+
bool SeqnoToTimeMapping::PrePopulate(SequenceNumber from_seqno,
|
|
269
|
+
SequenceNumber to_seqno,
|
|
270
|
+
uint64_t from_time, uint64_t to_time) {
|
|
271
|
+
assert(Empty());
|
|
272
|
+
assert(from_seqno > 0);
|
|
273
|
+
assert(to_seqno > from_seqno);
|
|
274
|
+
assert(from_time > kUnknownTimeBeforeAll);
|
|
275
|
+
assert(to_time >= from_time);
|
|
276
|
+
|
|
277
|
+
// TODO: smartly limit this to max_capacity_ representative samples
|
|
278
|
+
for (auto i = from_seqno; i <= to_seqno; i++) {
|
|
279
|
+
uint64_t t = from_time + (to_time - from_time) * (i - from_seqno) /
|
|
280
|
+
(to_seqno - from_seqno);
|
|
281
|
+
pairs_.emplace_back(i, t);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
return /*success*/ true;
|
|
285
|
+
}
|
|
286
|
+
|
|
242
287
|
bool SeqnoToTimeMapping::Resize(uint64_t min_time_duration,
|
|
243
288
|
uint64_t max_time_duration) {
|
|
244
289
|
uint64_t new_max_capacity =
|
|
245
290
|
CalculateMaxCapacity(min_time_duration, max_time_duration);
|
|
246
291
|
if (new_max_capacity == max_capacity_) {
|
|
247
292
|
return false;
|
|
248
|
-
} else if (new_max_capacity <
|
|
249
|
-
uint64_t delta =
|
|
250
|
-
|
|
251
|
-
|
|
293
|
+
} else if (new_max_capacity < pairs_.size()) {
|
|
294
|
+
uint64_t delta = pairs_.size() - new_max_capacity;
|
|
295
|
+
// FIXME: be smarter about how we erase to avoid data falling off the
|
|
296
|
+
// front prematurely.
|
|
297
|
+
pairs_.erase(pairs_.begin(), pairs_.begin() + delta);
|
|
252
298
|
}
|
|
253
299
|
max_capacity_ = new_max_capacity;
|
|
254
300
|
return true;
|
|
@@ -258,16 +304,16 @@ Status SeqnoToTimeMapping::Sort() {
|
|
|
258
304
|
if (is_sorted_) {
|
|
259
305
|
return Status::OK();
|
|
260
306
|
}
|
|
261
|
-
if (
|
|
307
|
+
if (pairs_.empty()) {
|
|
262
308
|
is_sorted_ = true;
|
|
263
309
|
return Status::OK();
|
|
264
310
|
}
|
|
265
311
|
|
|
266
|
-
std::deque<SeqnoTimePair> copy = std::move(
|
|
312
|
+
std::deque<SeqnoTimePair> copy = std::move(pairs_);
|
|
267
313
|
|
|
268
314
|
std::sort(copy.begin(), copy.end());
|
|
269
315
|
|
|
270
|
-
|
|
316
|
+
pairs_.clear();
|
|
271
317
|
|
|
272
318
|
// remove seqno = 0, which may have special meaning, like zeroed out data
|
|
273
319
|
while (copy.front().seqno == 0) {
|
|
@@ -285,12 +331,12 @@ Status SeqnoToTimeMapping::Sort() {
|
|
|
285
331
|
assert(it.seqno > prev.seqno);
|
|
286
332
|
// If a larger sequence number has an older time which is not useful, skip
|
|
287
333
|
if (it.time > prev.time) {
|
|
288
|
-
|
|
334
|
+
pairs_.push_back(prev);
|
|
289
335
|
prev = it;
|
|
290
336
|
}
|
|
291
337
|
}
|
|
292
338
|
}
|
|
293
|
-
|
|
339
|
+
pairs_.emplace_back(prev);
|
|
294
340
|
|
|
295
341
|
is_sorted_ = true;
|
|
296
342
|
return Status::OK();
|
|
@@ -298,7 +344,7 @@ Status SeqnoToTimeMapping::Sort() {
|
|
|
298
344
|
|
|
299
345
|
std::string SeqnoToTimeMapping::ToHumanString() const {
|
|
300
346
|
std::string ret;
|
|
301
|
-
for (const auto& seq_time :
|
|
347
|
+
for (const auto& seq_time : pairs_) {
|
|
302
348
|
AppendNumberTo(&ret, seq_time.seqno);
|
|
303
349
|
ret.append("->");
|
|
304
350
|
AppendNumberTo(&ret, seq_time.time);
|
|
@@ -310,13 +356,11 @@ std::string SeqnoToTimeMapping::ToHumanString() const {
|
|
|
310
356
|
SeqnoToTimeMapping SeqnoToTimeMapping::Copy(
|
|
311
357
|
SequenceNumber smallest_seqno) const {
|
|
312
358
|
SeqnoToTimeMapping ret;
|
|
313
|
-
auto it =
|
|
314
|
-
|
|
315
|
-
if (it != seqno_time_mapping_.begin()) {
|
|
359
|
+
auto it = FindGreaterSeqno(smallest_seqno);
|
|
360
|
+
if (it != pairs_.begin()) {
|
|
316
361
|
it--;
|
|
317
362
|
}
|
|
318
|
-
std::copy(it,
|
|
319
|
-
std::back_inserter(ret.seqno_time_mapping_));
|
|
363
|
+
std::copy(it, pairs_.end(), std::back_inserter(ret.pairs_));
|
|
320
364
|
return ret;
|
|
321
365
|
}
|
|
322
366
|
|
|
@@ -330,12 +374,4 @@ uint64_t SeqnoToTimeMapping::CalculateMaxCapacity(uint64_t min_time_duration,
|
|
|
330
374
|
max_time_duration * kMaxSeqnoTimePairsPerCF / min_time_duration);
|
|
331
375
|
}
|
|
332
376
|
|
|
333
|
-
SeqnoToTimeMapping::SeqnoTimePair SeqnoToTimeMapping::SeqnoTimePair::operator-(
|
|
334
|
-
const SeqnoTimePair& other) const {
|
|
335
|
-
SeqnoTimePair res;
|
|
336
|
-
res.seqno = seqno - other.seqno;
|
|
337
|
-
res.time = time - other.time;
|
|
338
|
-
return res;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
377
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -18,20 +18,32 @@
|
|
|
18
18
|
|
|
19
19
|
namespace ROCKSDB_NAMESPACE {
|
|
20
20
|
|
|
21
|
-
constexpr uint64_t
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
// would be 300.
|
|
30
|
-
// As it's a sorted list, the new entry is inserted from the back. The old data
|
|
31
|
-
// will be popped from the front if they're no longer used.
|
|
21
|
+
constexpr uint64_t kUnknownTimeBeforeAll = 0;
|
|
22
|
+
constexpr SequenceNumber kUnknownSeqnoBeforeAll = 0;
|
|
23
|
+
|
|
24
|
+
// SeqnoToTimeMapping stores a sampled mapping from sequence numbers to
|
|
25
|
+
// unix times (seconds since epoch). This information provides rough bounds
|
|
26
|
+
// between sequence numbers and their write times, but is primarily designed
|
|
27
|
+
// for getting a best lower bound on the sequence number of data written no
|
|
28
|
+
// later than a specified time.
|
|
32
29
|
//
|
|
33
|
-
//
|
|
34
|
-
//
|
|
30
|
+
// For ease of sampling, it is assumed that the recorded time in each pair
|
|
31
|
+
// comes at or after the sequence number and before the next sequence number,
|
|
32
|
+
// so this example:
|
|
33
|
+
//
|
|
34
|
+
// Seqno: 10, 11, ... 20, 21, ... 30, 31, ...
|
|
35
|
+
// Time: ... 500 ... 600 ... 700 ...
|
|
36
|
+
//
|
|
37
|
+
// would be represented as
|
|
38
|
+
// 10 -> 500
|
|
39
|
+
// 20 -> 600
|
|
40
|
+
// 30 -> 700
|
|
41
|
+
//
|
|
42
|
+
// In typical operation, the list is sorted, both among seqnos and among times,
|
|
43
|
+
// with a bounded number of entries, but some public working states violate
|
|
44
|
+
// these constraints.
|
|
45
|
+
//
|
|
46
|
+
// NOT thread safe - requires external synchronization.
|
|
35
47
|
class SeqnoToTimeMapping {
|
|
36
48
|
public:
|
|
37
49
|
// Maximum number of entries can be encoded into SST. The data is delta encode
|
|
@@ -63,28 +75,33 @@ class SeqnoToTimeMapping {
|
|
|
63
75
|
// Decode the value from input Slice and remove it from the input
|
|
64
76
|
Status Decode(Slice& input);
|
|
65
77
|
|
|
66
|
-
//
|
|
67
|
-
SeqnoTimePair
|
|
68
|
-
|
|
69
|
-
// Add 2 values together
|
|
70
|
-
void Add(const SeqnoTimePair& obj) {
|
|
71
|
-
seqno += obj.seqno;
|
|
72
|
-
time += obj.time;
|
|
78
|
+
// For delta encoding
|
|
79
|
+
SeqnoTimePair ComputeDelta(const SeqnoTimePair& base) const {
|
|
80
|
+
return {seqno - base.seqno, time - base.time};
|
|
73
81
|
}
|
|
74
82
|
|
|
75
|
-
//
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
// For delta decoding
|
|
84
|
+
void ApplyDelta(const SeqnoTimePair& delta_or_base) {
|
|
85
|
+
seqno += delta_or_base.seqno;
|
|
86
|
+
time += delta_or_base.time;
|
|
87
|
+
}
|
|
78
88
|
|
|
79
|
-
//
|
|
89
|
+
// Ordering used for Sort()
|
|
80
90
|
bool operator<(const SeqnoTimePair& other) const {
|
|
81
91
|
return std::tie(seqno, time) < std::tie(other.seqno, other.time);
|
|
82
92
|
}
|
|
83
93
|
|
|
84
|
-
// Check if 2 SeqnoTimePair is the same
|
|
85
94
|
bool operator==(const SeqnoTimePair& other) const {
|
|
86
95
|
return std::tie(seqno, time) == std::tie(other.seqno, other.time);
|
|
87
96
|
}
|
|
97
|
+
|
|
98
|
+
static bool SeqnoLess(const SeqnoTimePair& a, const SeqnoTimePair& b) {
|
|
99
|
+
return a.seqno < b.seqno;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
static bool TimeLess(const SeqnoTimePair& a, const SeqnoTimePair& b) {
|
|
103
|
+
return a.time < b.time;
|
|
104
|
+
}
|
|
88
105
|
};
|
|
89
106
|
|
|
90
107
|
// constractor of SeqnoToTimeMapping
|
|
@@ -99,20 +116,40 @@ class SeqnoToTimeMapping {
|
|
|
99
116
|
uint64_t max_capacity = 0)
|
|
100
117
|
: max_time_duration_(max_time_duration), max_capacity_(max_capacity) {}
|
|
101
118
|
|
|
119
|
+
// Both seqno range and time range are inclusive. ... TODO
|
|
120
|
+
//
|
|
121
|
+
bool PrePopulate(SequenceNumber from_seqno, SequenceNumber to_seqno,
|
|
122
|
+
uint64_t from_time, uint64_t to_time);
|
|
123
|
+
|
|
102
124
|
// Append a new entry to the list. The new entry should be newer than the
|
|
103
125
|
// existing ones. It maintains the internal sorted status.
|
|
104
126
|
bool Append(SequenceNumber seqno, uint64_t time);
|
|
105
127
|
|
|
106
|
-
// Given a sequence number,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
//
|
|
128
|
+
// Given a sequence number, return the best (largest / newest) known time
|
|
129
|
+
// that is no later than the write time of that given sequence number.
|
|
130
|
+
// If no such specific time is known, returns kUnknownTimeBeforeAll.
|
|
131
|
+
// Using the example in the class comment above,
|
|
132
|
+
// GetProximalTimeBeforeSeqno(10) -> kUnknownTimeBeforeAll
|
|
133
|
+
// GetProximalTimeBeforeSeqno(11) -> 500
|
|
134
|
+
// GetProximalTimeBeforeSeqno(20) -> 500
|
|
135
|
+
// GetProximalTimeBeforeSeqno(21) -> 600
|
|
136
|
+
uint64_t GetProximalTimeBeforeSeqno(SequenceNumber seqno) const;
|
|
137
|
+
|
|
138
|
+
// Remove any entries not needed for GetProximalSeqnoBeforeTime queries of
|
|
139
|
+
// times older than `now - max_time_duration_`
|
|
110
140
|
void TruncateOldEntries(uint64_t now);
|
|
111
141
|
|
|
112
|
-
// Given a time, return
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
//
|
|
142
|
+
// Given a time, return the best (largest) sequence number whose write time
|
|
143
|
+
// is no later than that given time. If no such specific sequence number is
|
|
144
|
+
// known, returns kUnknownSeqnoBeforeAll. Using the example in the class
|
|
145
|
+
// comment above,
|
|
146
|
+
// GetProximalSeqnoBeforeTime(499) -> kUnknownSeqnoBeforeAll
|
|
147
|
+
// GetProximalSeqnoBeforeTime(500) -> 10
|
|
148
|
+
// GetProximalSeqnoBeforeTime(599) -> 10
|
|
149
|
+
// GetProximalSeqnoBeforeTime(600) -> 20
|
|
150
|
+
SequenceNumber GetProximalSeqnoBeforeTime(uint64_t time);
|
|
151
|
+
|
|
152
|
+
// Encode to a binary string. start and end seqno are both inclusive.
|
|
116
153
|
void Encode(std::string& des, SequenceNumber start, SequenceNumber end,
|
|
117
154
|
uint64_t now,
|
|
118
155
|
uint64_t output_size = kMaxSeqnoTimePairsPerSST) const;
|
|
@@ -122,10 +159,10 @@ class SeqnoToTimeMapping {
|
|
|
122
159
|
void Add(SequenceNumber seqno, uint64_t time);
|
|
123
160
|
|
|
124
161
|
// Decode and add the entries to the current obj. The list will be unsorted
|
|
125
|
-
Status Add(const std::string&
|
|
162
|
+
Status Add(const std::string& pairs_str);
|
|
126
163
|
|
|
127
164
|
// Return the number of entries
|
|
128
|
-
size_t Size() const { return
|
|
165
|
+
size_t Size() const { return pairs_.size(); }
|
|
129
166
|
|
|
130
167
|
// Reduce the size of internal list
|
|
131
168
|
bool Resize(uint64_t min_time_duration, uint64_t max_time_duration);
|
|
@@ -145,10 +182,10 @@ class SeqnoToTimeMapping {
|
|
|
145
182
|
SeqnoToTimeMapping Copy(SequenceNumber smallest_seqno) const;
|
|
146
183
|
|
|
147
184
|
// If the internal list is empty
|
|
148
|
-
bool Empty() const { return
|
|
185
|
+
bool Empty() const { return pairs_.empty(); }
|
|
149
186
|
|
|
150
187
|
// clear all entries
|
|
151
|
-
void Clear() {
|
|
188
|
+
void Clear() { pairs_.clear(); }
|
|
152
189
|
|
|
153
190
|
// return the string for user message
|
|
154
191
|
// Note: Not efficient, okay for print
|
|
@@ -156,7 +193,7 @@ class SeqnoToTimeMapping {
|
|
|
156
193
|
|
|
157
194
|
#ifndef NDEBUG
|
|
158
195
|
const std::deque<SeqnoTimePair>& TEST_GetInternalMapping() const {
|
|
159
|
-
return
|
|
196
|
+
return pairs_;
|
|
160
197
|
}
|
|
161
198
|
#endif
|
|
162
199
|
|
|
@@ -167,7 +204,7 @@ class SeqnoToTimeMapping {
|
|
|
167
204
|
uint64_t max_time_duration_;
|
|
168
205
|
uint64_t max_capacity_;
|
|
169
206
|
|
|
170
|
-
std::deque<SeqnoTimePair>
|
|
207
|
+
std::deque<SeqnoTimePair> pairs_;
|
|
171
208
|
|
|
172
209
|
bool is_sorted_ = true;
|
|
173
210
|
|
|
@@ -176,14 +213,14 @@ class SeqnoToTimeMapping {
|
|
|
176
213
|
|
|
177
214
|
SeqnoTimePair& Last() {
|
|
178
215
|
assert(!Empty());
|
|
179
|
-
return
|
|
216
|
+
return pairs_.back();
|
|
180
217
|
}
|
|
181
|
-
};
|
|
182
218
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
219
|
+
using pair_const_iterator =
|
|
220
|
+
std::deque<SeqnoToTimeMapping::SeqnoTimePair>::const_iterator;
|
|
221
|
+
pair_const_iterator FindGreaterTime(uint64_t time) const;
|
|
222
|
+
pair_const_iterator FindGreaterSeqno(SequenceNumber seqno) const;
|
|
223
|
+
pair_const_iterator FindGreaterEqSeqno(SequenceNumber seqno) const;
|
|
224
|
+
};
|
|
188
225
|
|
|
189
226
|
} // namespace ROCKSDB_NAMESPACE
|