@nxtedition/rocksdb 9.0.0 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +0 -21
- package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -9
- package/deps/rocksdb/rocksdb/Makefile +15 -6
- package/deps/rocksdb/rocksdb/README.md +29 -0
- package/deps/rocksdb/rocksdb/TARGETS +17 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +74 -15
- package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +16 -4
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2024 -14
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +349 -23
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +126 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +182 -7
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +31 -14
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -33
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +293 -17
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +21 -5
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +10 -0
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -3
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +25 -11
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +3 -3
- package/deps/rocksdb/rocksdb/db/c.cc +64 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +36 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +23 -15
- package/deps/rocksdb/rocksdb/db/column_family.h +9 -0
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +101 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +36 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +24 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +3 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +42 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +7 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +8 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +146 -64
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +13 -39
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +29 -7
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +8 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +59 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +186 -2
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +17 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +519 -240
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +104 -43
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +169 -66
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +12 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +85 -53
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +99 -82
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +4 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +24 -21
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +83 -55
- package/deps/rocksdb/rocksdb/db/db_iter.h +10 -2
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +187 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +134 -30
- package/deps/rocksdb/rocksdb/db/db_test2.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +5 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +12 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +337 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +51 -34
- package/deps/rocksdb/rocksdb/db/error_handler.h +7 -6
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +58 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +17 -19
- package/deps/rocksdb/rocksdb/db/flush_job.h +3 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +18 -70
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.h +11 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
- package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
- package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +4 -3
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +454 -70
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
- package/deps/rocksdb/rocksdb/db/table_cache.cc +32 -19
- package/deps/rocksdb/rocksdb/db/table_cache.h +12 -6
- package/deps/rocksdb/rocksdb/db/version_edit.h +10 -4
- package/deps/rocksdb/rocksdb/db/version_set.cc +75 -73
- package/deps/rocksdb/rocksdb/db/version_set.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +22 -11
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +44 -20
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +15 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +108 -58
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +36 -14
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +195 -130
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +12 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +14 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +44 -38
- package/deps/rocksdb/rocksdb/env/env.cc +5 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +1 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +50 -29
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +32 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +513 -30
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +38 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +14 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +42 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +65 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +37 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +79 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +14 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +0 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +4 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -0
- package/deps/rocksdb/rocksdb/options/db_options.cc +47 -2
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +12 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/options/options_test.cc +6 -1
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/README +10 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -0
- package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
- package/deps/rocksdb/rocksdb/src.mk +7 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +275 -61
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +96 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +179 -62
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +35 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +14 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +10 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +39 -18
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +10 -8
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +6 -2
- package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
- package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +12 -0
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +33 -6
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +2 -4
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -43
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +213 -28
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -10
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
- package/deps/rocksdb/rocksdb/util/cast_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +26 -1
- package/deps/rocksdb/rocksdb/util/compression.h +9 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/util/overload.h +23 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -0
- package/deps/rocksdb/rocksdb/util/udt_util.cc +42 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +19 -0
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +14 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
- package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +19 -15
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +9 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +41 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +155 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +81 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +7 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +57 -27
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +105 -8
- package/deps/rocksdb/rocksdb.gyp +4 -2
- package/index.js +0 -8
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
package/binding.cc
CHANGED
|
@@ -1563,26 +1563,6 @@ NAPI_METHOD(batch_iterate) {
|
|
|
1563
1563
|
return result;
|
|
1564
1564
|
}
|
|
1565
1565
|
|
|
1566
|
-
NAPI_METHOD(db_flush_wal) {
|
|
1567
|
-
NAPI_ARGV(3);
|
|
1568
|
-
|
|
1569
|
-
Database* database;
|
|
1570
|
-
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
|
|
1571
|
-
|
|
1572
|
-
auto options = argv[1];
|
|
1573
|
-
|
|
1574
|
-
bool sync = false;
|
|
1575
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "sync", sync));
|
|
1576
|
-
|
|
1577
|
-
auto callback = argv[2];
|
|
1578
|
-
|
|
1579
|
-
runAsync<bool>(
|
|
1580
|
-
"leveldown.flushWal", env, callback, [=](auto& state) { return database->db->FlushWAL(sync); },
|
|
1581
|
-
[=](auto& state, auto env, auto& argv) { return napi_ok; });
|
|
1582
|
-
|
|
1583
|
-
return 0;
|
|
1584
|
-
}
|
|
1585
|
-
|
|
1586
1566
|
NAPI_INIT() {
|
|
1587
1567
|
NAPI_EXPORT_FUNCTION(db_init);
|
|
1588
1568
|
NAPI_EXPORT_FUNCTION(db_open);
|
|
@@ -1592,7 +1572,6 @@ NAPI_INIT() {
|
|
|
1592
1572
|
NAPI_EXPORT_FUNCTION(db_clear);
|
|
1593
1573
|
NAPI_EXPORT_FUNCTION(db_get_property);
|
|
1594
1574
|
NAPI_EXPORT_FUNCTION(db_get_latest_sequence);
|
|
1595
|
-
NAPI_EXPORT_FUNCTION(db_flush_wal);
|
|
1596
1575
|
NAPI_EXPORT_FUNCTION(db_get_merge_operands);
|
|
1597
1576
|
|
|
1598
1577
|
NAPI_EXPORT_FUNCTION(iterator_init);
|
|
@@ -254,7 +254,7 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
|
|
|
254
254
|
endif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
|
|
255
255
|
|
|
256
256
|
set(PORTABLE 0 CACHE STRING "Minimum CPU arch to support, or 0 = current CPU, 1 = baseline CPU")
|
|
257
|
-
if(PORTABLE
|
|
257
|
+
if(PORTABLE MATCHES "1|ON|YES|TRUE|Y")
|
|
258
258
|
# Usually nothing to do; compiler default is typically the most general
|
|
259
259
|
if(NOT MSVC)
|
|
260
260
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^s390x")
|
|
@@ -264,14 +264,7 @@ if(PORTABLE STREQUAL 1)
|
|
|
264
264
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=loongarch64")
|
|
265
265
|
endif()
|
|
266
266
|
endif()
|
|
267
|
-
elseif(PORTABLE MATCHES
|
|
268
|
-
# Name of a CPU arch spec or feature set to require
|
|
269
|
-
if(MSVC)
|
|
270
|
-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:${PORTABLE}")
|
|
271
|
-
else()
|
|
272
|
-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${PORTABLE}")
|
|
273
|
-
endif()
|
|
274
|
-
else()
|
|
267
|
+
elseif(PORTABLE MATCHES "0|OFF|NO|FALSE|N")
|
|
275
268
|
if(MSVC)
|
|
276
269
|
# NOTE: No auto-detection of current CPU, but instead assume some useful
|
|
277
270
|
# level of optimization is supported
|
|
@@ -285,6 +278,13 @@ else()
|
|
|
285
278
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
|
|
286
279
|
endif()
|
|
287
280
|
endif()
|
|
281
|
+
else()
|
|
282
|
+
# Name of a CPU arch spec or feature set to require
|
|
283
|
+
if(MSVC)
|
|
284
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:${PORTABLE}")
|
|
285
|
+
else()
|
|
286
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${PORTABLE}")
|
|
287
|
+
endif()
|
|
288
288
|
endif()
|
|
289
289
|
|
|
290
290
|
include(CheckCXXSourceCompiles)
|
|
@@ -632,6 +632,7 @@ set(SOURCES
|
|
|
632
632
|
cache/secondary_cache.cc
|
|
633
633
|
cache/secondary_cache_adapter.cc
|
|
634
634
|
cache/sharded_cache.cc
|
|
635
|
+
cache/tiered_secondary_cache.cc
|
|
635
636
|
db/arena_wrapped_db_iter.cc
|
|
636
637
|
db/blob/blob_contents.cc
|
|
637
638
|
db/blob/blob_fetcher.cc
|
|
@@ -714,6 +715,7 @@ set(SOURCES
|
|
|
714
715
|
db/wal_manager.cc
|
|
715
716
|
db/wide/wide_column_serialization.cc
|
|
716
717
|
db/wide/wide_columns.cc
|
|
718
|
+
db/wide/wide_columns_helper.cc
|
|
717
719
|
db/write_batch.cc
|
|
718
720
|
db/write_batch_base.cc
|
|
719
721
|
db/write_controller.cc
|
|
@@ -1262,6 +1264,7 @@ if(WITH_TESTS)
|
|
|
1262
1264
|
cache/cache_test.cc
|
|
1263
1265
|
cache/compressed_secondary_cache_test.cc
|
|
1264
1266
|
cache/lru_cache_test.cc
|
|
1267
|
+
cache/tiered_secondary_cache_test.cc
|
|
1265
1268
|
db/blob/blob_counting_iterator_test.cc
|
|
1266
1269
|
db/blob/blob_file_addition_test.cc
|
|
1267
1270
|
db/blob/blob_file_builder_test.cc
|
|
@@ -1357,6 +1360,7 @@ if(WITH_TESTS)
|
|
|
1357
1360
|
db/wal_edit_test.cc
|
|
1358
1361
|
db/wide/db_wide_basic_test.cc
|
|
1359
1362
|
db/wide/wide_column_serialization_test.cc
|
|
1363
|
+
db/wide/wide_columns_helper_test.cc
|
|
1360
1364
|
db/write_batch_test.cc
|
|
1361
1365
|
db/write_callback_test.cc
|
|
1362
1366
|
db/write_controller_test.cc
|
|
@@ -1885,6 +1885,9 @@ compressed_secondary_cache_test: $(OBJ_DIR)/cache/compressed_secondary_cache_tes
|
|
|
1885
1885
|
lru_cache_test: $(OBJ_DIR)/cache/lru_cache_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1886
1886
|
$(AM_LINK)
|
|
1887
1887
|
|
|
1888
|
+
tiered_secondary_cache_test: $(OBJ_DIR)/cache/tiered_secondary_cache_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1889
|
+
$(AM_LINK)
|
|
1890
|
+
|
|
1888
1891
|
range_del_aggregator_test: $(OBJ_DIR)/db/range_del_aggregator_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1889
1892
|
$(AM_LINK)
|
|
1890
1893
|
|
|
@@ -1984,6 +1987,9 @@ cache_reservation_manager_test: $(OBJ_DIR)/cache/cache_reservation_manager_test.
|
|
|
1984
1987
|
wide_column_serialization_test: $(OBJ_DIR)/db/wide/wide_column_serialization_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1985
1988
|
$(AM_LINK)
|
|
1986
1989
|
|
|
1990
|
+
wide_columns_helper_test: $(OBJ_DIR)/db/wide/wide_columns_helper_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1991
|
+
$(AM_LINK)
|
|
1992
|
+
|
|
1987
1993
|
#-------------------------------------------------
|
|
1988
1994
|
# make install related stuff
|
|
1989
1995
|
PREFIX ?= /usr/local
|
|
@@ -2088,8 +2094,8 @@ ROCKSDB_JAVADOCS_JAR = rocksdbjni-$(ROCKSDB_JAVA_VERSION)-javadoc.jar
|
|
|
2088
2094
|
ROCKSDB_SOURCES_JAR = rocksdbjni-$(ROCKSDB_JAVA_VERSION)-sources.jar
|
|
2089
2095
|
SHA256_CMD = sha256sum
|
|
2090
2096
|
|
|
2091
|
-
ZLIB_VER ?= 1.
|
|
2092
|
-
ZLIB_SHA256 ?=
|
|
2097
|
+
ZLIB_VER ?= 1.3
|
|
2098
|
+
ZLIB_SHA256 ?= ff0ba4c292013dbc27530b3a81e1f9a813cd39de01ca5e0f8bf355702efa593e
|
|
2093
2099
|
ZLIB_DOWNLOAD_BASE ?= http://zlib.net
|
|
2094
2100
|
BZIP2_VER ?= 1.0.8
|
|
2095
2101
|
BZIP2_SHA256 ?= ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269
|
|
@@ -2097,11 +2103,11 @@ BZIP2_DOWNLOAD_BASE ?= http://sourceware.org/pub/bzip2
|
|
|
2097
2103
|
SNAPPY_VER ?= 1.1.8
|
|
2098
2104
|
SNAPPY_SHA256 ?= 16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f
|
|
2099
2105
|
SNAPPY_DOWNLOAD_BASE ?= https://github.com/google/snappy/archive
|
|
2100
|
-
LZ4_VER ?= 1.9.
|
|
2101
|
-
LZ4_SHA256 ?=
|
|
2106
|
+
LZ4_VER ?= 1.9.4
|
|
2107
|
+
LZ4_SHA256 ?= 0b0e3aa07c8c063ddf40b082bdf7e37a1562bda40a0ff5272957f3e987e0e54b
|
|
2102
2108
|
LZ4_DOWNLOAD_BASE ?= https://github.com/lz4/lz4/archive
|
|
2103
|
-
ZSTD_VER ?= 1.
|
|
2104
|
-
ZSTD_SHA256 ?=
|
|
2109
|
+
ZSTD_VER ?= 1.5.5
|
|
2110
|
+
ZSTD_SHA256 ?= 98e9c3d949d1b924e28e01eccb7deed865eefebf25c2f21c702e5cd5b63b85e1
|
|
2105
2111
|
ZSTD_DOWNLOAD_BASE ?= https://github.com/facebook/zstd/archive
|
|
2106
2112
|
CURL_SSL_OPTS ?= --tlsv1
|
|
2107
2113
|
|
|
@@ -2413,6 +2419,9 @@ jtest_run:
|
|
|
2413
2419
|
jtest: rocksdbjava
|
|
2414
2420
|
cd java;$(MAKE) sample test
|
|
2415
2421
|
|
|
2422
|
+
jpmd: rocksdbjava rocksdbjavageneratepom
|
|
2423
|
+
cd java;$(MAKE) pmd
|
|
2424
|
+
|
|
2416
2425
|
jdb_bench:
|
|
2417
2426
|
cd java;$(MAKE) db_bench;
|
|
2418
2427
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
## RocksDB: A Persistent Key-Value Store for Flash and RAM Storage
|
|
2
|
+
|
|
3
|
+
[](https://circleci.com/gh/facebook/rocksdb)
|
|
4
|
+
|
|
5
|
+
RocksDB is developed and maintained by Facebook Database Engineering Team.
|
|
6
|
+
It is built on earlier work on [LevelDB](https://github.com/google/leveldb) by Sanjay Ghemawat (sanjay@google.com)
|
|
7
|
+
and Jeff Dean (jeff@google.com)
|
|
8
|
+
|
|
9
|
+
This code is a library that forms the core building block for a fast
|
|
10
|
+
key-value server, especially suited for storing data on flash drives.
|
|
11
|
+
It has a Log-Structured-Merge-Database (LSM) design with flexible tradeoffs
|
|
12
|
+
between Write-Amplification-Factor (WAF), Read-Amplification-Factor (RAF)
|
|
13
|
+
and Space-Amplification-Factor (SAF). It has multi-threaded compactions,
|
|
14
|
+
making it especially suitable for storing multiple terabytes of data in a
|
|
15
|
+
single database.
|
|
16
|
+
|
|
17
|
+
Start with example usage here: https://github.com/facebook/rocksdb/tree/main/examples
|
|
18
|
+
|
|
19
|
+
See the [github wiki](https://github.com/facebook/rocksdb/wiki) for more explanation.
|
|
20
|
+
|
|
21
|
+
The public interface is in `include/`. Callers should not include or
|
|
22
|
+
rely on the details of any other header files in this package. Those
|
|
23
|
+
internal APIs may be changed without warning.
|
|
24
|
+
|
|
25
|
+
Questions and discussions are welcome on the [RocksDB Developers Public](https://www.facebook.com/groups/rocksdb.dev/) Facebook group and [email list](https://groups.google.com/g/rocksdb) on Google Groups.
|
|
26
|
+
|
|
27
|
+
## License
|
|
28
|
+
|
|
29
|
+
RocksDB is dual-licensed under both the GPLv2 (found in the COPYING file in the root directory) and Apache 2.0 License (found in the LICENSE.Apache file in the root directory). You may select, at your option, one of the above-listed licenses.
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
# --> DO NOT EDIT MANUALLY <--
|
|
4
4
|
# This file is a Facebook-specific integration for buck builds, so can
|
|
5
5
|
# only be validated by Facebook employees.
|
|
6
|
-
#
|
|
7
|
-
# @noautodeps @nocodemods
|
|
8
6
|
load("//rocks/buckifier:defs.bzl", "cpp_library_wrapper","rocks_cpp_library_wrapper","cpp_binary_wrapper","cpp_unittest_wrapper","fancy_bench_wrapper","add_c_test_wrapper")
|
|
9
7
|
|
|
10
8
|
|
|
@@ -21,6 +19,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
|
21
19
|
"cache/secondary_cache.cc",
|
|
22
20
|
"cache/secondary_cache_adapter.cc",
|
|
23
21
|
"cache/sharded_cache.cc",
|
|
22
|
+
"cache/tiered_secondary_cache.cc",
|
|
24
23
|
"db/arena_wrapped_db_iter.cc",
|
|
25
24
|
"db/blob/blob_contents.cc",
|
|
26
25
|
"db/blob/blob_fetcher.cc",
|
|
@@ -103,6 +102,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
|
103
102
|
"db/wal_manager.cc",
|
|
104
103
|
"db/wide/wide_column_serialization.cc",
|
|
105
104
|
"db/wide/wide_columns.cc",
|
|
105
|
+
"db/wide/wide_columns_helper.cc",
|
|
106
106
|
"db/write_batch.cc",
|
|
107
107
|
"db/write_batch_base.cc",
|
|
108
108
|
"db/write_controller.cc",
|
|
@@ -393,6 +393,7 @@ rocks_cpp_library_wrapper(name="rocksdb_stress_lib", srcs=[
|
|
|
393
393
|
"db_stress_tool/db_stress_stat.cc",
|
|
394
394
|
"db_stress_tool/db_stress_test_base.cc",
|
|
395
395
|
"db_stress_tool/db_stress_tool.cc",
|
|
396
|
+
"db_stress_tool/db_stress_wide_merge_operator.cc",
|
|
396
397
|
"db_stress_tool/expected_state.cc",
|
|
397
398
|
"db_stress_tool/expected_value.cc",
|
|
398
399
|
"db_stress_tool/multi_ops_txns_stress.cc",
|
|
@@ -405,6 +406,8 @@ rocks_cpp_library_wrapper(name="rocksdb_stress_lib", srcs=[
|
|
|
405
406
|
|
|
406
407
|
cpp_binary_wrapper(name="db_stress", srcs=["db_stress_tool/db_stress.cc"], deps=[":rocksdb_stress_lib"], extra_preprocessor_flags=[], extra_bench_libs=False)
|
|
407
408
|
|
|
409
|
+
cpp_binary_wrapper(name="cache_bench", srcs=["cache/cache_bench.cc"], deps=[":rocksdb_cache_bench_tools_lib"], extra_preprocessor_flags=[], extra_bench_libs=False)
|
|
410
|
+
|
|
408
411
|
cpp_binary_wrapper(name="ribbon_bench", srcs=["microbench/ribbon_bench.cc"], deps=[], extra_preprocessor_flags=[], extra_bench_libs=True)
|
|
409
412
|
|
|
410
413
|
cpp_binary_wrapper(name="db_basic_bench", srcs=["microbench/db_basic_bench.cc"], deps=[], extra_preprocessor_flags=[], extra_bench_libs=True)
|
|
@@ -5474,6 +5477,12 @@ cpp_unittest_wrapper(name="tiered_compaction_test",
|
|
|
5474
5477
|
extra_compiler_flags=[])
|
|
5475
5478
|
|
|
5476
5479
|
|
|
5480
|
+
cpp_unittest_wrapper(name="tiered_secondary_cache_test",
|
|
5481
|
+
srcs=["cache/tiered_secondary_cache_test.cc"],
|
|
5482
|
+
deps=[":rocksdb_test_lib"],
|
|
5483
|
+
extra_compiler_flags=[])
|
|
5484
|
+
|
|
5485
|
+
|
|
5477
5486
|
cpp_unittest_wrapper(name="timer_queue_test",
|
|
5478
5487
|
srcs=["util/timer_queue_test.cc"],
|
|
5479
5488
|
deps=[":rocksdb_test_lib"],
|
|
@@ -5552,6 +5561,12 @@ cpp_unittest_wrapper(name="wide_column_serialization_test",
|
|
|
5552
5561
|
extra_compiler_flags=[])
|
|
5553
5562
|
|
|
5554
5563
|
|
|
5564
|
+
cpp_unittest_wrapper(name="wide_columns_helper_test",
|
|
5565
|
+
srcs=["db/wide/wide_columns_helper_test.cc"],
|
|
5566
|
+
deps=[":rocksdb_test_lib"],
|
|
5567
|
+
extra_compiler_flags=[])
|
|
5568
|
+
|
|
5569
|
+
|
|
5555
5570
|
cpp_unittest_wrapper(name="work_queue_test",
|
|
5556
5571
|
srcs=["util/work_queue_test.cc"],
|
|
5557
5572
|
deps=[":rocksdb_test_lib"],
|
|
@@ -66,6 +66,41 @@ static std::unordered_map<std::string, OptionTypeInfo>
|
|
|
66
66
|
OptionTypeFlags::kMutable}},
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
+
namespace {
|
|
70
|
+
static void NoopDelete(Cache::ObjectPtr /*obj*/,
|
|
71
|
+
MemoryAllocator* /*allocator*/) {
|
|
72
|
+
assert(false);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
static size_t SliceSize(Cache::ObjectPtr obj) {
|
|
76
|
+
return static_cast<Slice*>(obj)->size();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static Status SliceSaveTo(Cache::ObjectPtr from_obj, size_t from_offset,
|
|
80
|
+
size_t length, char* out) {
|
|
81
|
+
const Slice& slice = *static_cast<Slice*>(from_obj);
|
|
82
|
+
std::memcpy(out, slice.data() + from_offset, length);
|
|
83
|
+
return Status::OK();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
static Status NoopCreate(const Slice& /*data*/, CompressionType /*type*/,
|
|
87
|
+
CacheTier /*source*/, Cache::CreateContext* /*ctx*/,
|
|
88
|
+
MemoryAllocator* /*allocator*/,
|
|
89
|
+
Cache::ObjectPtr* /*out_obj*/,
|
|
90
|
+
size_t* /*out_charge*/) {
|
|
91
|
+
assert(false);
|
|
92
|
+
return Status::NotSupported();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
static Cache::CacheItemHelper kBasicCacheItemHelper(CacheEntryRole::kMisc,
|
|
96
|
+
&NoopDelete);
|
|
97
|
+
} // namespace
|
|
98
|
+
|
|
99
|
+
const Cache::CacheItemHelper kSliceCacheItemHelper{
|
|
100
|
+
CacheEntryRole::kMisc, &NoopDelete, &SliceSize,
|
|
101
|
+
&SliceSaveTo, &NoopCreate, &kBasicCacheItemHelper,
|
|
102
|
+
};
|
|
103
|
+
|
|
69
104
|
Status SecondaryCache::CreateFromString(
|
|
70
105
|
const ConfigOptions& config_options, const std::string& value,
|
|
71
106
|
std::shared_ptr<SecondaryCache>* result) {
|
|
@@ -3,7 +3,6 @@
|
|
|
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 "cache_key.h"
|
|
7
6
|
#ifdef GFLAGS
|
|
8
7
|
#include <cinttypes>
|
|
9
8
|
#include <cstddef>
|
|
@@ -13,9 +12,12 @@
|
|
|
13
12
|
#include <set>
|
|
14
13
|
#include <sstream>
|
|
15
14
|
|
|
15
|
+
#include "cache/cache_key.h"
|
|
16
|
+
#include "cache/sharded_cache.h"
|
|
16
17
|
#include "db/db_impl/db_impl.h"
|
|
17
18
|
#include "monitoring/histogram.h"
|
|
18
19
|
#include "port/port.h"
|
|
20
|
+
#include "port/stack_trace.h"
|
|
19
21
|
#include "rocksdb/advanced_cache.h"
|
|
20
22
|
#include "rocksdb/convenience.h"
|
|
21
23
|
#include "rocksdb/db.h"
|
|
@@ -44,7 +46,8 @@ static constexpr uint64_t GiB = MiB << 10;
|
|
|
44
46
|
DEFINE_uint32(threads, 16, "Number of concurrent threads to run.");
|
|
45
47
|
DEFINE_uint64(cache_size, 1 * GiB,
|
|
46
48
|
"Number of bytes to use as a cache of uncompressed data.");
|
|
47
|
-
|
|
49
|
+
DEFINE_int32(num_shard_bits, -1,
|
|
50
|
+
"ShardedCacheOptions::shard_bits. Default = auto");
|
|
48
51
|
|
|
49
52
|
DEFINE_double(resident_ratio, 0.25,
|
|
50
53
|
"Ratio of keys fitting in cache to keyspace.");
|
|
@@ -54,6 +57,9 @@ DEFINE_uint32(value_bytes_estimate, 0,
|
|
|
54
57
|
"If > 0, overrides estimated_entry_charge or "
|
|
55
58
|
"min_avg_entry_charge depending on cache_type.");
|
|
56
59
|
|
|
60
|
+
DEFINE_int32(
|
|
61
|
+
degenerate_hash_bits, 0,
|
|
62
|
+
"With HCC, fix this many hash bits to increase table hash collisions");
|
|
57
63
|
DEFINE_uint32(skew, 5, "Degree of skew in key selection. 0 = no skew");
|
|
58
64
|
DEFINE_bool(populate_cache, true, "Populate cache before operations");
|
|
59
65
|
|
|
@@ -76,6 +82,8 @@ DEFINE_uint32(
|
|
|
76
82
|
DEFINE_uint32(gather_stats_entries_per_lock, 256,
|
|
77
83
|
"For Cache::ApplyToAllEntries");
|
|
78
84
|
|
|
85
|
+
DEFINE_uint32(usleep, 0, "Sleep up to this many microseconds after each op.");
|
|
86
|
+
|
|
79
87
|
DEFINE_bool(lean, false,
|
|
80
88
|
"If true, no additional computation is performed besides cache "
|
|
81
89
|
"operations.");
|
|
@@ -97,6 +105,17 @@ static class std::shared_ptr<ROCKSDB_NAMESPACE::SecondaryCache> secondary_cache;
|
|
|
97
105
|
|
|
98
106
|
DEFINE_string(cache_type, "lru_cache", "Type of block cache.");
|
|
99
107
|
|
|
108
|
+
DEFINE_bool(use_jemalloc_no_dump_allocator, false,
|
|
109
|
+
"Whether to use JemallocNoDumpAllocator");
|
|
110
|
+
|
|
111
|
+
DEFINE_uint32(jemalloc_no_dump_allocator_num_arenas,
|
|
112
|
+
ROCKSDB_NAMESPACE::JemallocAllocatorOptions().num_arenas,
|
|
113
|
+
"JemallocNodumpAllocator::num_arenas");
|
|
114
|
+
|
|
115
|
+
DEFINE_bool(jemalloc_no_dump_allocator_limit_tcache_size,
|
|
116
|
+
ROCKSDB_NAMESPACE::JemallocAllocatorOptions().limit_tcache_size,
|
|
117
|
+
"JemallocNodumpAllocator::limit_tcache_size");
|
|
118
|
+
|
|
100
119
|
// ## BEGIN stress_cache_key sub-tool options ##
|
|
101
120
|
// See class StressCacheKey below.
|
|
102
121
|
DEFINE_bool(stress_cache_key, false,
|
|
@@ -226,6 +245,20 @@ struct KeyGen {
|
|
|
226
245
|
raw = std::min(raw, rnd.Next());
|
|
227
246
|
}
|
|
228
247
|
uint64_t key = FastRange64(raw, max_key);
|
|
248
|
+
if (FLAGS_degenerate_hash_bits) {
|
|
249
|
+
uint64_t key_hash =
|
|
250
|
+
Hash64(reinterpret_cast<const char*>(&key), sizeof(key));
|
|
251
|
+
// HCC uses the high 64 bits and a lower bit mask for starting probe
|
|
252
|
+
// location, so we fix hash bits starting at the bottom of that word.
|
|
253
|
+
auto hi_hash = uint64_t{0x9e3779b97f4a7c13U} ^
|
|
254
|
+
(key_hash << 1 << (FLAGS_degenerate_hash_bits - 1));
|
|
255
|
+
uint64_t un_hi, un_lo;
|
|
256
|
+
BijectiveUnhash2x64(hi_hash, key_hash, &un_hi, &un_lo);
|
|
257
|
+
un_lo ^= BitwiseAnd(FLAGS_seed, INT32_MAX);
|
|
258
|
+
EncodeFixed64(key_data, un_lo);
|
|
259
|
+
EncodeFixed64(key_data + 8, un_hi);
|
|
260
|
+
return Slice(key_data, kCacheKeySize);
|
|
261
|
+
}
|
|
229
262
|
// Variable size and alignment
|
|
230
263
|
size_t off = key % 8;
|
|
231
264
|
key_data[0] = char{42};
|
|
@@ -239,8 +272,8 @@ struct KeyGen {
|
|
|
239
272
|
}
|
|
240
273
|
};
|
|
241
274
|
|
|
242
|
-
Cache::ObjectPtr createValue(Random64& rnd) {
|
|
243
|
-
char* rv =
|
|
275
|
+
Cache::ObjectPtr createValue(Random64& rnd, MemoryAllocator* alloc) {
|
|
276
|
+
char* rv = AllocateBlock(FLAGS_value_bytes, alloc).release();
|
|
244
277
|
// Fill with some filler data, and take some CPU time
|
|
245
278
|
for (uint32_t i = 0; i < FLAGS_value_bytes; i += 8) {
|
|
246
279
|
EncodeFixed64(rv + i, rnd.Next());
|
|
@@ -257,7 +290,8 @@ Status SaveToFn(Cache::ObjectPtr from_obj, size_t /*from_offset*/,
|
|
|
257
290
|
return Status::OK();
|
|
258
291
|
}
|
|
259
292
|
|
|
260
|
-
Status CreateFn(const Slice& data,
|
|
293
|
+
Status CreateFn(const Slice& data, CompressionType /*type*/,
|
|
294
|
+
CacheTier /*source*/, Cache::CreateContext* /*context*/,
|
|
261
295
|
MemoryAllocator* /*allocator*/, Cache::ObjectPtr* out_obj,
|
|
262
296
|
size_t* out_charge) {
|
|
263
297
|
*out_obj = new char[data.size()];
|
|
@@ -266,8 +300,8 @@ Status CreateFn(const Slice& data, Cache::CreateContext* /*context*/,
|
|
|
266
300
|
return Status::OK();
|
|
267
301
|
};
|
|
268
302
|
|
|
269
|
-
void DeleteFn(Cache::ObjectPtr value, MemoryAllocator*
|
|
270
|
-
|
|
303
|
+
void DeleteFn(Cache::ObjectPtr value, MemoryAllocator* alloc) {
|
|
304
|
+
CustomDeleter{alloc}(static_cast<char*>(value));
|
|
271
305
|
}
|
|
272
306
|
|
|
273
307
|
Cache::CacheItemHelper helper1_wos(CacheEntryRole::kDataBlock, DeleteFn);
|
|
@@ -302,6 +336,15 @@ class CacheBench {
|
|
|
302
336
|
exit(1);
|
|
303
337
|
}
|
|
304
338
|
|
|
339
|
+
std::shared_ptr<MemoryAllocator> allocator;
|
|
340
|
+
if (FLAGS_use_jemalloc_no_dump_allocator) {
|
|
341
|
+
JemallocAllocatorOptions opts;
|
|
342
|
+
opts.num_arenas = FLAGS_jemalloc_no_dump_allocator_num_arenas;
|
|
343
|
+
opts.limit_tcache_size =
|
|
344
|
+
FLAGS_jemalloc_no_dump_allocator_limit_tcache_size;
|
|
345
|
+
Status s = NewJemallocNodumpAllocator(opts, &allocator);
|
|
346
|
+
assert(s.ok());
|
|
347
|
+
}
|
|
305
348
|
if (FLAGS_cache_type == "clock_cache") {
|
|
306
349
|
fprintf(stderr, "Old clock cache implementation has been removed.\n");
|
|
307
350
|
exit(1);
|
|
@@ -309,6 +352,7 @@ class CacheBench {
|
|
|
309
352
|
HyperClockCacheOptions opts(
|
|
310
353
|
FLAGS_cache_size, /*estimated_entry_charge=*/0, FLAGS_num_shard_bits);
|
|
311
354
|
opts.hash_seed = BitwiseAnd(FLAGS_seed, INT32_MAX);
|
|
355
|
+
opts.memory_allocator = allocator;
|
|
312
356
|
if (FLAGS_cache_type == "fixed_hyper_clock_cache" ||
|
|
313
357
|
FLAGS_cache_type == "hyper_clock_cache") {
|
|
314
358
|
opts.estimated_entry_charge = FLAGS_value_bytes_estimate > 0
|
|
@@ -319,7 +363,7 @@ class CacheBench {
|
|
|
319
363
|
opts.min_avg_entry_charge = FLAGS_value_bytes_estimate;
|
|
320
364
|
}
|
|
321
365
|
} else {
|
|
322
|
-
fprintf(stderr, "Cache type not supported
|
|
366
|
+
fprintf(stderr, "Cache type not supported.\n");
|
|
323
367
|
exit(1);
|
|
324
368
|
}
|
|
325
369
|
cache_ = opts.MakeSharedCache();
|
|
@@ -328,6 +372,7 @@ class CacheBench {
|
|
|
328
372
|
false /* strict_capacity_limit */,
|
|
329
373
|
0.5 /* high_pri_pool_ratio */);
|
|
330
374
|
opts.hash_seed = BitwiseAnd(FLAGS_seed, INT32_MAX);
|
|
375
|
+
opts.memory_allocator = allocator;
|
|
331
376
|
if (!FLAGS_secondary_cache_uri.empty()) {
|
|
332
377
|
Status s = SecondaryCache::CreateFromString(
|
|
333
378
|
ConfigOptions(), FLAGS_secondary_cache_uri, &secondary_cache);
|
|
@@ -343,7 +388,7 @@ class CacheBench {
|
|
|
343
388
|
|
|
344
389
|
cache_ = NewLRUCache(opts);
|
|
345
390
|
} else {
|
|
346
|
-
fprintf(stderr, "Cache type not supported
|
|
391
|
+
fprintf(stderr, "Cache type not supported.\n");
|
|
347
392
|
exit(1);
|
|
348
393
|
}
|
|
349
394
|
}
|
|
@@ -373,7 +418,8 @@ class CacheBench {
|
|
|
373
418
|
keys_since_last_not_found = 0;
|
|
374
419
|
|
|
375
420
|
Status s =
|
|
376
|
-
cache_->Insert(key, createValue(rnd
|
|
421
|
+
cache_->Insert(key, createValue(rnd, cache_->memory_allocator()),
|
|
422
|
+
&helper1, FLAGS_value_bytes);
|
|
377
423
|
assert(s.ok());
|
|
378
424
|
|
|
379
425
|
handle = cache_->Lookup(key);
|
|
@@ -610,6 +656,7 @@ class CacheBench {
|
|
|
610
656
|
const auto clock = SystemClock::Default().get();
|
|
611
657
|
uint64_t start_time = clock->NowMicros();
|
|
612
658
|
StopWatchNano timer(clock);
|
|
659
|
+
auto system_clock = SystemClock::Default();
|
|
613
660
|
|
|
614
661
|
for (uint64_t i = 0; i < FLAGS_ops_per_thread; i++) {
|
|
615
662
|
Slice key = gen.GetRand(thread->rnd, max_key_, FLAGS_skew);
|
|
@@ -637,8 +684,9 @@ class CacheBench {
|
|
|
637
684
|
} else {
|
|
638
685
|
++lookup_misses;
|
|
639
686
|
// do insert
|
|
640
|
-
Status s = cache_->Insert(
|
|
641
|
-
|
|
687
|
+
Status s = cache_->Insert(
|
|
688
|
+
key, createValue(thread->rnd, cache_->memory_allocator()),
|
|
689
|
+
&helper2, FLAGS_value_bytes, &handle);
|
|
642
690
|
assert(s.ok());
|
|
643
691
|
}
|
|
644
692
|
} else if (random_op < insert_threshold_) {
|
|
@@ -647,8 +695,9 @@ class CacheBench {
|
|
|
647
695
|
handle = nullptr;
|
|
648
696
|
}
|
|
649
697
|
// do insert
|
|
650
|
-
Status s = cache_->Insert(
|
|
651
|
-
|
|
698
|
+
Status s = cache_->Insert(
|
|
699
|
+
key, createValue(thread->rnd, cache_->memory_allocator()), &helper3,
|
|
700
|
+
FLAGS_value_bytes, &handle);
|
|
652
701
|
assert(s.ok());
|
|
653
702
|
} else if (random_op < lookup_threshold_) {
|
|
654
703
|
if (handle) {
|
|
@@ -679,6 +728,13 @@ class CacheBench {
|
|
|
679
728
|
thread->latency_ns_hist.Add(timer.ElapsedNanos());
|
|
680
729
|
}
|
|
681
730
|
thread->shared->AddLookupStats(lookup_hits, lookup_misses);
|
|
731
|
+
if (FLAGS_usleep > 0) {
|
|
732
|
+
unsigned us =
|
|
733
|
+
static_cast<unsigned>(thread->rnd.Uniform(FLAGS_usleep + 1));
|
|
734
|
+
if (us > 0) {
|
|
735
|
+
system_clock->SleepForMicroseconds(us);
|
|
736
|
+
}
|
|
737
|
+
}
|
|
682
738
|
}
|
|
683
739
|
if (FLAGS_early_exit) {
|
|
684
740
|
MutexLock l(thread->shared->GetMutex());
|
|
@@ -712,7 +768,9 @@ class CacheBench {
|
|
|
712
768
|
printf("Ops per thread : %" PRIu64 "\n", FLAGS_ops_per_thread);
|
|
713
769
|
printf("Cache size : %s\n",
|
|
714
770
|
BytesToHumanString(FLAGS_cache_size).c_str());
|
|
715
|
-
printf("Num shard bits : %
|
|
771
|
+
printf("Num shard bits : %d\n",
|
|
772
|
+
static_cast_with_check<ShardedCacheBase>(cache_.get())
|
|
773
|
+
->GetNumShardBits());
|
|
716
774
|
printf("Max key : %" PRIu64 "\n", max_key_);
|
|
717
775
|
printf("Resident ratio : %g\n", FLAGS_resident_ratio);
|
|
718
776
|
printf("Skew degree : %u\n", FLAGS_skew);
|
|
@@ -1032,6 +1090,7 @@ class StressCacheKey {
|
|
|
1032
1090
|
};
|
|
1033
1091
|
|
|
1034
1092
|
int cache_bench_tool(int argc, char** argv) {
|
|
1093
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
1035
1094
|
ParseCommandLineFlags(&argc, &argv, true);
|
|
1036
1095
|
|
|
1037
1096
|
if (FLAGS_stress_cache_key) {
|
|
@@ -25,7 +25,8 @@ Status WarmInCache(Cache* cache, const Slice& key, const Slice& saved,
|
|
|
25
25
|
assert(helper->create_cb);
|
|
26
26
|
Cache::ObjectPtr value;
|
|
27
27
|
size_t charge;
|
|
28
|
-
Status st = helper->create_cb(saved,
|
|
28
|
+
Status st = helper->create_cb(saved, CompressionType::kNoCompression,
|
|
29
|
+
CacheTier::kVolatileTier, create_context,
|
|
29
30
|
cache->memory_allocator(), &value, &charge);
|
|
30
31
|
if (st.ok()) {
|
|
31
32
|
st =
|
|
@@ -273,9 +273,10 @@ class ConcurrentCacheReservationManager
|
|
|
273
273
|
std::size_t total_mem_used = cache_res_mgr_->GetTotalMemoryUsed();
|
|
274
274
|
Status s;
|
|
275
275
|
if (!increase) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
276
|
+
s = cache_res_mgr_->UpdateCacheReservation(
|
|
277
|
+
(total_mem_used > memory_used_delta)
|
|
278
|
+
? (total_mem_used - memory_used_delta)
|
|
279
|
+
: 0);
|
|
279
280
|
} else {
|
|
280
281
|
s = cache_res_mgr_->UpdateCacheReservation(total_mem_used +
|
|
281
282
|
memory_used_delta);
|
|
@@ -175,7 +175,7 @@ class LRUCacheTest : public CacheTest {};
|
|
|
175
175
|
TEST_P(CacheTest, UsageTest) {
|
|
176
176
|
// cache is std::shared_ptr and will be automatically cleaned up.
|
|
177
177
|
const size_t kCapacity = 100000;
|
|
178
|
-
auto cache = NewCache(kCapacity,
|
|
178
|
+
auto cache = NewCache(kCapacity, 6, false, kDontChargeCacheMetadata);
|
|
179
179
|
auto precise_cache = NewCache(kCapacity, 0, false, kFullChargeCacheMetadata);
|
|
180
180
|
ASSERT_EQ(0, cache->GetUsage());
|
|
181
181
|
size_t baseline_meta_usage = precise_cache->GetUsage();
|
|
@@ -193,9 +193,13 @@ TEST_P(CacheTest, UsageTest) {
|
|
|
193
193
|
ASSERT_OK(precise_cache->Insert(key, value, &kDumbHelper, kv_size));
|
|
194
194
|
usage += kv_size;
|
|
195
195
|
ASSERT_EQ(usage, cache->GetUsage());
|
|
196
|
-
if (
|
|
196
|
+
if (GetParam() == kFixedHyperClock) {
|
|
197
197
|
ASSERT_EQ(baseline_meta_usage + usage, precise_cache->GetUsage());
|
|
198
198
|
} else {
|
|
199
|
+
// AutoHyperClockCache meta usage grows in proportion to lifetime
|
|
200
|
+
// max number of entries. LRUCache in proportion to resident number of
|
|
201
|
+
// entries, though there is an untracked component proportional to
|
|
202
|
+
// lifetime max number of entries.
|
|
199
203
|
ASSERT_LT(usage, precise_cache->GetUsage());
|
|
200
204
|
}
|
|
201
205
|
}
|
|
@@ -203,7 +207,11 @@ TEST_P(CacheTest, UsageTest) {
|
|
|
203
207
|
cache->EraseUnRefEntries();
|
|
204
208
|
precise_cache->EraseUnRefEntries();
|
|
205
209
|
ASSERT_EQ(0, cache->GetUsage());
|
|
206
|
-
|
|
210
|
+
if (GetParam() != kAutoHyperClock) {
|
|
211
|
+
// NOTE: AutoHyperClockCache meta usage grows in proportion to lifetime
|
|
212
|
+
// max number of entries.
|
|
213
|
+
ASSERT_EQ(baseline_meta_usage, precise_cache->GetUsage());
|
|
214
|
+
}
|
|
207
215
|
|
|
208
216
|
// make sure the cache will be overloaded
|
|
209
217
|
for (size_t i = 1; i < kCapacity; ++i) {
|
|
@@ -318,7 +326,11 @@ TEST_P(CacheTest, PinnedUsageTest) {
|
|
|
318
326
|
cache->EraseUnRefEntries();
|
|
319
327
|
precise_cache->EraseUnRefEntries();
|
|
320
328
|
ASSERT_EQ(0, cache->GetUsage());
|
|
321
|
-
|
|
329
|
+
if (GetParam() != kAutoHyperClock) {
|
|
330
|
+
// NOTE: AutoHyperClockCache meta usage grows in proportion to lifetime
|
|
331
|
+
// max number of entries.
|
|
332
|
+
ASSERT_EQ(baseline_meta_usage, precise_cache->GetUsage());
|
|
333
|
+
}
|
|
322
334
|
}
|
|
323
335
|
|
|
324
336
|
TEST_P(CacheTest, HitAndMiss) {
|
|
@@ -19,8 +19,10 @@ ChargedCache::ChargedCache(std::shared_ptr<Cache> cache,
|
|
|
19
19
|
|
|
20
20
|
Status ChargedCache::Insert(const Slice& key, ObjectPtr obj,
|
|
21
21
|
const CacheItemHelper* helper, size_t charge,
|
|
22
|
-
Handle** handle, Priority priority
|
|
23
|
-
|
|
22
|
+
Handle** handle, Priority priority,
|
|
23
|
+
const Slice& compressed_val, CompressionType type) {
|
|
24
|
+
Status s = target_->Insert(key, obj, helper, charge, handle, priority,
|
|
25
|
+
compressed_val, type);
|
|
24
26
|
if (s.ok()) {
|
|
25
27
|
// Insert may cause the cache entry eviction if the cache is full. So we
|
|
26
28
|
// directly call the reservation manager to update the total memory used
|
|
@@ -22,9 +22,11 @@ class ChargedCache : public CacheWrapper {
|
|
|
22
22
|
ChargedCache(std::shared_ptr<Cache> cache,
|
|
23
23
|
std::shared_ptr<Cache> block_cache);
|
|
24
24
|
|
|
25
|
-
Status Insert(
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
Status Insert(
|
|
26
|
+
const Slice& key, ObjectPtr obj, const CacheItemHelper* helper,
|
|
27
|
+
size_t charge, Handle** handle = nullptr,
|
|
28
|
+
Priority priority = Priority::LOW, const Slice& compressed_val = Slice(),
|
|
29
|
+
CompressionType type = CompressionType::kNoCompression) override;
|
|
28
30
|
|
|
29
31
|
Cache::Handle* Lookup(const Slice& key, const CacheItemHelper* helper,
|
|
30
32
|
CreateContext* create_context,
|