@nxtedition/rocksdb 7.1.30 → 7.1.32
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/deps/rocksdb/rocksdb/CMakeLists.txt +2 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +15 -23
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +0 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +4 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -1
- package/deps/rocksdb/rocksdb/crash_test.mk +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +15 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +78 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +32 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +8 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +47 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +105 -166
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +46 -15
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +47 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +17 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +11 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +12 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +337 -103
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +43 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +524 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +164 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +11 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable.cc +16 -23
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +30 -0
- package/deps/rocksdb/rocksdb/db/merge_helper.h +9 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +29 -9
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +10 -7
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +12 -8
- package/deps/rocksdb/rocksdb/db/version_set.cc +11 -6
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +142 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +59 -53
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +3 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +0 -2
- package/deps/rocksdb/rocksdb/env/env.cc +16 -19
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +20 -20
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +62 -60
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_test.cc +179 -176
- package/deps/rocksdb/rocksdb/env/file_system.cc +3 -4
- package/deps/rocksdb/rocksdb/env/io_posix.cc +3 -2
- package/deps/rocksdb/rocksdb/env/io_posix.h +1 -2
- package/deps/rocksdb/rocksdb/env/mock_env.h +1 -0
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +4 -4
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +6 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +2 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +6 -7
- package/deps/rocksdb/rocksdb/file/file_util.cc +1 -1
- package/deps/rocksdb/rocksdb/file/filename.cc +16 -17
- package/deps/rocksdb/rocksdb/file/filename.h +4 -5
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +492 -496
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +1 -3
- package/deps/rocksdb/rocksdb/file/read_write_util.cc +1 -0
- package/deps/rocksdb/rocksdb/file/read_write_util.h +1 -0
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +6 -8
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/block_cache_trace_writer.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +166 -167
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +12 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +0 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +3 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +3 -7
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +20 -23
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/event_logger.cc +1 -3
- package/deps/rocksdb/rocksdb/logging/event_logger.h +4 -5
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +2 -1
- package/deps/rocksdb/rocksdb/logging/log_buffer.cc +2 -3
- package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -2
- package/deps/rocksdb/rocksdb/logging/logging.h +3 -3
- package/deps/rocksdb/rocksdb/memory/allocator.h +1 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +2 -0
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -0
- package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +17 -20
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +13 -15
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +11 -10
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +3 -3
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +30 -28
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +4 -6
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +73 -70
- package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +1 -1
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +21 -23
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +24 -38
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +10 -17
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +19 -19
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +22 -30
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +4 -6
- package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +4 -12
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -3
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +12 -14
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +2 -3
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -3
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.h +7 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +12 -22
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +7 -10
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/port/lang.h +3 -1
- package/deps/rocksdb/rocksdb/port/likely.h +2 -2
- package/deps/rocksdb/rocksdb/port/mmap.h +2 -2
- package/deps/rocksdb/rocksdb/port/port_dirent.h +2 -2
- package/deps/rocksdb/rocksdb/port/port_posix.cc +32 -27
- package/deps/rocksdb/rocksdb/port/port_posix.h +31 -30
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +1 -1
- package/deps/rocksdb/rocksdb/port/sys_time.h +1 -1
- package/deps/rocksdb/rocksdb/port/win/io_win.h +6 -7
- package/deps/rocksdb/rocksdb/port/win/port_win.h +12 -20
- package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -5
- package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -4
- package/deps/rocksdb/rocksdb/port/win/win_thread.cc +30 -49
- package/deps/rocksdb/rocksdb/port/win/win_thread.h +5 -5
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -62
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +2 -2
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +4 -3
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +28 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -3
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -6
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +5 -6
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +90 -80
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +5 -4
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +63 -69
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +58 -57
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +3 -3
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +35 -30
- package/deps/rocksdb/rocksdb/table/get_context.cc +16 -10
- package/deps/rocksdb/rocksdb/table/iter_heap.h +2 -0
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -3
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +31 -16
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +6 -6
- package/deps/rocksdb/rocksdb/table/multiget_context.h +5 -6
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +7 -10
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +3 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +2 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +4 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +2 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +10 -21
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +14 -12
- package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +2 -5
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -3
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +0 -6
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +0 -33
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -6
- package/deps/rocksdb/rocksdb/table/table_properties.cc +24 -37
- package/deps/rocksdb/rocksdb/table/table_reader.h +3 -2
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +9 -8
- package/deps/rocksdb/rocksdb/table/table_test.cc +77 -82
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +8 -18
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +2 -2
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +13 -18
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +1 -2
- package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -7
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +3 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +1 -1
- package/deps/rocksdb/rocksdb/tools/blob_dump.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -7
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +3 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +296 -314
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +6 -6
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +57 -64
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +6 -5
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +1 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +10 -10
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +6 -3
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +12 -31
- package/deps/rocksdb/rocksdb/util/autovector.h +3 -6
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +12 -12
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +8 -12
- package/deps/rocksdb/rocksdb/util/coding.cc +1 -0
- package/deps/rocksdb/rocksdb/util/coding.h +17 -15
- package/deps/rocksdb/rocksdb/util/coding_test.cc +14 -15
- package/deps/rocksdb/rocksdb/util/comparator.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +6 -3
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +5 -8
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +202 -297
- package/deps/rocksdb/rocksdb/util/crc32c.h +2 -3
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +2 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +39 -54
- package/deps/rocksdb/rocksdb/util/defer.h +2 -1
- package/deps/rocksdb/rocksdb/util/defer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/util/duplicate_detector.h +2 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +24 -29
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +4 -4
- package/deps/rocksdb/rocksdb/util/hash_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/heap.h +5 -4
- package/deps/rocksdb/rocksdb/util/heap_test.cc +15 -25
- package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
- package/deps/rocksdb/rocksdb/util/murmurhash.cc +7 -2
- package/deps/rocksdb/rocksdb/util/murmurhash.h +4 -3
- package/deps/rocksdb/rocksdb/util/mutexlock.h +5 -11
- package/deps/rocksdb/rocksdb/util/random.cc +1 -0
- package/deps/rocksdb/rocksdb/util/random.h +2 -4
- package/deps/rocksdb/rocksdb/util/random_test.cc +2 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +4 -3
- package/deps/rocksdb/rocksdb/util/slice.cc +1 -1
- package/deps/rocksdb/rocksdb/util/slice_test.cc +1 -2
- package/deps/rocksdb/rocksdb/util/status.cc +2 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +2 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +64 -76
- package/deps/rocksdb/rocksdb/util/thread_local.cc +18 -32
- package/deps/rocksdb/rocksdb/util/thread_local.h +2 -3
- package/deps/rocksdb/rocksdb/util/thread_operation.h +34 -43
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +54 -73
- package/deps/rocksdb/rocksdb/util/threadpool_imp.h +18 -18
- package/deps/rocksdb/rocksdb/util/timer.h +4 -9
- package/deps/rocksdb/rocksdb/util/timer_queue.h +1 -0
- package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/xxhash.cc +1 -2
- package/deps/rocksdb/rocksdb/util/xxhash.h +7 -4
- package/deps/rocksdb/rocksdb/util/xxph3.h +3 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +16 -24
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +106 -104
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +11 -15
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +12 -12
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +56 -55
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +91 -74
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +17 -34
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +21 -45
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +74 -97
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +17 -18
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +19 -19
- package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +19 -18
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +7 -10
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +10 -15
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +9 -13
- package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +7 -9
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +4 -5
- package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +2 -4
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +39 -50
- package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators.h +4 -3
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +5 -7
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +5 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +3 -6
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +18 -13
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +1 -3
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +15 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +14 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +4 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +5 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +2 -6
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +80 -79
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +9 -17
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -21,74 +21,76 @@ class SkipListRep : public MemTableRep {
|
|
|
21
21
|
const size_t lookahead_;
|
|
22
22
|
|
|
23
23
|
friend class LookaheadIterator;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
24
|
+
|
|
25
|
+
public:
|
|
26
|
+
explicit SkipListRep(const MemTableRep::KeyComparator& compare,
|
|
27
|
+
Allocator* allocator, const SliceTransform* transform,
|
|
28
|
+
const size_t lookahead)
|
|
29
|
+
: MemTableRep(allocator),
|
|
30
|
+
skip_list_(compare, allocator),
|
|
31
|
+
cmp_(compare),
|
|
32
|
+
transform_(transform),
|
|
33
|
+
lookahead_(lookahead) {}
|
|
34
|
+
|
|
35
|
+
KeyHandle Allocate(const size_t len, char** buf) override {
|
|
36
|
+
*buf = skip_list_.AllocateKey(len);
|
|
37
|
+
return static_cast<KeyHandle>(*buf);
|
|
38
|
+
}
|
|
38
39
|
|
|
39
40
|
// Insert key into the list.
|
|
40
41
|
// REQUIRES: nothing that compares equal to key is currently in the list.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
void Insert(KeyHandle handle) override {
|
|
43
|
+
skip_list_.Insert(static_cast<char*>(handle));
|
|
44
|
+
}
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
bool InsertKey(KeyHandle handle) override {
|
|
47
|
+
return skip_list_.Insert(static_cast<char*>(handle));
|
|
48
|
+
}
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
void InsertWithHint(KeyHandle handle, void** hint) override {
|
|
51
|
+
skip_list_.InsertWithHint(static_cast<char*>(handle), hint);
|
|
52
|
+
}
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
bool InsertKeyWithHint(KeyHandle handle, void** hint) override {
|
|
55
|
+
return skip_list_.InsertWithHint(static_cast<char*>(handle), hint);
|
|
56
|
+
}
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
void InsertWithHintConcurrently(KeyHandle handle, void** hint) override {
|
|
59
|
+
skip_list_.InsertWithHintConcurrently(static_cast<char*>(handle), hint);
|
|
60
|
+
}
|
|
60
61
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
bool InsertKeyWithHintConcurrently(KeyHandle handle, void** hint) override {
|
|
63
|
+
return skip_list_.InsertWithHintConcurrently(static_cast<char*>(handle),
|
|
64
|
+
hint);
|
|
65
|
+
}
|
|
65
66
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
void InsertConcurrently(KeyHandle handle) override {
|
|
68
|
+
skip_list_.InsertConcurrently(static_cast<char*>(handle));
|
|
69
|
+
}
|
|
69
70
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
bool InsertKeyConcurrently(KeyHandle handle) override {
|
|
72
|
+
return skip_list_.InsertConcurrently(static_cast<char*>(handle));
|
|
73
|
+
}
|
|
73
74
|
|
|
74
75
|
// Returns true iff an entry that compares equal to key is in the list.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
76
|
+
bool Contains(const char* key) const override {
|
|
77
|
+
return skip_list_.Contains(key);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
size_t ApproximateMemoryUsage() override {
|
|
81
|
+
// All memory is allocated through allocator; nothing to report here
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
void Get(const LookupKey& k, void* callback_args,
|
|
86
|
+
bool (*callback_func)(void* arg, const char* entry)) override {
|
|
87
|
+
SkipListRep::Iterator iter(&skip_list_);
|
|
88
|
+
Slice dummy_slice;
|
|
89
|
+
for (iter.Seek(dummy_slice, k.memtable_key().data());
|
|
90
|
+
iter.Valid() && callback_func(callback_args, iter.key());
|
|
91
|
+
iter.Next()) {
|
|
92
|
+
}
|
|
93
|
+
}
|
|
92
94
|
|
|
93
95
|
uint64_t ApproximateNumEntries(const Slice& start_ikey,
|
|
94
96
|
const Slice& end_ikey) override {
|
|
@@ -218,7 +220,7 @@ public:
|
|
|
218
220
|
void SeekToLast() override { iter_.SeekToLast(); }
|
|
219
221
|
|
|
220
222
|
protected:
|
|
221
|
-
std::string tmp_;
|
|
223
|
+
std::string tmp_; // For passing to EncodeKey
|
|
222
224
|
};
|
|
223
225
|
|
|
224
226
|
// Iterator over the contents of a skip list which also keeps track of the
|
|
@@ -227,8 +229,8 @@ public:
|
|
|
227
229
|
// the target key hasn't been found.
|
|
228
230
|
class LookaheadIterator : public MemTableRep::Iterator {
|
|
229
231
|
public:
|
|
230
|
-
explicit LookaheadIterator(const SkipListRep& rep)
|
|
231
|
-
rep_(rep), iter_(&rep_.skip_list_), prev_(iter_) {}
|
|
232
|
+
explicit LookaheadIterator(const SkipListRep& rep)
|
|
233
|
+
: rep_(rep), iter_(&rep_.skip_list_), prev_(iter_) {}
|
|
232
234
|
|
|
233
235
|
~LookaheadIterator() override {}
|
|
234
236
|
|
|
@@ -271,9 +273,9 @@ public:
|
|
|
271
273
|
}
|
|
272
274
|
|
|
273
275
|
void Seek(const Slice& internal_key, const char* memtable_key) override {
|
|
274
|
-
const char
|
|
275
|
-
|
|
276
|
-
|
|
276
|
+
const char* encoded_key = (memtable_key != nullptr)
|
|
277
|
+
? memtable_key
|
|
278
|
+
: EncodeKey(&tmp_, internal_key);
|
|
277
279
|
|
|
278
280
|
if (prev_.Valid() && rep_.cmp_(encoded_key, prev_.key()) >= 0) {
|
|
279
281
|
// prev_.key() is smaller or equal to our target key; do a quick
|
|
@@ -313,7 +315,7 @@ public:
|
|
|
313
315
|
}
|
|
314
316
|
|
|
315
317
|
protected:
|
|
316
|
-
std::string tmp_;
|
|
318
|
+
std::string tmp_; // For passing to EncodeKey
|
|
317
319
|
|
|
318
320
|
private:
|
|
319
321
|
const SkipListRep& rep_;
|
|
@@ -323,19 +325,20 @@ public:
|
|
|
323
325
|
|
|
324
326
|
MemTableRep::Iterator* GetIterator(Arena* arena = nullptr) override {
|
|
325
327
|
if (lookahead_ > 0) {
|
|
326
|
-
void
|
|
327
|
-
|
|
328
|
-
|
|
328
|
+
void* mem =
|
|
329
|
+
arena ? arena->AllocateAligned(sizeof(SkipListRep::LookaheadIterator))
|
|
330
|
+
:
|
|
331
|
+
operator new(sizeof(SkipListRep::LookaheadIterator));
|
|
329
332
|
return new (mem) SkipListRep::LookaheadIterator(*this);
|
|
330
333
|
} else {
|
|
331
|
-
void
|
|
332
|
-
|
|
333
|
-
|
|
334
|
+
void* mem = arena ? arena->AllocateAligned(sizeof(SkipListRep::Iterator))
|
|
335
|
+
:
|
|
336
|
+
operator new(sizeof(SkipListRep::Iterator));
|
|
334
337
|
return new (mem) SkipListRep::Iterator(&skip_list_);
|
|
335
338
|
}
|
|
336
339
|
}
|
|
337
340
|
};
|
|
338
|
-
}
|
|
341
|
+
} // namespace
|
|
339
342
|
|
|
340
343
|
static std::unordered_map<std::string, OptionTypeInfo> skiplist_factory_info = {
|
|
341
344
|
#ifndef ROCKSDB_LITE
|
|
@@ -48,13 +48,14 @@ class VectorRep : public MemTableRep {
|
|
|
48
48
|
std::shared_ptr<std::vector<const char*>> bucket_;
|
|
49
49
|
std::vector<const char*>::const_iterator mutable cit_;
|
|
50
50
|
const KeyComparator& compare_;
|
|
51
|
-
std::string tmp_;
|
|
51
|
+
std::string tmp_; // For passing to EncodeKey
|
|
52
52
|
bool mutable sorted_;
|
|
53
53
|
void DoSort() const;
|
|
54
|
+
|
|
54
55
|
public:
|
|
55
56
|
explicit Iterator(class VectorRep* vrep,
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
std::shared_ptr<std::vector<const char*>> bucket,
|
|
58
|
+
const KeyComparator& compare);
|
|
58
59
|
|
|
59
60
|
// Initialize an iterator over the specified collection.
|
|
60
61
|
// The returned iterator is not valid.
|
|
@@ -123,12 +124,10 @@ void VectorRep::MarkReadOnly() {
|
|
|
123
124
|
}
|
|
124
125
|
|
|
125
126
|
size_t VectorRep::ApproximateMemoryUsage() {
|
|
126
|
-
return
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
std::remove_reference<decltype(*bucket_)>::type::value_type
|
|
131
|
-
);
|
|
127
|
+
return sizeof(bucket_) + sizeof(*bucket_) +
|
|
128
|
+
bucket_->size() *
|
|
129
|
+
sizeof(
|
|
130
|
+
std::remove_reference<decltype(*bucket_)>::type::value_type);
|
|
132
131
|
}
|
|
133
132
|
|
|
134
133
|
VectorRep::VectorRep(const KeyComparator& compare, Allocator* allocator,
|
|
@@ -142,13 +141,13 @@ VectorRep::VectorRep(const KeyComparator& compare, Allocator* allocator,
|
|
|
142
141
|
}
|
|
143
142
|
|
|
144
143
|
VectorRep::Iterator::Iterator(class VectorRep* vrep,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
: vrep_(vrep),
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
144
|
+
std::shared_ptr<std::vector<const char*>> bucket,
|
|
145
|
+
const KeyComparator& compare)
|
|
146
|
+
: vrep_(vrep),
|
|
147
|
+
bucket_(bucket),
|
|
148
|
+
cit_(bucket_->end()),
|
|
149
|
+
compare_(compare),
|
|
150
|
+
sorted_(false) {}
|
|
152
151
|
|
|
153
152
|
void VectorRep::Iterator::DoSort() const {
|
|
154
153
|
// vrep is non-null means that we are working on an immutable memtable
|
|
@@ -216,12 +215,11 @@ void VectorRep::Iterator::Seek(const Slice& user_key,
|
|
|
216
215
|
// Do binary search to find first value not less than the target
|
|
217
216
|
const char* encoded_key =
|
|
218
217
|
(memtable_key != nullptr) ? memtable_key : EncodeKey(&tmp_, user_key);
|
|
219
|
-
cit_ = std::equal_range(bucket_->begin(),
|
|
220
|
-
|
|
221
|
-
encoded_key,
|
|
222
|
-
[this] (const char* a, const char* b) {
|
|
218
|
+
cit_ = std::equal_range(bucket_->begin(), bucket_->end(), encoded_key,
|
|
219
|
+
[this](const char* a, const char* b) {
|
|
223
220
|
return compare_(a, b) < 0;
|
|
224
|
-
})
|
|
221
|
+
})
|
|
222
|
+
.first;
|
|
225
223
|
}
|
|
226
224
|
|
|
227
225
|
// Advance to the first entry with a key <= target
|
|
@@ -282,7 +280,7 @@ MemTableRep::Iterator* VectorRep::GetIterator(Arena* arena) {
|
|
|
282
280
|
}
|
|
283
281
|
} else {
|
|
284
282
|
std::shared_ptr<Bucket> tmp;
|
|
285
|
-
tmp.reset(new Bucket(*bucket_));
|
|
283
|
+
tmp.reset(new Bucket(*bucket_)); // make a copy
|
|
286
284
|
if (arena == nullptr) {
|
|
287
285
|
return new Iterator(nullptr, tmp, compare_);
|
|
288
286
|
} else {
|
|
@@ -290,7 +288,7 @@ MemTableRep::Iterator* VectorRep::GetIterator(Arena* arena) {
|
|
|
290
288
|
}
|
|
291
289
|
}
|
|
292
290
|
}
|
|
293
|
-
}
|
|
291
|
+
} // namespace
|
|
294
292
|
|
|
295
293
|
static std::unordered_map<std::string, OptionTypeInfo> vector_rep_table_info = {
|
|
296
294
|
{"count",
|
|
@@ -52,11 +52,10 @@ size_t HistogramBucketMapper::IndexForValue(const uint64_t value) const {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
namespace {
|
|
55
|
-
|
|
55
|
+
const HistogramBucketMapper bucketMapper;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
HistogramStat::HistogramStat()
|
|
59
|
-
: num_buckets_(bucketMapper.BucketCount()) {
|
|
58
|
+
HistogramStat::HistogramStat() : num_buckets_(bucketMapper.BucketCount()) {
|
|
60
59
|
assert(num_buckets_ == sizeof(buckets_) / sizeof(*buckets_));
|
|
61
60
|
Clear();
|
|
62
61
|
}
|
|
@@ -109,12 +108,14 @@ void HistogramStat::Merge(const HistogramStat& other) {
|
|
|
109
108
|
uint64_t old_min = min();
|
|
110
109
|
uint64_t other_min = other.min();
|
|
111
110
|
while (other_min < old_min &&
|
|
112
|
-
!min_.compare_exchange_weak(old_min, other_min)) {
|
|
111
|
+
!min_.compare_exchange_weak(old_min, other_min)) {
|
|
112
|
+
}
|
|
113
113
|
|
|
114
114
|
uint64_t old_max = max();
|
|
115
115
|
uint64_t other_max = other.max();
|
|
116
116
|
while (other_max > old_max &&
|
|
117
|
-
!max_.compare_exchange_weak(old_max, other_max)) {
|
|
117
|
+
!max_.compare_exchange_weak(old_max, other_max)) {
|
|
118
|
+
}
|
|
118
119
|
|
|
119
120
|
num_.fetch_add(other.num(), std::memory_order_relaxed);
|
|
120
121
|
sum_.fetch_add(other.sum(), std::memory_order_relaxed);
|
|
@@ -124,9 +125,7 @@ void HistogramStat::Merge(const HistogramStat& other) {
|
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
127
|
|
|
127
|
-
double HistogramStat::Median() const {
|
|
128
|
-
return Percentile(50.0);
|
|
129
|
-
}
|
|
128
|
+
double HistogramStat::Median() const { return Percentile(50.0); }
|
|
130
129
|
|
|
131
130
|
double HistogramStat::Percentile(double p) const {
|
|
132
131
|
double threshold = num() * (p / 100.0);
|
|
@@ -136,14 +135,14 @@ double HistogramStat::Percentile(double p) const {
|
|
|
136
135
|
cumulative_sum += bucket_value;
|
|
137
136
|
if (cumulative_sum >= threshold) {
|
|
138
137
|
// Scale linearly within this bucket
|
|
139
|
-
uint64_t left_point = (b == 0) ? 0 : bucketMapper.BucketLimit(b-1);
|
|
138
|
+
uint64_t left_point = (b == 0) ? 0 : bucketMapper.BucketLimit(b - 1);
|
|
140
139
|
uint64_t right_point = bucketMapper.BucketLimit(b);
|
|
141
140
|
uint64_t left_sum = cumulative_sum - bucket_value;
|
|
142
141
|
uint64_t right_sum = cumulative_sum;
|
|
143
142
|
double pos = 0;
|
|
144
143
|
uint64_t right_left_diff = right_sum - left_sum;
|
|
145
144
|
if (right_left_diff != 0) {
|
|
146
|
-
|
|
145
|
+
pos = (threshold - left_sum) / right_left_diff;
|
|
147
146
|
}
|
|
148
147
|
double r = left_point + (right_point - left_point) * pos;
|
|
149
148
|
uint64_t cur_min = min();
|
|
@@ -180,8 +179,7 @@ std::string HistogramStat::ToString() const {
|
|
|
180
179
|
uint64_t cur_num = num();
|
|
181
180
|
std::string r;
|
|
182
181
|
char buf[1650];
|
|
183
|
-
snprintf(buf, sizeof(buf),
|
|
184
|
-
"Count: %" PRIu64 " Average: %.4f StdDev: %.2f\n",
|
|
182
|
+
snprintf(buf, sizeof(buf), "Count: %" PRIu64 " Average: %.4f StdDev: %.2f\n",
|
|
185
183
|
cur_num, Average(), StandardDeviation());
|
|
186
184
|
r.append(buf);
|
|
187
185
|
snprintf(buf, sizeof(buf),
|
|
@@ -195,7 +193,7 @@ std::string HistogramStat::ToString() const {
|
|
|
195
193
|
Percentile(99.99));
|
|
196
194
|
r.append(buf);
|
|
197
195
|
r.append("------------------------------------------------------\n");
|
|
198
|
-
if (cur_num == 0) return r;
|
|
196
|
+
if (cur_num == 0) return r; // all buckets are empty
|
|
199
197
|
const double mult = 100.0 / cur_num;
|
|
200
198
|
uint64_t cumulative_sum = 0;
|
|
201
199
|
for (unsigned int b = 0; b < num_buckets_; b++) {
|
|
@@ -205,11 +203,11 @@ std::string HistogramStat::ToString() const {
|
|
|
205
203
|
snprintf(buf, sizeof(buf),
|
|
206
204
|
"%c %7" PRIu64 ", %7" PRIu64 " ] %8" PRIu64 " %7.3f%% %7.3f%% ",
|
|
207
205
|
(b == 0) ? '[' : '(',
|
|
208
|
-
(b == 0) ? 0 : bucketMapper.BucketLimit(b-1), // left
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
(mult * bucket_value),
|
|
212
|
-
(mult * cumulative_sum));
|
|
206
|
+
(b == 0) ? 0 : bucketMapper.BucketLimit(b - 1), // left
|
|
207
|
+
bucketMapper.BucketLimit(b), // right
|
|
208
|
+
bucket_value, // count
|
|
209
|
+
(mult * bucket_value), // percentage
|
|
210
|
+
(mult * cumulative_sum)); // cumulative percentage
|
|
213
211
|
r.append(buf);
|
|
214
212
|
|
|
215
213
|
// Add hash marks based on percentage; 20 marks for 100%.
|
|
@@ -220,7 +218,7 @@ std::string HistogramStat::ToString() const {
|
|
|
220
218
|
return r;
|
|
221
219
|
}
|
|
222
220
|
|
|
223
|
-
void HistogramStat::Data(HistogramData
|
|
221
|
+
void HistogramStat::Data(HistogramData* const data) const {
|
|
224
222
|
assert(data);
|
|
225
223
|
data->median = Median();
|
|
226
224
|
data->percentile95 = Percentile(95);
|
|
@@ -238,13 +236,9 @@ void HistogramImpl::Clear() {
|
|
|
238
236
|
stats_.Clear();
|
|
239
237
|
}
|
|
240
238
|
|
|
241
|
-
bool HistogramImpl::Empty() const {
|
|
242
|
-
return stats_.Empty();
|
|
243
|
-
}
|
|
239
|
+
bool HistogramImpl::Empty() const { return stats_.Empty(); }
|
|
244
240
|
|
|
245
|
-
void HistogramImpl::Add(uint64_t value) {
|
|
246
|
-
stats_.Add(value);
|
|
247
|
-
}
|
|
241
|
+
void HistogramImpl::Add(uint64_t value) { stats_.Add(value); }
|
|
248
242
|
|
|
249
243
|
void HistogramImpl::Merge(const Histogram& other) {
|
|
250
244
|
if (strcmp(Name(), other.Name()) == 0) {
|
|
@@ -257,28 +251,20 @@ void HistogramImpl::Merge(const HistogramImpl& other) {
|
|
|
257
251
|
stats_.Merge(other.stats_);
|
|
258
252
|
}
|
|
259
253
|
|
|
260
|
-
double HistogramImpl::Median() const {
|
|
261
|
-
return stats_.Median();
|
|
262
|
-
}
|
|
254
|
+
double HistogramImpl::Median() const { return stats_.Median(); }
|
|
263
255
|
|
|
264
256
|
double HistogramImpl::Percentile(double p) const {
|
|
265
257
|
return stats_.Percentile(p);
|
|
266
258
|
}
|
|
267
259
|
|
|
268
|
-
double HistogramImpl::Average() const {
|
|
269
|
-
return stats_.Average();
|
|
270
|
-
}
|
|
260
|
+
double HistogramImpl::Average() const { return stats_.Average(); }
|
|
271
261
|
|
|
272
262
|
double HistogramImpl::StandardDeviation() const {
|
|
273
|
-
|
|
263
|
+
return stats_.StandardDeviation();
|
|
274
264
|
}
|
|
275
265
|
|
|
276
|
-
std::string HistogramImpl::ToString() const {
|
|
277
|
-
return stats_.ToString();
|
|
278
|
-
}
|
|
266
|
+
std::string HistogramImpl::ToString() const { return stats_.ToString(); }
|
|
279
267
|
|
|
280
|
-
void HistogramImpl::Data(HistogramData
|
|
281
|
-
stats_.Data(data);
|
|
282
|
-
}
|
|
268
|
+
void HistogramImpl::Data(HistogramData* const data) const { stats_.Data(data); }
|
|
283
269
|
|
|
284
270
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -8,36 +8,29 @@
|
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
|
|
10
10
|
#pragma once
|
|
11
|
-
#include "rocksdb/statistics.h"
|
|
12
|
-
|
|
13
11
|
#include <cassert>
|
|
14
|
-
#include <string>
|
|
15
|
-
#include <vector>
|
|
16
12
|
#include <map>
|
|
17
13
|
#include <mutex>
|
|
14
|
+
#include <string>
|
|
15
|
+
#include <vector>
|
|
16
|
+
|
|
17
|
+
#include "rocksdb/statistics.h"
|
|
18
18
|
|
|
19
19
|
namespace ROCKSDB_NAMESPACE {
|
|
20
20
|
|
|
21
21
|
class HistogramBucketMapper {
|
|
22
22
|
public:
|
|
23
|
-
|
|
24
23
|
HistogramBucketMapper();
|
|
25
24
|
|
|
26
25
|
// converts a value to the bucket index.
|
|
27
26
|
size_t IndexForValue(uint64_t value) const;
|
|
28
27
|
// number of buckets required.
|
|
29
28
|
|
|
30
|
-
size_t BucketCount() const {
|
|
31
|
-
return bucketValues_.size();
|
|
32
|
-
}
|
|
29
|
+
size_t BucketCount() const { return bucketValues_.size(); }
|
|
33
30
|
|
|
34
|
-
uint64_t LastValue() const {
|
|
35
|
-
return maxBucketValue_;
|
|
36
|
-
}
|
|
31
|
+
uint64_t LastValue() const { return maxBucketValue_; }
|
|
37
32
|
|
|
38
|
-
uint64_t FirstValue() const {
|
|
39
|
-
return minBucketValue_;
|
|
40
|
-
}
|
|
33
|
+
uint64_t FirstValue() const { return minBucketValue_; }
|
|
41
34
|
|
|
42
35
|
uint64_t BucketLimit(const size_t bucketNumber) const {
|
|
43
36
|
assert(bucketNumber < BucketCount());
|
|
@@ -88,14 +81,14 @@ struct HistogramStat {
|
|
|
88
81
|
std::atomic_uint_fast64_t num_;
|
|
89
82
|
std::atomic_uint_fast64_t sum_;
|
|
90
83
|
std::atomic_uint_fast64_t sum_squares_;
|
|
91
|
-
std::atomic_uint_fast64_t buckets_[109];
|
|
84
|
+
std::atomic_uint_fast64_t buckets_[109]; // 109==BucketMapper::BucketCount()
|
|
92
85
|
const uint64_t num_buckets_;
|
|
93
86
|
};
|
|
94
87
|
|
|
95
88
|
class Histogram {
|
|
96
|
-
public:
|
|
89
|
+
public:
|
|
97
90
|
Histogram() {}
|
|
98
|
-
virtual ~Histogram()
|
|
91
|
+
virtual ~Histogram(){};
|
|
99
92
|
|
|
100
93
|
virtual void Clear() = 0;
|
|
101
94
|
virtual bool Empty() const = 0;
|
|
@@ -18,14 +18,14 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
18
18
|
class HistogramTest : public testing::Test {};
|
|
19
19
|
|
|
20
20
|
namespace {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
void PopulateHistogram(Histogram& histogram,
|
|
28
|
-
|
|
21
|
+
const double kIota = 0.1;
|
|
22
|
+
const HistogramBucketMapper bucketMapper;
|
|
23
|
+
std::shared_ptr<MockSystemClock> clock =
|
|
24
|
+
std::make_shared<MockSystemClock>(SystemClock::Default());
|
|
25
|
+
} // namespace
|
|
26
|
+
|
|
27
|
+
void PopulateHistogram(Histogram& histogram, uint64_t low, uint64_t high,
|
|
28
|
+
uint64_t loop = 1) {
|
|
29
29
|
Random rnd(test::RandomSeed());
|
|
30
30
|
for (; loop > 0; loop--) {
|
|
31
31
|
for (uint64_t i = low; i <= high; i++) {
|
|
@@ -39,7 +39,7 @@ void PopulateHistogram(Histogram& histogram,
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
void BasicOperation(Histogram& histogram) {
|
|
42
|
-
PopulateHistogram(histogram, 1, 110, 10);
|
|
42
|
+
PopulateHistogram(histogram, 1, 110, 10); // fill up to bucket [70, 110)
|
|
43
43
|
|
|
44
44
|
HistogramData data;
|
|
45
45
|
histogram.Data(&data);
|
|
@@ -47,8 +47,8 @@ void BasicOperation(Histogram& histogram) {
|
|
|
47
47
|
ASSERT_LE(fabs(histogram.Percentile(100.0) - 110.0), kIota);
|
|
48
48
|
ASSERT_LE(fabs(data.percentile99 - 108.9), kIota); // 99 * 110 / 100
|
|
49
49
|
ASSERT_LE(fabs(data.percentile95 - 104.5), kIota); // 95 * 110 / 100
|
|
50
|
-
ASSERT_LE(fabs(data.median - 55.0), kIota);
|
|
51
|
-
ASSERT_EQ(data.average, 55.5);
|
|
50
|
+
ASSERT_LE(fabs(data.median - 55.0), kIota); // 50 * 110 / 100
|
|
51
|
+
ASSERT_EQ(data.average, 55.5); // (1 + 110) / 2
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
void MergeHistogram(Histogram& histogram, Histogram& other) {
|
|
@@ -62,8 +62,8 @@ void MergeHistogram(Histogram& histogram, Histogram& other) {
|
|
|
62
62
|
ASSERT_LE(fabs(histogram.Percentile(100.0) - 250.0), kIota);
|
|
63
63
|
ASSERT_LE(fabs(data.percentile99 - 247.5), kIota); // 99 * 250 / 100
|
|
64
64
|
ASSERT_LE(fabs(data.percentile95 - 237.5), kIota); // 95 * 250 / 100
|
|
65
|
-
ASSERT_LE(fabs(data.median - 125.0), kIota);
|
|
66
|
-
ASSERT_EQ(data.average, 125.5);
|
|
65
|
+
ASSERT_LE(fabs(data.median - 125.0), kIota); // 50 * 250 / 100
|
|
66
|
+
ASSERT_EQ(data.average, 125.5); // (1 + 250) / 2
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
void EmptyHistogram(Histogram& histogram) {
|
|
@@ -139,8 +139,8 @@ TEST_F(HistogramTest, HistogramWindowingExpire) {
|
|
|
139
139
|
int micros_per_window = 1000000;
|
|
140
140
|
uint64_t min_num_per_window = 0;
|
|
141
141
|
|
|
142
|
-
HistogramWindowingImpl
|
|
143
|
-
|
|
142
|
+
HistogramWindowingImpl histogramWindowing(num_windows, micros_per_window,
|
|
143
|
+
min_num_per_window);
|
|
144
144
|
histogramWindowing.TEST_UpdateClock(clock);
|
|
145
145
|
PopulateHistogram(histogramWindowing, 1, 1, 100);
|
|
146
146
|
clock->SleepForMicroseconds(micros_per_window);
|
|
@@ -190,10 +190,10 @@ TEST_F(HistogramTest, HistogramWindowingMerge) {
|
|
|
190
190
|
int micros_per_window = 1000000;
|
|
191
191
|
uint64_t min_num_per_window = 0;
|
|
192
192
|
|
|
193
|
-
HistogramWindowingImpl
|
|
194
|
-
|
|
195
|
-
HistogramWindowingImpl
|
|
196
|
-
|
|
193
|
+
HistogramWindowingImpl histogramWindowing(num_windows, micros_per_window,
|
|
194
|
+
min_num_per_window);
|
|
195
|
+
HistogramWindowingImpl otherWindowing(num_windows, micros_per_window,
|
|
196
|
+
min_num_per_window);
|
|
197
197
|
histogramWindowing.TEST_UpdateClock(clock);
|
|
198
198
|
otherWindowing.TEST_UpdateClock(clock);
|
|
199
199
|
|