@nxtedition/rocksdb 6.0.0-alpha.0 → 6.0.2
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/BUILDING.md +10 -0
- package/binding.cc +14 -17
- package/binding.gyp +2 -2
- package/deps/rocksdb/build_version.cc +4 -10
- package/deps/rocksdb/rocksdb/CMakeLists.txt +17 -3
- package/deps/rocksdb/rocksdb/Makefile +57 -86
- package/deps/rocksdb/rocksdb/TARGETS +4 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
- package/deps/rocksdb/rocksdb/common.mk +30 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/builder.cc +11 -4
- package/deps/rocksdb/rocksdb/db/c.cc +45 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +25 -2
- package/deps/rocksdb/rocksdb/db/column_family.cc +4 -3
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +25 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +6 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +69 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +21 -21
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +135 -32
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +9 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +9 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +12 -12
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +15 -14
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_test.cc +44 -42
- package/deps/rocksdb/rocksdb/db/db_test2.cc +23 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +95 -17
- package/deps/rocksdb/rocksdb/db/db_test_util.h +48 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +34 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +3 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +18 -4
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +3 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
- package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
- package/deps/rocksdb/rocksdb/db/table_cache.cc +2 -4
- package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/version_edit.cc +2 -2
- package/deps/rocksdb/rocksdb/db/version_set.cc +2 -2
- package/deps/rocksdb/rocksdb/db/version_set.h +3 -3
- package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +7 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +31 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +359 -275
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
- package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
- package/deps/rocksdb/rocksdb/env/env.cc +0 -60
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
- package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +1 -1
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +69 -45
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +28 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +189 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +2 -8
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +34 -38
- package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
- package/deps/rocksdb/rocksdb/options/db_options.cc +38 -17
- package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +82 -39
- package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -3
- package/deps/rocksdb/rocksdb/options/options_test.cc +115 -59
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
- package/deps/rocksdb/rocksdb/src.mk +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +14 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +85 -41
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +42 -72
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +7 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +6 -3
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +5 -5
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/format.cc +22 -20
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +14 -11
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
- package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
- package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
- package/deps/rocksdb/rocksdb/table/unique_id.cc +57 -25
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +34 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +1 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +254 -98
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +17 -3
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
- package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
- package/deps/rocksdb/rocksdb/util/compression.h +7 -7
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
- package/deps/rocksdb/rocksdb/util/heap.h +5 -3
- package/deps/rocksdb/rocksdb/util/random.cc +1 -5
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
- package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
- package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +40 -31
- package/package.json +2 -2
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/python.mk +0 -9
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
|
@@ -410,6 +410,10 @@ DEFINE_double(read_random_exp_range, 0.0,
|
|
|
410
410
|
|
|
411
411
|
DEFINE_bool(histogram, false, "Print histogram of operation timings");
|
|
412
412
|
|
|
413
|
+
DEFINE_bool(confidence_interval_only, false,
|
|
414
|
+
"Print 95% confidence interval upper and lower bounds only for "
|
|
415
|
+
"aggregate stats.");
|
|
416
|
+
|
|
413
417
|
DEFINE_bool(enable_numa, false,
|
|
414
418
|
"Make operations aware of NUMA architecture and bind memory "
|
|
415
419
|
"and cpus corresponding to nodes together. In NUMA, memory "
|
|
@@ -1125,10 +1129,20 @@ DEFINE_bool(async_io, false,
|
|
|
1125
1129
|
"When set true, RocksDB does asynchronous reads for internal auto "
|
|
1126
1130
|
"readahead prefetching.");
|
|
1127
1131
|
|
|
1128
|
-
DEFINE_bool(
|
|
1129
|
-
"
|
|
1130
|
-
"
|
|
1131
|
-
"
|
|
1132
|
+
DEFINE_bool(charge_compression_dictionary_building_buffer, false,
|
|
1133
|
+
"Setting for "
|
|
1134
|
+
"CacheEntryRoleOptions::charged of"
|
|
1135
|
+
"CacheEntryRole::kCompressionDictionaryBuildingBuffer");
|
|
1136
|
+
|
|
1137
|
+
DEFINE_bool(charge_filter_construction, false,
|
|
1138
|
+
"Setting for "
|
|
1139
|
+
"CacheEntryRoleOptions::charged of"
|
|
1140
|
+
"CacheEntryRole::kFilterConstruction");
|
|
1141
|
+
|
|
1142
|
+
DEFINE_bool(charge_table_reader, false,
|
|
1143
|
+
"Setting for "
|
|
1144
|
+
"CacheEntryRoleOptions::charged of"
|
|
1145
|
+
"CacheEntryRole::kBlockBasedTableReader");
|
|
1132
1146
|
|
|
1133
1147
|
static enum ROCKSDB_NAMESPACE::CompressionType StringToCompressionType(
|
|
1134
1148
|
const char* ctype) {
|
|
@@ -1948,9 +1962,9 @@ class ReporterAgent {
|
|
|
1948
1962
|
auto secs_elapsed =
|
|
1949
1963
|
(clock->NowMicros() - time_started + kMicrosInSecond / 2) /
|
|
1950
1964
|
kMicrosInSecond;
|
|
1951
|
-
std::string report =
|
|
1952
|
-
|
|
1953
|
-
|
|
1965
|
+
std::string report =
|
|
1966
|
+
std::to_string(secs_elapsed) + "," +
|
|
1967
|
+
std::to_string(total_ops_done_snapshot - last_report_) + "\n";
|
|
1954
1968
|
auto s = report_file_->Append(report);
|
|
1955
1969
|
if (s.ok()) {
|
|
1956
1970
|
s = report_file_->Flush();
|
|
@@ -2204,7 +2218,7 @@ class Stats {
|
|
|
2204
2218
|
if (db->GetProperty(
|
|
2205
2219
|
db_with_cfh->cfh[i],
|
|
2206
2220
|
"rocksdb.aggregated-table-properties-at-level" +
|
|
2207
|
-
|
|
2221
|
+
std::to_string(level),
|
|
2208
2222
|
&stats)) {
|
|
2209
2223
|
if (stats.find("# entries=0") == std::string::npos) {
|
|
2210
2224
|
fprintf(stderr, "Level[%d]: %s\n", level,
|
|
@@ -2228,7 +2242,7 @@ class Stats {
|
|
|
2228
2242
|
for (int level = 0; level < FLAGS_num_levels; ++level) {
|
|
2229
2243
|
if (db->GetProperty(
|
|
2230
2244
|
"rocksdb.aggregated-table-properties-at-level" +
|
|
2231
|
-
|
|
2245
|
+
std::to_string(level),
|
|
2232
2246
|
&stats)) {
|
|
2233
2247
|
if (stats.find("# entries=0") == std::string::npos) {
|
|
2234
2248
|
fprintf(stderr, "Level[%d]: %s\n", level, stats.c_str());
|
|
@@ -2261,25 +2275,23 @@ class Stats {
|
|
|
2261
2275
|
if (done_ < 1) done_ = 1;
|
|
2262
2276
|
|
|
2263
2277
|
std::string extra;
|
|
2278
|
+
double elapsed = (finish_ - start_) * 1e-6;
|
|
2264
2279
|
if (bytes_ > 0) {
|
|
2265
2280
|
// Rate is computed on actual elapsed time, not the sum of per-thread
|
|
2266
2281
|
// elapsed times.
|
|
2267
|
-
double elapsed = (finish_ - start_) * 1e-6;
|
|
2268
2282
|
char rate[100];
|
|
2269
2283
|
snprintf(rate, sizeof(rate), "%6.1f MB/s",
|
|
2270
2284
|
(bytes_ / 1048576.0) / elapsed);
|
|
2271
2285
|
extra = rate;
|
|
2272
2286
|
}
|
|
2273
2287
|
AppendWithSpace(&extra, message_);
|
|
2274
|
-
double elapsed = (finish_ - start_) * 1e-6;
|
|
2275
2288
|
double throughput = (double)done_/elapsed;
|
|
2276
2289
|
|
|
2277
|
-
fprintf(stdout,
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
(long)throughput,
|
|
2281
|
-
(extra.empty() ? "" : " "),
|
|
2282
|
-
extra.c_str());
|
|
2290
|
+
fprintf(stdout,
|
|
2291
|
+
"%-12s : %11.3f micros/op %ld ops/sec %.3f seconds %" PRIu64
|
|
2292
|
+
" operations;%s%s\n",
|
|
2293
|
+
name.ToString().c_str(), seconds_ * 1e6 / done_, (long)throughput,
|
|
2294
|
+
elapsed, done_, (extra.empty() ? "" : " "), extra.c_str());
|
|
2283
2295
|
if (FLAGS_histogram) {
|
|
2284
2296
|
for (auto it = hist_.begin(); it != hist_.end(); ++it) {
|
|
2285
2297
|
fprintf(stdout, "Microseconds per %s:\n%s\n",
|
|
@@ -2319,28 +2331,83 @@ class CombinedStats {
|
|
|
2319
2331
|
}
|
|
2320
2332
|
|
|
2321
2333
|
void Report(const std::string& bench_name) {
|
|
2334
|
+
if (throughput_ops_.size() < 2) {
|
|
2335
|
+
// skip if there are not enough samples
|
|
2336
|
+
return;
|
|
2337
|
+
}
|
|
2338
|
+
|
|
2339
|
+
const char* name = bench_name.c_str();
|
|
2340
|
+
int num_runs = static_cast<int>(throughput_ops_.size());
|
|
2341
|
+
|
|
2342
|
+
if (throughput_mbs_.size() == throughput_ops_.size()) {
|
|
2343
|
+
fprintf(stdout,
|
|
2344
|
+
"%s [AVG %d runs] : %d (± %d) ops/sec; %6.1f (± %.1f) MB/sec\n",
|
|
2345
|
+
name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)),
|
|
2346
|
+
static_cast<int>(CalcConfidence95(throughput_ops_)),
|
|
2347
|
+
CalcAvg(throughput_mbs_), CalcConfidence95(throughput_mbs_));
|
|
2348
|
+
} else {
|
|
2349
|
+
fprintf(stdout, "%s [AVG %d runs] : %d (± %d) ops/sec\n", name, num_runs,
|
|
2350
|
+
static_cast<int>(CalcAvg(throughput_ops_)),
|
|
2351
|
+
static_cast<int>(CalcConfidence95(throughput_ops_)));
|
|
2352
|
+
}
|
|
2353
|
+
}
|
|
2354
|
+
|
|
2355
|
+
void ReportWithConfidenceIntervals(const std::string& bench_name) {
|
|
2356
|
+
if (throughput_ops_.size() < 2) {
|
|
2357
|
+
// skip if there are not enough samples
|
|
2358
|
+
return;
|
|
2359
|
+
}
|
|
2360
|
+
|
|
2361
|
+
const char* name = bench_name.c_str();
|
|
2362
|
+
int num_runs = static_cast<int>(throughput_ops_.size());
|
|
2363
|
+
|
|
2364
|
+
int ops_avg = static_cast<int>(CalcAvg(throughput_ops_));
|
|
2365
|
+
int ops_confidence_95 = static_cast<int>(CalcConfidence95(throughput_ops_));
|
|
2366
|
+
|
|
2367
|
+
if (throughput_mbs_.size() == throughput_ops_.size()) {
|
|
2368
|
+
double mbs_avg = CalcAvg(throughput_mbs_);
|
|
2369
|
+
double mbs_confidence_95 = CalcConfidence95(throughput_mbs_);
|
|
2370
|
+
fprintf(stdout,
|
|
2371
|
+
"%s [CI95 %d runs] : (%d, %d) ops/sec; (%.1f, %.1f) MB/sec\n",
|
|
2372
|
+
name, num_runs, ops_avg - ops_confidence_95,
|
|
2373
|
+
ops_avg + ops_confidence_95, mbs_avg - mbs_confidence_95,
|
|
2374
|
+
mbs_avg + mbs_confidence_95);
|
|
2375
|
+
} else {
|
|
2376
|
+
fprintf(stdout, "%s [CI95 %d runs] : (%d, %d) ops/sec\n", name, num_runs,
|
|
2377
|
+
ops_avg - ops_confidence_95, ops_avg + ops_confidence_95);
|
|
2378
|
+
}
|
|
2379
|
+
}
|
|
2380
|
+
|
|
2381
|
+
void ReportFinal(const std::string& bench_name) {
|
|
2382
|
+
if (throughput_ops_.size() < 2) {
|
|
2383
|
+
// skip if there are not enough samples
|
|
2384
|
+
return;
|
|
2385
|
+
}
|
|
2386
|
+
|
|
2322
2387
|
const char* name = bench_name.c_str();
|
|
2323
2388
|
int num_runs = static_cast<int>(throughput_ops_.size());
|
|
2324
2389
|
|
|
2325
2390
|
if (throughput_mbs_.size() == throughput_ops_.size()) {
|
|
2326
2391
|
fprintf(stdout,
|
|
2327
|
-
"%s [AVG %d runs] : %d ops/sec; %6.1f MB/sec\n"
|
|
2392
|
+
"%s [AVG %d runs] : %d (± %d) ops/sec; %6.1f (± %.1f) MB/sec\n"
|
|
2328
2393
|
"%s [MEDIAN %d runs] : %d ops/sec; %6.1f MB/sec\n",
|
|
2329
2394
|
name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)),
|
|
2330
|
-
|
|
2331
|
-
|
|
2395
|
+
static_cast<int>(CalcConfidence95(throughput_ops_)),
|
|
2396
|
+
CalcAvg(throughput_mbs_), CalcConfidence95(throughput_mbs_), name,
|
|
2397
|
+
num_runs, static_cast<int>(CalcMedian(throughput_ops_)),
|
|
2332
2398
|
CalcMedian(throughput_mbs_));
|
|
2333
2399
|
} else {
|
|
2334
2400
|
fprintf(stdout,
|
|
2335
|
-
"%s [AVG %d runs] : %d ops/sec\n"
|
|
2401
|
+
"%s [AVG %d runs] : %d (± %d) ops/sec\n"
|
|
2336
2402
|
"%s [MEDIAN %d runs] : %d ops/sec\n",
|
|
2337
|
-
name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)),
|
|
2403
|
+
name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)),
|
|
2404
|
+
static_cast<int>(CalcConfidence95(throughput_ops_)), name,
|
|
2338
2405
|
num_runs, static_cast<int>(CalcMedian(throughput_ops_)));
|
|
2339
2406
|
}
|
|
2340
2407
|
}
|
|
2341
2408
|
|
|
2342
2409
|
private:
|
|
2343
|
-
double CalcAvg(std::vector<double
|
|
2410
|
+
double CalcAvg(std::vector<double>& data) {
|
|
2344
2411
|
double avg = 0;
|
|
2345
2412
|
for (double x : data) {
|
|
2346
2413
|
avg += x;
|
|
@@ -2349,7 +2416,20 @@ class CombinedStats {
|
|
|
2349
2416
|
return avg;
|
|
2350
2417
|
}
|
|
2351
2418
|
|
|
2352
|
-
|
|
2419
|
+
// Calculates 95% CI assuming a normal distribution of samples.
|
|
2420
|
+
// Samples are not from a normal distribution, but it still
|
|
2421
|
+
// provides useful approximation.
|
|
2422
|
+
double CalcConfidence95(std::vector<double>& data) {
|
|
2423
|
+
assert(data.size() > 1);
|
|
2424
|
+
double avg = CalcAvg(data);
|
|
2425
|
+
double std_error = CalcStdDev(data, avg) / std::sqrt(data.size());
|
|
2426
|
+
|
|
2427
|
+
// Z score for the 97.5 percentile
|
|
2428
|
+
// see https://en.wikipedia.org/wiki/1.96
|
|
2429
|
+
return 1.959964 * std_error;
|
|
2430
|
+
}
|
|
2431
|
+
|
|
2432
|
+
double CalcMedian(std::vector<double>& data) {
|
|
2353
2433
|
assert(data.size() > 0);
|
|
2354
2434
|
std::sort(data.begin(), data.end());
|
|
2355
2435
|
|
|
@@ -2363,6 +2443,18 @@ class CombinedStats {
|
|
|
2363
2443
|
}
|
|
2364
2444
|
}
|
|
2365
2445
|
|
|
2446
|
+
double CalcStdDev(std::vector<double>& data, double average) {
|
|
2447
|
+
assert(data.size() > 1);
|
|
2448
|
+
double squared_sum = 0.0;
|
|
2449
|
+
for (double x : data) {
|
|
2450
|
+
squared_sum += std::pow(x - average, 2);
|
|
2451
|
+
}
|
|
2452
|
+
|
|
2453
|
+
// using samples count - 1 following Bessel's correction
|
|
2454
|
+
// see https://en.wikipedia.org/wiki/Bessel%27s_correction
|
|
2455
|
+
return std::sqrt(squared_sum / (data.size() - 1));
|
|
2456
|
+
}
|
|
2457
|
+
|
|
2366
2458
|
std::vector<double> throughput_ops_;
|
|
2367
2459
|
std::vector<double> throughput_mbs_;
|
|
2368
2460
|
};
|
|
@@ -3060,7 +3152,7 @@ class Benchmark {
|
|
|
3060
3152
|
}
|
|
3061
3153
|
#endif
|
|
3062
3154
|
}
|
|
3063
|
-
return base_name +
|
|
3155
|
+
return base_name + std::to_string(id);
|
|
3064
3156
|
}
|
|
3065
3157
|
|
|
3066
3158
|
void VerifyDBFromDB(std::string& truth_db_name) {
|
|
@@ -3525,9 +3617,14 @@ class Benchmark {
|
|
|
3525
3617
|
for (int i = 0; i < num_repeat; i++) {
|
|
3526
3618
|
Stats stats = RunBenchmark(num_threads, name, method);
|
|
3527
3619
|
combined_stats.AddStats(stats);
|
|
3620
|
+
if (FLAGS_confidence_interval_only) {
|
|
3621
|
+
combined_stats.ReportWithConfidenceIntervals(name);
|
|
3622
|
+
} else {
|
|
3623
|
+
combined_stats.Report(name);
|
|
3624
|
+
}
|
|
3528
3625
|
}
|
|
3529
3626
|
if (num_repeat > 1) {
|
|
3530
|
-
combined_stats.
|
|
3627
|
+
combined_stats.ReportFinal(name);
|
|
3531
3628
|
}
|
|
3532
3629
|
}
|
|
3533
3630
|
if (post_process_method != nullptr) {
|
|
@@ -3704,7 +3801,7 @@ class Benchmark {
|
|
|
3704
3801
|
static inline void ChecksumBenchmark(FnType fn, ThreadState* thread,
|
|
3705
3802
|
Args... args) {
|
|
3706
3803
|
const int size = FLAGS_block_size; // use --block_size option for db_bench
|
|
3707
|
-
std::string labels = "(" +
|
|
3804
|
+
std::string labels = "(" + std::to_string(FLAGS_block_size) + " per op)";
|
|
3708
3805
|
const char* label = labels.c_str();
|
|
3709
3806
|
|
|
3710
3807
|
std::string data(size, 'x');
|
|
@@ -3857,6 +3954,26 @@ class Benchmark {
|
|
|
3857
3954
|
assert(db_.db == nullptr);
|
|
3858
3955
|
|
|
3859
3956
|
options.env = FLAGS_env;
|
|
3957
|
+
options.wal_dir = FLAGS_wal_dir;
|
|
3958
|
+
options.dump_malloc_stats = FLAGS_dump_malloc_stats;
|
|
3959
|
+
options.stats_dump_period_sec =
|
|
3960
|
+
static_cast<unsigned int>(FLAGS_stats_dump_period_sec);
|
|
3961
|
+
options.stats_persist_period_sec =
|
|
3962
|
+
static_cast<unsigned int>(FLAGS_stats_persist_period_sec);
|
|
3963
|
+
options.persist_stats_to_disk = FLAGS_persist_stats_to_disk;
|
|
3964
|
+
options.stats_history_buffer_size =
|
|
3965
|
+
static_cast<size_t>(FLAGS_stats_history_buffer_size);
|
|
3966
|
+
options.avoid_flush_during_recovery = FLAGS_avoid_flush_during_recovery;
|
|
3967
|
+
|
|
3968
|
+
options.compression_opts.level = FLAGS_compression_level;
|
|
3969
|
+
options.compression_opts.max_dict_bytes = FLAGS_compression_max_dict_bytes;
|
|
3970
|
+
options.compression_opts.zstd_max_train_bytes =
|
|
3971
|
+
FLAGS_compression_zstd_max_train_bytes;
|
|
3972
|
+
options.compression_opts.parallel_threads =
|
|
3973
|
+
FLAGS_compression_parallel_threads;
|
|
3974
|
+
options.compression_opts.max_dict_buffer_bytes =
|
|
3975
|
+
FLAGS_compression_max_dict_buffer_bytes;
|
|
3976
|
+
|
|
3860
3977
|
options.max_open_files = FLAGS_open_files;
|
|
3861
3978
|
if (FLAGS_cost_write_buffer_to_cache || FLAGS_db_write_buffer_size != 0) {
|
|
3862
3979
|
options.write_buffer_manager.reset(
|
|
@@ -4055,8 +4172,21 @@ class Benchmark {
|
|
|
4055
4172
|
true;
|
|
4056
4173
|
}
|
|
4057
4174
|
block_based_options.block_cache = cache_;
|
|
4058
|
-
block_based_options.
|
|
4059
|
-
|
|
4175
|
+
block_based_options.cache_usage_options.options_overrides.insert(
|
|
4176
|
+
{CacheEntryRole::kCompressionDictionaryBuildingBuffer,
|
|
4177
|
+
{/*.charged = */ FLAGS_charge_compression_dictionary_building_buffer
|
|
4178
|
+
? CacheEntryRoleOptions::Decision::kEnabled
|
|
4179
|
+
: CacheEntryRoleOptions::Decision::kDisabled}});
|
|
4180
|
+
block_based_options.cache_usage_options.options_overrides.insert(
|
|
4181
|
+
{CacheEntryRole::kFilterConstruction,
|
|
4182
|
+
{/*.charged = */ FLAGS_charge_filter_construction
|
|
4183
|
+
? CacheEntryRoleOptions::Decision::kEnabled
|
|
4184
|
+
: CacheEntryRoleOptions::Decision::kDisabled}});
|
|
4185
|
+
block_based_options.cache_usage_options.options_overrides.insert(
|
|
4186
|
+
{CacheEntryRole::kBlockBasedTableReader,
|
|
4187
|
+
{/*.charged = */ FLAGS_charge_table_reader
|
|
4188
|
+
? CacheEntryRoleOptions::Decision::kEnabled
|
|
4189
|
+
: CacheEntryRoleOptions::Decision::kDisabled}});
|
|
4060
4190
|
block_based_options.block_cache_compressed = compressed_cache_;
|
|
4061
4191
|
block_based_options.block_size = FLAGS_block_size;
|
|
4062
4192
|
block_based_options.block_restart_interval = FLAGS_block_restart_interval;
|
|
@@ -4285,94 +4415,104 @@ class Benchmark {
|
|
|
4285
4415
|
}
|
|
4286
4416
|
|
|
4287
4417
|
void InitializeOptionsGeneral(Options* opts) {
|
|
4418
|
+
// Be careful about what is set here to avoid accidentally overwriting
|
|
4419
|
+
// settings already configured by OPTIONS file. Only configure settings that
|
|
4420
|
+
// are needed for the benchmark to run, settings for shared objects that
|
|
4421
|
+
// were not configured already, settings that require dynamically invoking
|
|
4422
|
+
// APIs, and settings for the benchmark itself.
|
|
4288
4423
|
Options& options = *opts;
|
|
4289
4424
|
|
|
4290
|
-
|
|
4291
|
-
|
|
4292
|
-
options.
|
|
4293
|
-
options.create_if_missing =
|
|
4294
|
-
|
|
4295
|
-
options.
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
static_cast<unsigned int>(FLAGS_stats_persist_period_sec);
|
|
4299
|
-
options.persist_stats_to_disk = FLAGS_persist_stats_to_disk;
|
|
4300
|
-
options.stats_history_buffer_size =
|
|
4301
|
-
static_cast<size_t>(FLAGS_stats_history_buffer_size);
|
|
4302
|
-
options.avoid_flush_during_recovery = FLAGS_avoid_flush_during_recovery;
|
|
4425
|
+
// Always set these since they are harmless when not needed and prevent
|
|
4426
|
+
// a guaranteed failure when they are needed.
|
|
4427
|
+
options.create_missing_column_families = true;
|
|
4428
|
+
options.create_if_missing = true;
|
|
4429
|
+
|
|
4430
|
+
if (options.statistics == nullptr) {
|
|
4431
|
+
options.statistics = dbstats;
|
|
4432
|
+
}
|
|
4303
4433
|
|
|
4304
|
-
options.compression_opts.level = FLAGS_compression_level;
|
|
4305
|
-
options.compression_opts.max_dict_bytes = FLAGS_compression_max_dict_bytes;
|
|
4306
|
-
options.compression_opts.zstd_max_train_bytes =
|
|
4307
|
-
FLAGS_compression_zstd_max_train_bytes;
|
|
4308
|
-
options.compression_opts.parallel_threads =
|
|
4309
|
-
FLAGS_compression_parallel_threads;
|
|
4310
|
-
options.compression_opts.max_dict_buffer_bytes =
|
|
4311
|
-
FLAGS_compression_max_dict_buffer_bytes;
|
|
4312
|
-
// If this is a block based table, set some related options
|
|
4313
4434
|
auto table_options =
|
|
4314
4435
|
options.table_factory->GetOptions<BlockBasedTableOptions>();
|
|
4315
4436
|
if (table_options != nullptr) {
|
|
4316
|
-
if (FLAGS_cache_size) {
|
|
4437
|
+
if (FLAGS_cache_size > 0) {
|
|
4438
|
+
// This violates this function's rules on when to set options. But we
|
|
4439
|
+
// have to do it because the case of unconfigured block cache in OPTIONS
|
|
4440
|
+
// file is indistinguishable (it is sanitized to 8MB by this point, not
|
|
4441
|
+
// nullptr), and our regression tests assume this will be the shared
|
|
4442
|
+
// block cache, even with OPTIONS file provided.
|
|
4317
4443
|
table_options->block_cache = cache_;
|
|
4318
4444
|
}
|
|
4319
|
-
if (
|
|
4320
|
-
|
|
4321
|
-
|
|
4322
|
-
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4445
|
+
if (table_options->filter_policy == nullptr) {
|
|
4446
|
+
if (FLAGS_bloom_bits < 0) {
|
|
4447
|
+
table_options->filter_policy = BlockBasedTableOptions().filter_policy;
|
|
4448
|
+
} else if (FLAGS_bloom_bits == 0) {
|
|
4449
|
+
table_options->filter_policy.reset();
|
|
4450
|
+
} else if (FLAGS_use_block_based_filter) {
|
|
4451
|
+
// Use back-door way of enabling obsolete block-based Bloom
|
|
4452
|
+
Status s = FilterPolicy::CreateFromString(
|
|
4453
|
+
ConfigOptions(),
|
|
4454
|
+
"rocksdb.internal.DeprecatedBlockBasedBloomFilter:" +
|
|
4455
|
+
std::to_string(FLAGS_bloom_bits),
|
|
4456
|
+
&table_options->filter_policy);
|
|
4457
|
+
if (!s.ok()) {
|
|
4458
|
+
fprintf(stderr,
|
|
4459
|
+
"failure creating obsolete block-based filter: %s\n",
|
|
4460
|
+
s.ToString().c_str());
|
|
4461
|
+
exit(1);
|
|
4462
|
+
}
|
|
4463
|
+
} else {
|
|
4464
|
+
table_options->filter_policy.reset(
|
|
4465
|
+
FLAGS_use_ribbon_filter ? NewRibbonFilterPolicy(FLAGS_bloom_bits)
|
|
4466
|
+
: NewBloomFilterPolicy(FLAGS_bloom_bits));
|
|
4334
4467
|
}
|
|
4335
|
-
} else {
|
|
4336
|
-
table_options->filter_policy.reset(
|
|
4337
|
-
FLAGS_use_ribbon_filter ? NewRibbonFilterPolicy(FLAGS_bloom_bits)
|
|
4338
|
-
: NewBloomFilterPolicy(FLAGS_bloom_bits));
|
|
4339
4468
|
}
|
|
4340
4469
|
}
|
|
4341
|
-
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
|
|
4470
|
+
|
|
4471
|
+
if (options.row_cache == nullptr) {
|
|
4472
|
+
if (FLAGS_row_cache_size) {
|
|
4473
|
+
if (FLAGS_cache_numshardbits >= 1) {
|
|
4474
|
+
options.row_cache =
|
|
4475
|
+
NewLRUCache(FLAGS_row_cache_size, FLAGS_cache_numshardbits);
|
|
4476
|
+
} else {
|
|
4477
|
+
options.row_cache = NewLRUCache(FLAGS_row_cache_size);
|
|
4478
|
+
}
|
|
4347
4479
|
}
|
|
4348
4480
|
}
|
|
4481
|
+
|
|
4482
|
+
if (options.env == Env::Default()) {
|
|
4483
|
+
options.env = FLAGS_env;
|
|
4484
|
+
}
|
|
4349
4485
|
if (FLAGS_enable_io_prio) {
|
|
4350
|
-
|
|
4351
|
-
|
|
4486
|
+
options.env->LowerThreadPoolIOPriority(Env::LOW);
|
|
4487
|
+
options.env->LowerThreadPoolIOPriority(Env::HIGH);
|
|
4352
4488
|
}
|
|
4353
4489
|
if (FLAGS_enable_cpu_prio) {
|
|
4354
|
-
|
|
4355
|
-
|
|
4490
|
+
options.env->LowerThreadPoolCPUPriority(Env::LOW);
|
|
4491
|
+
options.env->LowerThreadPoolCPUPriority(Env::HIGH);
|
|
4356
4492
|
}
|
|
4357
|
-
|
|
4493
|
+
|
|
4358
4494
|
if (FLAGS_sine_write_rate) {
|
|
4359
4495
|
FLAGS_benchmark_write_rate_limit = static_cast<uint64_t>(SineRate(0));
|
|
4360
4496
|
}
|
|
4361
4497
|
|
|
4362
|
-
if (
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4498
|
+
if (options.rate_limiter == nullptr) {
|
|
4499
|
+
if (FLAGS_rate_limiter_bytes_per_sec > 0) {
|
|
4500
|
+
options.rate_limiter.reset(NewGenericRateLimiter(
|
|
4501
|
+
FLAGS_rate_limiter_bytes_per_sec,
|
|
4502
|
+
FLAGS_rate_limiter_refill_period_us, 10 /* fairness */,
|
|
4503
|
+
FLAGS_rate_limit_bg_reads ? RateLimiter::Mode::kReadsOnly
|
|
4504
|
+
: RateLimiter::Mode::kWritesOnly,
|
|
4505
|
+
FLAGS_rate_limiter_auto_tuned));
|
|
4506
|
+
}
|
|
4369
4507
|
}
|
|
4370
4508
|
|
|
4371
4509
|
options.listeners.emplace_back(listener_);
|
|
4372
4510
|
|
|
4373
|
-
if (
|
|
4374
|
-
|
|
4375
|
-
|
|
4511
|
+
if (options.file_checksum_gen_factory == nullptr) {
|
|
4512
|
+
if (FLAGS_file_checksum) {
|
|
4513
|
+
options.file_checksum_gen_factory.reset(
|
|
4514
|
+
new FileChecksumGenCrc32cFactory());
|
|
4515
|
+
}
|
|
4376
4516
|
}
|
|
4377
4517
|
|
|
4378
4518
|
if (FLAGS_num_multi_db <= 1) {
|
|
@@ -4391,9 +4531,11 @@ class Benchmark {
|
|
|
4391
4531
|
}
|
|
4392
4532
|
|
|
4393
4533
|
// KeepFilter is a noop filter, this can be used to test compaction filter
|
|
4394
|
-
if (
|
|
4395
|
-
|
|
4396
|
-
|
|
4534
|
+
if (options.compaction_filter == nullptr) {
|
|
4535
|
+
if (FLAGS_use_keep_filter) {
|
|
4536
|
+
options.compaction_filter = new KeepFilter();
|
|
4537
|
+
fprintf(stdout, "A noop compaction filter is used\n");
|
|
4538
|
+
}
|
|
4397
4539
|
}
|
|
4398
4540
|
|
|
4399
4541
|
if (FLAGS_use_existing_keys) {
|
|
@@ -7900,14 +8042,27 @@ class Benchmark {
|
|
|
7900
8042
|
flush_opt.wait = true;
|
|
7901
8043
|
|
|
7902
8044
|
if (db_.db != nullptr) {
|
|
7903
|
-
Status s
|
|
8045
|
+
Status s;
|
|
8046
|
+
if (FLAGS_num_column_families > 1) {
|
|
8047
|
+
s = db_.db->Flush(flush_opt, db_.cfh);
|
|
8048
|
+
} else {
|
|
8049
|
+
s = db_.db->Flush(flush_opt, db_.db->DefaultColumnFamily());
|
|
8050
|
+
}
|
|
8051
|
+
|
|
7904
8052
|
if (!s.ok()) {
|
|
7905
8053
|
fprintf(stderr, "Flush failed: %s\n", s.ToString().c_str());
|
|
7906
8054
|
exit(1);
|
|
7907
8055
|
}
|
|
7908
8056
|
} else {
|
|
7909
8057
|
for (const auto& db_with_cfh : multi_dbs_) {
|
|
7910
|
-
Status s
|
|
8058
|
+
Status s;
|
|
8059
|
+
if (FLAGS_num_column_families > 1) {
|
|
8060
|
+
s = db_with_cfh.db->Flush(flush_opt, db_with_cfh.cfh);
|
|
8061
|
+
} else {
|
|
8062
|
+
s = db_with_cfh.db->Flush(flush_opt,
|
|
8063
|
+
db_with_cfh.db->DefaultColumnFamily());
|
|
8064
|
+
}
|
|
8065
|
+
|
|
7911
8066
|
if (!s.ok()) {
|
|
7912
8067
|
fprintf(stderr, "Flush failed: %s\n", s.ToString().c_str());
|
|
7913
8068
|
exit(1);
|
|
@@ -7941,7 +8096,8 @@ class Benchmark {
|
|
|
7941
8096
|
}
|
|
7942
8097
|
|
|
7943
8098
|
std::unique_ptr<StatsHistoryIterator> shi;
|
|
7944
|
-
Status s =
|
|
8099
|
+
Status s =
|
|
8100
|
+
db->GetStatsHistory(0, std::numeric_limits<uint64_t>::max(), &shi);
|
|
7945
8101
|
if (!s.ok()) {
|
|
7946
8102
|
fprintf(stdout, "%s\n", s.ToString().c_str());
|
|
7947
8103
|
return;
|
|
@@ -45,8 +45,8 @@ class SanityTest {
|
|
|
45
45
|
return s;
|
|
46
46
|
}
|
|
47
47
|
for (int i = 0; i < 1000000; ++i) {
|
|
48
|
-
std::string k = "key" +
|
|
49
|
-
std::string v = "value" +
|
|
48
|
+
std::string k = "key" + std::to_string(i);
|
|
49
|
+
std::string v = "value" + std::to_string(i);
|
|
50
50
|
s = db->Put(WriteOptions(), Slice(k), Slice(v));
|
|
51
51
|
if (!s.ok()) {
|
|
52
52
|
return s;
|
|
@@ -63,8 +63,8 @@ class SanityTest {
|
|
|
63
63
|
return s;
|
|
64
64
|
}
|
|
65
65
|
for (int i = 0; i < 1000000; ++i) {
|
|
66
|
-
std::string k = "key" +
|
|
67
|
-
std::string v = "value" +
|
|
66
|
+
std::string k = "key" + std::to_string(i);
|
|
67
|
+
std::string v = "value" + std::to_string(i);
|
|
68
68
|
std::string result;
|
|
69
69
|
s = db->Get(ReadOptions(), Slice(k), &result);
|
|
70
70
|
if (!s.ok()) {
|