@nxtedition/rocksdb 7.1.29 → 7.1.31
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 +34 -0
- 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/index.js +4 -0
- package/package.json +2 -2
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
|
|
10
10
|
#pragma once
|
|
11
11
|
#include <assert.h>
|
|
12
|
+
|
|
12
13
|
#include <atomic>
|
|
13
14
|
#include <mutex>
|
|
14
15
|
#include <thread>
|
|
16
|
+
|
|
15
17
|
#include "port/port.h"
|
|
16
18
|
|
|
17
19
|
namespace ROCKSDB_NAMESPACE {
|
|
@@ -28,9 +30,7 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
28
30
|
|
|
29
31
|
class MutexLock {
|
|
30
32
|
public:
|
|
31
|
-
explicit MutexLock(port::Mutex *mu) : mu_(mu) {
|
|
32
|
-
this->mu_->Lock();
|
|
33
|
-
}
|
|
33
|
+
explicit MutexLock(port::Mutex *mu) : mu_(mu) { this->mu_->Lock(); }
|
|
34
34
|
// No copying allowed
|
|
35
35
|
MutexLock(const MutexLock &) = delete;
|
|
36
36
|
void operator=(const MutexLock &) = delete;
|
|
@@ -48,9 +48,7 @@ class MutexLock {
|
|
|
48
48
|
//
|
|
49
49
|
class ReadLock {
|
|
50
50
|
public:
|
|
51
|
-
explicit ReadLock(port::RWMutex *mu) : mu_(mu) {
|
|
52
|
-
this->mu_->ReadLock();
|
|
53
|
-
}
|
|
51
|
+
explicit ReadLock(port::RWMutex *mu) : mu_(mu) { this->mu_->ReadLock(); }
|
|
54
52
|
// No copying allowed
|
|
55
53
|
ReadLock(const ReadLock &) = delete;
|
|
56
54
|
void operator=(const ReadLock &) = delete;
|
|
@@ -84,9 +82,7 @@ class ReadUnlock {
|
|
|
84
82
|
//
|
|
85
83
|
class WriteLock {
|
|
86
84
|
public:
|
|
87
|
-
explicit WriteLock(port::RWMutex *mu) : mu_(mu) {
|
|
88
|
-
this->mu_->WriteLock();
|
|
89
|
-
}
|
|
85
|
+
explicit WriteLock(port::RWMutex *mu) : mu_(mu) { this->mu_->WriteLock(); }
|
|
90
86
|
// No copying allowed
|
|
91
87
|
WriteLock(const WriteLock &) = delete;
|
|
92
88
|
void operator=(const WriteLock &) = delete;
|
|
@@ -152,13 +148,11 @@ class Striped {
|
|
|
152
148
|
public:
|
|
153
149
|
Striped(size_t stripes, std::function<uint64_t(const P &)> hash)
|
|
154
150
|
: stripes_(stripes), hash_(hash) {
|
|
155
|
-
|
|
156
151
|
locks_ = reinterpret_cast<LockData<T> *>(
|
|
157
152
|
port::cacheline_aligned_alloc(sizeof(LockData<T>) * stripes));
|
|
158
153
|
for (size_t i = 0; i < stripes; i++) {
|
|
159
154
|
new (&locks_[i]) LockData<T>();
|
|
160
155
|
}
|
|
161
|
-
|
|
162
156
|
}
|
|
163
157
|
|
|
164
158
|
virtual ~Striped() {
|
|
@@ -85,9 +85,7 @@ class Random {
|
|
|
85
85
|
// Skewed: pick "base" uniformly from range [0,max_log] and then
|
|
86
86
|
// return "base" random bits. The effect is to pick a number in the
|
|
87
87
|
// range [0,2^max_log-1] with exponential bias towards smaller numbers.
|
|
88
|
-
uint32_t Skewed(int max_log) {
|
|
89
|
-
return Uniform(1 << Uniform(max_log + 1));
|
|
90
|
-
}
|
|
88
|
+
uint32_t Skewed(int max_log) { return Uniform(1 << Uniform(max_log + 1)); }
|
|
91
89
|
|
|
92
90
|
// Returns a random string of length "len"
|
|
93
91
|
std::string RandomString(int len);
|
|
@@ -153,7 +151,7 @@ class Random64 {
|
|
|
153
151
|
std::mt19937_64 generator_;
|
|
154
152
|
|
|
155
153
|
public:
|
|
156
|
-
explicit Random64(uint64_t s) : generator_(s) {
|
|
154
|
+
explicit Random64(uint64_t s) : generator_(s) {}
|
|
157
155
|
|
|
158
156
|
// Generates the next random number
|
|
159
157
|
uint64_t Next() { return generator_(); }
|
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
// Use of this source code is governed by a BSD-style license that can be
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
|
|
10
|
+
#include "util/random.h"
|
|
11
|
+
|
|
10
12
|
#include <cstring>
|
|
11
13
|
#include <vector>
|
|
12
14
|
|
|
13
15
|
#include "test_util/testharness.h"
|
|
14
|
-
#include "util/random.h"
|
|
15
16
|
|
|
16
17
|
using ROCKSDB_NAMESPACE::Random;
|
|
17
18
|
|
|
@@ -836,9 +836,10 @@ TYPED_TEST(RibbonTypeParamTest, CompactnessAndBacktrackAndFpRate) {
|
|
|
836
836
|
double single_failure_rate = 1.0 * total_single_failures / total_singles;
|
|
837
837
|
fprintf(stderr, "Add'l single, failure rate: %g\n", single_failure_rate);
|
|
838
838
|
// A rough bound (one sided) based on nothing in particular
|
|
839
|
-
double expected_single_failures =
|
|
840
|
-
|
|
841
|
-
|
|
839
|
+
double expected_single_failures = 1.0 * total_singles /
|
|
840
|
+
(sizeof(CoeffRow) == 16 ? 128
|
|
841
|
+
: TypeParam::kUseSmash ? 64
|
|
842
|
+
: 32);
|
|
842
843
|
EXPECT_LE(total_single_failures,
|
|
843
844
|
InfrequentPoissonUpperBound(expected_single_failures));
|
|
844
845
|
}
|
|
@@ -128,7 +128,7 @@ class CappedPrefixTransform : public SliceTransform {
|
|
|
128
128
|
|
|
129
129
|
class NoopTransform : public SliceTransform {
|
|
130
130
|
public:
|
|
131
|
-
explicit NoopTransform() {
|
|
131
|
+
explicit NoopTransform() {}
|
|
132
132
|
|
|
133
133
|
static const char* kClassName() { return "rocksdb.Noop"; }
|
|
134
134
|
const char* Name() const override { return kClassName(); }
|
|
@@ -32,8 +32,7 @@ void Multiplier(void* arg1, void* arg2) {
|
|
|
32
32
|
|
|
33
33
|
class PinnableSliceTest : public testing::Test {
|
|
34
34
|
public:
|
|
35
|
-
void AssertSameData(const std::string& expected,
|
|
36
|
-
const PinnableSlice& slice) {
|
|
35
|
+
void AssertSameData(const std::string& expected, const PinnableSlice& slice) {
|
|
37
36
|
std::string got;
|
|
38
37
|
got.assign(slice.data(), slice.size());
|
|
39
38
|
ASSERT_EQ(expected, got);
|
|
@@ -8,11 +8,13 @@
|
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
|
|
10
10
|
#include "rocksdb/status.h"
|
|
11
|
+
|
|
11
12
|
#include <stdio.h>
|
|
12
13
|
#ifdef OS_WIN
|
|
13
14
|
#include <string.h>
|
|
14
15
|
#endif
|
|
15
16
|
#include <cstring>
|
|
17
|
+
|
|
16
18
|
#include "port/port.h"
|
|
17
19
|
|
|
18
20
|
namespace ROCKSDB_NAMESPACE {
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
#include <errno.h>
|
|
9
9
|
#include <stdio.h>
|
|
10
10
|
#include <stdlib.h>
|
|
11
|
+
|
|
11
12
|
#include <algorithm>
|
|
12
13
|
#include <cinttypes>
|
|
13
14
|
#include <cmath>
|
|
@@ -15,6 +16,7 @@
|
|
|
15
16
|
#include <string>
|
|
16
17
|
#include <utility>
|
|
17
18
|
#include <vector>
|
|
19
|
+
|
|
18
20
|
#include "port/port.h"
|
|
19
21
|
#include "port/sys_time.h"
|
|
20
22
|
#include "rocksdb/slice.h"
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
4
|
// (found in the LICENSE.Apache file in the root directory).
|
|
5
5
|
|
|
6
|
-
#include <mutex>
|
|
7
6
|
#include <condition_variable>
|
|
7
|
+
#include <mutex>
|
|
8
8
|
|
|
9
9
|
#include "monitoring/thread_status_updater.h"
|
|
10
10
|
#include "rocksdb/db.h"
|
|
@@ -17,16 +17,19 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
17
17
|
class SimulatedBackgroundTask {
|
|
18
18
|
public:
|
|
19
19
|
SimulatedBackgroundTask(
|
|
20
|
-
const void* db_key, const std::string& db_name,
|
|
21
|
-
const
|
|
20
|
+
const void* db_key, const std::string& db_name, const void* cf_key,
|
|
21
|
+
const std::string& cf_name,
|
|
22
22
|
const ThreadStatus::OperationType operation_type =
|
|
23
23
|
ThreadStatus::OP_UNKNOWN,
|
|
24
|
-
const ThreadStatus::StateType state_type =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
cf_key_(cf_key),
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
const ThreadStatus::StateType state_type = ThreadStatus::STATE_UNKNOWN)
|
|
25
|
+
: db_key_(db_key),
|
|
26
|
+
db_name_(db_name),
|
|
27
|
+
cf_key_(cf_key),
|
|
28
|
+
cf_name_(cf_name),
|
|
29
|
+
operation_type_(operation_type),
|
|
30
|
+
state_type_(state_type),
|
|
31
|
+
should_run_(true),
|
|
32
|
+
running_count_(0) {
|
|
30
33
|
Env::Default()->GetThreadStatusUpdater()->NewColumnFamilyInfo(
|
|
31
34
|
db_key_, db_name_, cf_key_, cf_name_);
|
|
32
35
|
}
|
|
@@ -92,24 +95,22 @@ class SimulatedBackgroundTask {
|
|
|
92
95
|
|
|
93
96
|
class ThreadListTest : public testing::Test {
|
|
94
97
|
public:
|
|
95
|
-
ThreadListTest() {
|
|
96
|
-
}
|
|
98
|
+
ThreadListTest() {}
|
|
97
99
|
};
|
|
98
100
|
|
|
99
101
|
TEST_F(ThreadListTest, GlobalTables) {
|
|
100
102
|
// verify the global tables for operations and states are properly indexed.
|
|
101
103
|
for (int type = 0; type != ThreadStatus::NUM_OP_TYPES; ++type) {
|
|
102
104
|
ASSERT_EQ(global_operation_table[type].type, type);
|
|
103
|
-
ASSERT_EQ(
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
ASSERT_EQ(
|
|
106
|
+
global_operation_table[type].name,
|
|
107
|
+
ThreadStatus::GetOperationName(ThreadStatus::OperationType(type)));
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
for (int type = 0; type != ThreadStatus::NUM_STATE_TYPES; ++type) {
|
|
109
111
|
ASSERT_EQ(global_state_table[type].type, type);
|
|
110
112
|
ASSERT_EQ(global_state_table[type].name,
|
|
111
|
-
ThreadStatus::GetStateName(
|
|
112
|
-
ThreadStatus::StateType(type)));
|
|
113
|
+
ThreadStatus::GetStateName(ThreadStatus::StateType(type)));
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
for (int stage = 0; stage != ThreadStatus::NUM_OP_STAGES; ++stage) {
|
|
@@ -131,18 +132,18 @@ TEST_F(ThreadListTest, SimpleColumnFamilyInfoTest) {
|
|
|
131
132
|
env->SetBackgroundThreads(kLowPriorityThreads, Env::LOW);
|
|
132
133
|
// Wait 1 second so that threads start
|
|
133
134
|
Env::Default()->SleepForMicroseconds(kDelayMicros);
|
|
134
|
-
SimulatedBackgroundTask running_task(
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
SimulatedBackgroundTask running_task(reinterpret_cast<void*>(1234), "running",
|
|
136
|
+
reinterpret_cast<void*>(5678),
|
|
137
|
+
"pikachu");
|
|
137
138
|
|
|
138
139
|
for (int test = 0; test < kSimulatedHighPriThreads; ++test) {
|
|
139
|
-
env->Schedule(&SimulatedBackgroundTask::DoSimulatedTask,
|
|
140
|
-
|
|
140
|
+
env->Schedule(&SimulatedBackgroundTask::DoSimulatedTask, &running_task,
|
|
141
|
+
Env::Priority::HIGH);
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
for (int test = 0; test < kSimulatedLowPriThreads; ++test) {
|
|
144
|
-
env->Schedule(&SimulatedBackgroundTask::DoSimulatedTask,
|
|
145
|
-
|
|
145
|
+
env->Schedule(&SimulatedBackgroundTask::DoSimulatedTask, &running_task,
|
|
146
|
+
Env::Priority::LOW);
|
|
146
147
|
}
|
|
147
148
|
running_task.WaitUntilScheduled(kSimulatedHighPriThreads +
|
|
148
149
|
kSimulatedLowPriThreads);
|
|
@@ -168,14 +169,10 @@ TEST_F(ThreadListTest, SimpleColumnFamilyInfoTest) {
|
|
|
168
169
|
ASSERT_EQ(0, env->ReserveThreads(kHighPriorityThreads, Env::Priority::HIGH));
|
|
169
170
|
ASSERT_EQ(0, env->ReserveThreads(kLowPriorityThreads, Env::Priority::LOW));
|
|
170
171
|
|
|
171
|
-
ASSERT_EQ(
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
ASSERT_EQ(
|
|
175
|
-
running_count[ThreadStatus::LOW_PRIORITY],
|
|
176
|
-
kSimulatedLowPriThreads);
|
|
177
|
-
ASSERT_EQ(
|
|
178
|
-
running_count[ThreadStatus::USER], 0);
|
|
172
|
+
ASSERT_EQ(running_count[ThreadStatus::HIGH_PRIORITY],
|
|
173
|
+
kSimulatedHighPriThreads);
|
|
174
|
+
ASSERT_EQ(running_count[ThreadStatus::LOW_PRIORITY], kSimulatedLowPriThreads);
|
|
175
|
+
ASSERT_EQ(running_count[ThreadStatus::USER], 0);
|
|
179
176
|
|
|
180
177
|
running_task.FinishAllTasks();
|
|
181
178
|
running_task.WaitUntilDone();
|
|
@@ -197,37 +194,33 @@ TEST_F(ThreadListTest, SimpleColumnFamilyInfoTest) {
|
|
|
197
194
|
}
|
|
198
195
|
}
|
|
199
196
|
|
|
200
|
-
ASSERT_EQ(
|
|
201
|
-
|
|
202
|
-
ASSERT_EQ(
|
|
203
|
-
running_count[ThreadStatus::LOW_PRIORITY], 0);
|
|
204
|
-
ASSERT_EQ(
|
|
205
|
-
running_count[ThreadStatus::USER], 0);
|
|
197
|
+
ASSERT_EQ(running_count[ThreadStatus::HIGH_PRIORITY], 0);
|
|
198
|
+
ASSERT_EQ(running_count[ThreadStatus::LOW_PRIORITY], 0);
|
|
199
|
+
ASSERT_EQ(running_count[ThreadStatus::USER], 0);
|
|
206
200
|
}
|
|
207
201
|
|
|
208
202
|
namespace {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
state_counts[thread_status.state_type]++;
|
|
215
|
-
}
|
|
203
|
+
void UpdateStatusCounts(const std::vector<ThreadStatus>& thread_list,
|
|
204
|
+
int operation_counts[], int state_counts[]) {
|
|
205
|
+
for (auto thread_status : thread_list) {
|
|
206
|
+
operation_counts[thread_status.operation_type]++;
|
|
207
|
+
state_counts[thread_status.state_type]++;
|
|
216
208
|
}
|
|
209
|
+
}
|
|
217
210
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
211
|
+
void VerifyAndResetCounts(const int correct_counts[], int collected_counts[],
|
|
212
|
+
int size) {
|
|
213
|
+
for (int i = 0; i < size; ++i) {
|
|
214
|
+
ASSERT_EQ(collected_counts[i], correct_counts[i]);
|
|
215
|
+
collected_counts[i] = 0;
|
|
224
216
|
}
|
|
217
|
+
}
|
|
225
218
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
219
|
+
void UpdateCount(int operation_counts[], int from_event, int to_event,
|
|
220
|
+
int amount) {
|
|
221
|
+
operation_counts[from_event] -= amount;
|
|
222
|
+
operation_counts[to_event] += amount;
|
|
223
|
+
}
|
|
231
224
|
} // namespace
|
|
232
225
|
|
|
233
226
|
TEST_F(ThreadListTest, SimpleEventTest) {
|
|
@@ -236,62 +229,57 @@ TEST_F(ThreadListTest, SimpleEventTest) {
|
|
|
236
229
|
// simulated tasks
|
|
237
230
|
const int kFlushWriteTasks = 3;
|
|
238
231
|
SimulatedBackgroundTask flush_write_task(
|
|
239
|
-
reinterpret_cast<void*>(1234), "running",
|
|
240
|
-
|
|
241
|
-
ThreadStatus::OP_FLUSH);
|
|
232
|
+
reinterpret_cast<void*>(1234), "running", reinterpret_cast<void*>(5678),
|
|
233
|
+
"pikachu", ThreadStatus::OP_FLUSH);
|
|
242
234
|
|
|
243
235
|
const int kCompactionWriteTasks = 4;
|
|
244
236
|
SimulatedBackgroundTask compaction_write_task(
|
|
245
|
-
reinterpret_cast<void*>(1234), "running",
|
|
246
|
-
|
|
247
|
-
ThreadStatus::OP_COMPACTION);
|
|
237
|
+
reinterpret_cast<void*>(1234), "running", reinterpret_cast<void*>(5678),
|
|
238
|
+
"pikachu", ThreadStatus::OP_COMPACTION);
|
|
248
239
|
|
|
249
240
|
const int kCompactionReadTasks = 5;
|
|
250
241
|
SimulatedBackgroundTask compaction_read_task(
|
|
251
|
-
reinterpret_cast<void*>(1234), "running",
|
|
252
|
-
|
|
253
|
-
ThreadStatus::OP_COMPACTION);
|
|
242
|
+
reinterpret_cast<void*>(1234), "running", reinterpret_cast<void*>(5678),
|
|
243
|
+
"pikachu", ThreadStatus::OP_COMPACTION);
|
|
254
244
|
|
|
255
245
|
const int kCompactionWaitTasks = 6;
|
|
256
246
|
SimulatedBackgroundTask compaction_wait_task(
|
|
257
|
-
reinterpret_cast<void*>(1234), "running",
|
|
258
|
-
|
|
259
|
-
ThreadStatus::OP_COMPACTION);
|
|
247
|
+
reinterpret_cast<void*>(1234), "running", reinterpret_cast<void*>(5678),
|
|
248
|
+
"pikachu", ThreadStatus::OP_COMPACTION);
|
|
260
249
|
|
|
261
250
|
// setup right answers
|
|
262
251
|
int correct_operation_counts[ThreadStatus::NUM_OP_TYPES] = {0};
|
|
263
|
-
correct_operation_counts[ThreadStatus::OP_FLUSH] =
|
|
264
|
-
kFlushWriteTasks;
|
|
252
|
+
correct_operation_counts[ThreadStatus::OP_FLUSH] = kFlushWriteTasks;
|
|
265
253
|
correct_operation_counts[ThreadStatus::OP_COMPACTION] =
|
|
266
254
|
kCompactionWriteTasks + kCompactionReadTasks + kCompactionWaitTasks;
|
|
267
255
|
|
|
268
|
-
env->SetBackgroundThreads(
|
|
269
|
-
|
|
256
|
+
env->SetBackgroundThreads(correct_operation_counts[ThreadStatus::OP_FLUSH],
|
|
257
|
+
Env::HIGH);
|
|
270
258
|
env->SetBackgroundThreads(
|
|
271
259
|
correct_operation_counts[ThreadStatus::OP_COMPACTION], Env::LOW);
|
|
272
260
|
|
|
273
261
|
// schedule the simulated tasks
|
|
274
262
|
for (int t = 0; t < kFlushWriteTasks; ++t) {
|
|
275
|
-
env->Schedule(&SimulatedBackgroundTask::DoSimulatedTask,
|
|
276
|
-
|
|
263
|
+
env->Schedule(&SimulatedBackgroundTask::DoSimulatedTask, &flush_write_task,
|
|
264
|
+
Env::Priority::HIGH);
|
|
277
265
|
}
|
|
278
266
|
flush_write_task.WaitUntilScheduled(kFlushWriteTasks);
|
|
279
267
|
|
|
280
268
|
for (int t = 0; t < kCompactionWriteTasks; ++t) {
|
|
281
269
|
env->Schedule(&SimulatedBackgroundTask::DoSimulatedTask,
|
|
282
|
-
|
|
270
|
+
&compaction_write_task, Env::Priority::LOW);
|
|
283
271
|
}
|
|
284
272
|
compaction_write_task.WaitUntilScheduled(kCompactionWriteTasks);
|
|
285
273
|
|
|
286
274
|
for (int t = 0; t < kCompactionReadTasks; ++t) {
|
|
287
275
|
env->Schedule(&SimulatedBackgroundTask::DoSimulatedTask,
|
|
288
|
-
|
|
276
|
+
&compaction_read_task, Env::Priority::LOW);
|
|
289
277
|
}
|
|
290
278
|
compaction_read_task.WaitUntilScheduled(kCompactionReadTasks);
|
|
291
279
|
|
|
292
280
|
for (int t = 0; t < kCompactionWaitTasks; ++t) {
|
|
293
281
|
env->Schedule(&SimulatedBackgroundTask::DoSimulatedTask,
|
|
294
|
-
|
|
282
|
+
&compaction_wait_task, Env::Priority::LOW);
|
|
295
283
|
}
|
|
296
284
|
compaction_wait_task.WaitUntilScheduled(kCompactionWaitTasks);
|
|
297
285
|
|
|
@@ -8,10 +8,12 @@
|
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
|
|
10
10
|
#include "util/thread_local.h"
|
|
11
|
-
|
|
12
|
-
#include "port/likely.h"
|
|
11
|
+
|
|
13
12
|
#include <stdlib.h>
|
|
14
13
|
|
|
14
|
+
#include "port/likely.h"
|
|
15
|
+
#include "util/mutexlock.h"
|
|
16
|
+
|
|
15
17
|
namespace ROCKSDB_NAMESPACE {
|
|
16
18
|
|
|
17
19
|
struct Entry {
|
|
@@ -39,10 +41,7 @@ class StaticMeta;
|
|
|
39
41
|
// ---------------------------------------------------
|
|
40
42
|
struct ThreadData {
|
|
41
43
|
explicit ThreadData(ThreadLocalPtr::StaticMeta* _inst)
|
|
42
|
-
|
|
43
|
-
next(nullptr),
|
|
44
|
-
prev(nullptr),
|
|
45
|
-
inst(_inst) {}
|
|
44
|
+
: entries(), next(nullptr), prev(nullptr), inst(_inst) {}
|
|
46
45
|
std::vector<Entry> entries;
|
|
47
46
|
ThreadData* next;
|
|
48
47
|
ThreadData* prev;
|
|
@@ -50,7 +49,7 @@ struct ThreadData {
|
|
|
50
49
|
};
|
|
51
50
|
|
|
52
51
|
class ThreadLocalPtr::StaticMeta {
|
|
53
|
-
public:
|
|
52
|
+
public:
|
|
54
53
|
StaticMeta();
|
|
55
54
|
|
|
56
55
|
// Return the next available Id
|
|
@@ -107,7 +106,7 @@ public:
|
|
|
107
106
|
// should be used. One example is OnThreadExit() function.
|
|
108
107
|
port::Mutex* MemberMutex() { return &mutex_; }
|
|
109
108
|
|
|
110
|
-
private:
|
|
109
|
+
private:
|
|
111
110
|
// Get UnrefHandler for id with acquiring mutex
|
|
112
111
|
// REQUIRES: mutex locked
|
|
113
112
|
UnrefHandler GetHandler(uint32_t id);
|
|
@@ -173,7 +172,7 @@ namespace wintlscleanup {
|
|
|
173
172
|
|
|
174
173
|
// This is set to OnThreadExit in StaticMeta singleton constructor
|
|
175
174
|
UnrefHandler thread_local_inclass_routine = nullptr;
|
|
176
|
-
pthread_key_t thread_local_key = pthread_key_t
|
|
175
|
+
pthread_key_t thread_local_key = pthread_key_t(-1);
|
|
177
176
|
|
|
178
177
|
// Static callback function to call with each thread termination.
|
|
179
178
|
void NTAPI WinOnThreadExit(PVOID module, DWORD reason, PVOID reserved) {
|
|
@@ -189,7 +188,7 @@ void NTAPI WinOnThreadExit(PVOID module, DWORD reason, PVOID reserved) {
|
|
|
189
188
|
}
|
|
190
189
|
}
|
|
191
190
|
|
|
192
|
-
} // wintlscleanup
|
|
191
|
+
} // namespace wintlscleanup
|
|
193
192
|
|
|
194
193
|
// extern "C" suppresses C++ name mangling so we know the symbol name for the
|
|
195
194
|
// linker /INCLUDE:symbol pragma above.
|
|
@@ -298,9 +297,7 @@ void ThreadLocalPtr::StaticMeta::OnThreadExit(void* ptr) {
|
|
|
298
297
|
}
|
|
299
298
|
|
|
300
299
|
ThreadLocalPtr::StaticMeta::StaticMeta()
|
|
301
|
-
|
|
302
|
-
head_(this),
|
|
303
|
-
pthread_key_(0) {
|
|
300
|
+
: next_instance_id_(0), head_(this), pthread_key_(0) {
|
|
304
301
|
if (pthread_key_create(&pthread_key_, &OnThreadExit) != 0) {
|
|
305
302
|
abort();
|
|
306
303
|
}
|
|
@@ -345,8 +342,7 @@ void ThreadLocalPtr::StaticMeta::AddThreadData(ThreadData* d) {
|
|
|
345
342
|
head_.prev = d;
|
|
346
343
|
}
|
|
347
344
|
|
|
348
|
-
void ThreadLocalPtr::StaticMeta::RemoveThreadData(
|
|
349
|
-
ThreadData* d) {
|
|
345
|
+
void ThreadLocalPtr::StaticMeta::RemoveThreadData(ThreadData* d) {
|
|
350
346
|
Mutex()->AssertHeld();
|
|
351
347
|
d->next->prev = d->prev;
|
|
352
348
|
d->prev->next = d->next;
|
|
@@ -406,7 +402,7 @@ void* ThreadLocalPtr::StaticMeta::Swap(uint32_t id, void* ptr) {
|
|
|
406
402
|
}
|
|
407
403
|
|
|
408
404
|
bool ThreadLocalPtr::StaticMeta::CompareAndSwap(uint32_t id, void* ptr,
|
|
409
|
-
|
|
405
|
+
void*& expected) {
|
|
410
406
|
auto* tls = GetThreadLocal();
|
|
411
407
|
if (UNLIKELY(id >= tls->entries.size())) {
|
|
412
408
|
// Need mutex to protect entries access within ReclaimId
|
|
@@ -418,7 +414,7 @@ bool ThreadLocalPtr::StaticMeta::CompareAndSwap(uint32_t id, void* ptr,
|
|
|
418
414
|
}
|
|
419
415
|
|
|
420
416
|
void ThreadLocalPtr::StaticMeta::Scrape(uint32_t id, autovector<void*>* ptrs,
|
|
421
|
-
|
|
417
|
+
void* const replacement) {
|
|
422
418
|
MutexLock l(Mutex());
|
|
423
419
|
for (ThreadData* t = head_.next; t != &head_; t = t->next) {
|
|
424
420
|
if (id < t->entries.size()) {
|
|
@@ -443,9 +439,7 @@ void ThreadLocalPtr::StaticMeta::Fold(uint32_t id, FoldFunc func, void* res) {
|
|
|
443
439
|
}
|
|
444
440
|
}
|
|
445
441
|
|
|
446
|
-
uint32_t ThreadLocalPtr::TEST_PeekId() {
|
|
447
|
-
return Instance()->PeekId();
|
|
448
|
-
}
|
|
442
|
+
uint32_t ThreadLocalPtr::TEST_PeekId() { return Instance()->PeekId(); }
|
|
449
443
|
|
|
450
444
|
void ThreadLocalPtr::StaticMeta::SetHandler(uint32_t id, UnrefHandler handler) {
|
|
451
445
|
MutexLock l(Mutex());
|
|
@@ -504,21 +498,13 @@ ThreadLocalPtr::ThreadLocalPtr(UnrefHandler handler)
|
|
|
504
498
|
}
|
|
505
499
|
}
|
|
506
500
|
|
|
507
|
-
ThreadLocalPtr::~ThreadLocalPtr() {
|
|
508
|
-
Instance()->ReclaimId(id_);
|
|
509
|
-
}
|
|
501
|
+
ThreadLocalPtr::~ThreadLocalPtr() { Instance()->ReclaimId(id_); }
|
|
510
502
|
|
|
511
|
-
void* ThreadLocalPtr::Get() const {
|
|
512
|
-
return Instance()->Get(id_);
|
|
513
|
-
}
|
|
503
|
+
void* ThreadLocalPtr::Get() const { return Instance()->Get(id_); }
|
|
514
504
|
|
|
515
|
-
void ThreadLocalPtr::Reset(void* ptr) {
|
|
516
|
-
Instance()->Reset(id_, ptr);
|
|
517
|
-
}
|
|
505
|
+
void ThreadLocalPtr::Reset(void* ptr) { Instance()->Reset(id_, ptr); }
|
|
518
506
|
|
|
519
|
-
void* ThreadLocalPtr::Swap(void* ptr) {
|
|
520
|
-
return Instance()->Swap(id_, ptr);
|
|
521
|
-
}
|
|
507
|
+
void* ThreadLocalPtr::Swap(void* ptr) { return Instance()->Swap(id_, ptr); }
|
|
522
508
|
|
|
523
509
|
bool ThreadLocalPtr::CompareAndSwap(void* ptr, void*& expected) {
|
|
524
510
|
return Instance()->CompareAndSwap(id_, ptr, expected);
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
#include <unordered_map>
|
|
16
16
|
#include <vector>
|
|
17
17
|
|
|
18
|
-
#include "util/autovector.h"
|
|
19
18
|
#include "port/port.h"
|
|
19
|
+
#include "util/autovector.h"
|
|
20
20
|
|
|
21
21
|
namespace ROCKSDB_NAMESPACE {
|
|
22
22
|
|
|
@@ -91,8 +91,7 @@ class ThreadLocalPtr {
|
|
|
91
91
|
|
|
92
92
|
class StaticMeta;
|
|
93
93
|
|
|
94
|
-
private:
|
|
95
|
-
|
|
94
|
+
private:
|
|
96
95
|
static StaticMeta* Instance();
|
|
97
96
|
|
|
98
97
|
const uint32_t id_;
|