@nxtedition/rocksdb 6.0.1 → 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 +2 -2
- package/binding.cc +14 -17
- 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 +8 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/python.mk +0 -9
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
|
@@ -111,6 +111,7 @@ class MultiOpsTxnsStressTest : public StressTest {
|
|
|
111
111
|
public:
|
|
112
112
|
class Record {
|
|
113
113
|
public:
|
|
114
|
+
static constexpr uint32_t kMetadataPrefix = 0;
|
|
114
115
|
static constexpr uint32_t kPrimaryIndexId = 1;
|
|
115
116
|
static constexpr uint32_t kSecondaryIndexId = 2;
|
|
116
117
|
|
|
@@ -261,6 +262,13 @@ class MultiOpsTxnsStressTest : public StressTest {
|
|
|
261
262
|
ThreadState* thread,
|
|
262
263
|
const std::vector<int>& rand_column_families) override;
|
|
263
264
|
|
|
265
|
+
void RegisterAdditionalListeners() override;
|
|
266
|
+
|
|
267
|
+
#ifndef ROCKSDB_LITE
|
|
268
|
+
void PrepareTxnDbOptions(SharedState* /*shared*/,
|
|
269
|
+
TransactionDBOptions& txn_db_opts) override;
|
|
270
|
+
#endif // !ROCKSDB_LITE
|
|
271
|
+
|
|
264
272
|
Status PrimaryKeyUpdateTxn(ThreadState* thread, uint32_t old_a,
|
|
265
273
|
uint32_t old_a_pos, uint32_t new_a);
|
|
266
274
|
|
|
@@ -280,7 +288,17 @@ class MultiOpsTxnsStressTest : public StressTest {
|
|
|
280
288
|
VerifyDb(thread);
|
|
281
289
|
}
|
|
282
290
|
|
|
291
|
+
void VerifyPkSkFast(int job_id);
|
|
292
|
+
|
|
283
293
|
protected:
|
|
294
|
+
class Counter {
|
|
295
|
+
public:
|
|
296
|
+
uint64_t Next() { return value_.fetch_add(1); }
|
|
297
|
+
|
|
298
|
+
private:
|
|
299
|
+
std::atomic<uint64_t> value_ = Env::Default()->NowNanos();
|
|
300
|
+
};
|
|
301
|
+
|
|
284
302
|
using KeySet = std::set<uint32_t>;
|
|
285
303
|
class KeyGenerator {
|
|
286
304
|
public:
|
|
@@ -330,9 +348,21 @@ class MultiOpsTxnsStressTest : public StressTest {
|
|
|
330
348
|
|
|
331
349
|
uint32_t GenerateNextC(ThreadState* thread);
|
|
332
350
|
|
|
351
|
+
#ifndef ROCKSDB_LITE
|
|
352
|
+
// Some applications, e.g. MyRocks writes a KV pair to the database via
|
|
353
|
+
// commit-time-write-batch (ctwb) in additional to the transaction's regular
|
|
354
|
+
// write batch. The key is usually constant representing some system
|
|
355
|
+
// metadata, while the value is monoticailly increasing which represents the
|
|
356
|
+
// actual value of the metadata. Method WriteToCommitTimeWriteBatch()
|
|
357
|
+
// emulates this scenario.
|
|
358
|
+
Status WriteToCommitTimeWriteBatch(Transaction& txn);
|
|
359
|
+
#endif //! ROCKSDB_LITE
|
|
360
|
+
|
|
333
361
|
std::vector<std::unique_ptr<KeyGenerator>> key_gen_for_a_;
|
|
334
362
|
std::vector<std::unique_ptr<KeyGenerator>> key_gen_for_c_;
|
|
335
363
|
|
|
364
|
+
Counter counter_{};
|
|
365
|
+
|
|
336
366
|
private:
|
|
337
367
|
struct KeySpaces {
|
|
338
368
|
uint32_t lb_a = 0;
|
|
@@ -370,5 +400,38 @@ class InvariantChecker {
|
|
|
370
400
|
"MultiOpsTxnsStressTest::Record::c_ must be 4 bytes");
|
|
371
401
|
};
|
|
372
402
|
|
|
403
|
+
class MultiOpsTxnsStressListener : public EventListener {
|
|
404
|
+
public:
|
|
405
|
+
explicit MultiOpsTxnsStressListener(MultiOpsTxnsStressTest* stress_test)
|
|
406
|
+
: stress_test_(stress_test) {
|
|
407
|
+
assert(stress_test_);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
#ifndef ROCKSDB_LITE
|
|
411
|
+
~MultiOpsTxnsStressListener() override {}
|
|
412
|
+
|
|
413
|
+
void OnFlushCompleted(DB* db, const FlushJobInfo& info) override {
|
|
414
|
+
assert(db);
|
|
415
|
+
#ifdef NDEBUG
|
|
416
|
+
(void)db;
|
|
417
|
+
#endif
|
|
418
|
+
assert(info.cf_id == 0);
|
|
419
|
+
stress_test_->VerifyPkSkFast(info.job_id);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
void OnCompactionCompleted(DB* db, const CompactionJobInfo& info) override {
|
|
423
|
+
assert(db);
|
|
424
|
+
#ifdef NDEBUG
|
|
425
|
+
(void)db;
|
|
426
|
+
#endif
|
|
427
|
+
assert(info.cf_id == 0);
|
|
428
|
+
stress_test_->VerifyPkSkFast(info.job_id);
|
|
429
|
+
}
|
|
430
|
+
#endif //! ROCKSDB_LITE
|
|
431
|
+
|
|
432
|
+
private:
|
|
433
|
+
MultiOpsTxnsStressTest* const stress_test_ = nullptr;
|
|
434
|
+
};
|
|
435
|
+
|
|
373
436
|
} // namespace ROCKSDB_NAMESPACE
|
|
374
437
|
#endif // GFLAGS
|
|
@@ -9,9 +9,8 @@
|
|
|
9
9
|
|
|
10
10
|
#ifdef GFLAGS
|
|
11
11
|
#include "db_stress_tool/db_stress_common.h"
|
|
12
|
-
#ifndef NDEBUG
|
|
13
12
|
#include "utilities/fault_injection_fs.h"
|
|
14
|
-
#
|
|
13
|
+
#include "rocksdb/utilities/transaction_db.h"
|
|
15
14
|
|
|
16
15
|
namespace ROCKSDB_NAMESPACE {
|
|
17
16
|
class NonBatchedOpsStressTest : public StressTest {
|
|
@@ -84,8 +83,8 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
84
83
|
// move to the next item in the iterator
|
|
85
84
|
s = Status::NotFound();
|
|
86
85
|
}
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
VerifyOrSyncValue(static_cast<int>(cf), i, options, shared, from_db,
|
|
87
|
+
s, true);
|
|
89
88
|
if (from_db.length()) {
|
|
90
89
|
PrintKeyValue(static_cast<int>(cf), static_cast<uint32_t>(i),
|
|
91
90
|
from_db.data(), from_db.length());
|
|
@@ -101,8 +100,8 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
101
100
|
std::string keystr = Key(i);
|
|
102
101
|
Slice k = keystr;
|
|
103
102
|
Status s = db_->Get(options, column_families_[cf], k, &from_db);
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
VerifyOrSyncValue(static_cast<int>(cf), i, options, shared, from_db,
|
|
104
|
+
s, true);
|
|
106
105
|
if (from_db.length()) {
|
|
107
106
|
PrintKeyValue(static_cast<int>(cf), static_cast<uint32_t>(i),
|
|
108
107
|
from_db.data(), from_db.length());
|
|
@@ -130,8 +129,8 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
130
129
|
for (size_t j = 0; j < batch_size; ++j) {
|
|
131
130
|
Status s = statuses[j];
|
|
132
131
|
std::string from_db = values[j].ToString();
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
VerifyOrSyncValue(static_cast<int>(cf), i + j, options, shared,
|
|
133
|
+
from_db, s, true);
|
|
135
134
|
if (from_db.length()) {
|
|
136
135
|
PrintKeyValue(static_cast<int>(cf), static_cast<uint32_t>(i + j),
|
|
137
136
|
from_db.data(), from_db.length());
|
|
@@ -174,8 +173,8 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
174
173
|
if (number_of_operands) {
|
|
175
174
|
from_db = values[number_of_operands - 1].ToString();
|
|
176
175
|
}
|
|
177
|
-
|
|
178
|
-
|
|
176
|
+
VerifyOrSyncValue(static_cast<int>(cf), i, options, shared, from_db,
|
|
177
|
+
s, true);
|
|
179
178
|
if (from_db.length()) {
|
|
180
179
|
PrintKeyValue(static_cast<int>(cf), static_cast<uint32_t>(i),
|
|
181
180
|
from_db.data(), from_db.length());
|
|
@@ -190,7 +189,8 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
190
189
|
if (thread->rand.OneInOpt(FLAGS_clear_column_family_one_in)) {
|
|
191
190
|
// drop column family and then create it again (can't drop default)
|
|
192
191
|
int cf = thread->rand.Next() % (FLAGS_column_families - 1) + 1;
|
|
193
|
-
std::string new_name =
|
|
192
|
+
std::string new_name =
|
|
193
|
+
std::to_string(new_column_family_name_.fetch_add(1));
|
|
194
194
|
{
|
|
195
195
|
MutexLock l(thread->shared->GetMutex());
|
|
196
196
|
fprintf(
|
|
@@ -233,20 +233,15 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
233
233
|
std::string from_db;
|
|
234
234
|
int error_count = 0;
|
|
235
235
|
|
|
236
|
-
#ifndef NDEBUG
|
|
237
236
|
if (fault_fs_guard) {
|
|
238
237
|
fault_fs_guard->EnableErrorInjection();
|
|
239
238
|
SharedState::ignore_read_error = false;
|
|
240
239
|
}
|
|
241
|
-
#endif // NDEBUG
|
|
242
240
|
Status s = db_->Get(read_opts, cfh, key, &from_db);
|
|
243
|
-
#ifndef NDEBUG
|
|
244
241
|
if (fault_fs_guard) {
|
|
245
242
|
error_count = fault_fs_guard->GetAndResetErrorCount();
|
|
246
243
|
}
|
|
247
|
-
#endif // NDEBUG
|
|
248
244
|
if (s.ok()) {
|
|
249
|
-
#ifndef NDEBUG
|
|
250
245
|
if (fault_fs_guard) {
|
|
251
246
|
if (error_count && !SharedState::ignore_read_error) {
|
|
252
247
|
// Grab mutex so multiple thread don't try to print the
|
|
@@ -258,7 +253,6 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
258
253
|
std::terminate();
|
|
259
254
|
}
|
|
260
255
|
}
|
|
261
|
-
#endif // NDEBUG
|
|
262
256
|
// found case
|
|
263
257
|
thread->stats.AddGets(1, 1);
|
|
264
258
|
} else if (s.IsNotFound()) {
|
|
@@ -272,11 +266,9 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
272
266
|
thread->stats.AddVerifiedErrors(1);
|
|
273
267
|
}
|
|
274
268
|
}
|
|
275
|
-
#ifndef NDEBUG
|
|
276
269
|
if (fault_fs_guard) {
|
|
277
270
|
fault_fs_guard->DisableErrorInjection();
|
|
278
271
|
}
|
|
279
|
-
#endif // NDEBUG
|
|
280
272
|
return s;
|
|
281
273
|
}
|
|
282
274
|
|
|
@@ -364,19 +356,15 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
364
356
|
}
|
|
365
357
|
|
|
366
358
|
if (!use_txn) {
|
|
367
|
-
#ifndef NDEBUG
|
|
368
359
|
if (fault_fs_guard) {
|
|
369
360
|
fault_fs_guard->EnableErrorInjection();
|
|
370
361
|
SharedState::ignore_read_error = false;
|
|
371
362
|
}
|
|
372
|
-
#endif // NDEBUG
|
|
373
363
|
db_->MultiGet(readoptionscopy, cfh, num_keys, keys.data(), values.data(),
|
|
374
364
|
statuses.data());
|
|
375
|
-
#ifndef NDEBUG
|
|
376
365
|
if (fault_fs_guard) {
|
|
377
366
|
error_count = fault_fs_guard->GetAndResetErrorCount();
|
|
378
367
|
}
|
|
379
|
-
#endif // NDEBUG
|
|
380
368
|
} else {
|
|
381
369
|
#ifndef ROCKSDB_LITE
|
|
382
370
|
txn->MultiGet(readoptionscopy, cfh, num_keys, keys.data(), values.data(),
|
|
@@ -384,7 +372,6 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
384
372
|
#endif
|
|
385
373
|
}
|
|
386
374
|
|
|
387
|
-
#ifndef NDEBUG
|
|
388
375
|
if (fault_fs_guard && error_count && !SharedState::ignore_read_error) {
|
|
389
376
|
int stat_nok = 0;
|
|
390
377
|
for (const auto& s : statuses) {
|
|
@@ -408,7 +395,6 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
408
395
|
if (fault_fs_guard) {
|
|
409
396
|
fault_fs_guard->DisableErrorInjection();
|
|
410
397
|
}
|
|
411
|
-
#endif // NDEBUG
|
|
412
398
|
|
|
413
399
|
for (size_t i = 0; i < statuses.size(); ++i) {
|
|
414
400
|
Status s = statuses[i];
|
|
@@ -562,8 +548,8 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
562
548
|
Slice k = key_str2;
|
|
563
549
|
std::string from_db;
|
|
564
550
|
Status s = db_->Get(read_opts, cfh, k, &from_db);
|
|
565
|
-
if (!
|
|
566
|
-
|
|
551
|
+
if (!VerifyOrSyncValue(rand_column_family, rand_key, read_opts, shared,
|
|
552
|
+
from_db, s, true)) {
|
|
567
553
|
return s;
|
|
568
554
|
}
|
|
569
555
|
}
|
|
@@ -631,33 +617,14 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
631
617
|
Status TestDelete(ThreadState* thread, WriteOptions& write_opts,
|
|
632
618
|
const std::vector<int>& rand_column_families,
|
|
633
619
|
const std::vector<int64_t>& rand_keys,
|
|
634
|
-
std::unique_ptr<MutexLock>& lock) override {
|
|
620
|
+
std::unique_ptr<MutexLock>& /* lock */) override {
|
|
635
621
|
int64_t rand_key = rand_keys[0];
|
|
636
622
|
int rand_column_family = rand_column_families[0];
|
|
637
623
|
auto shared = thread->shared;
|
|
638
|
-
int64_t max_key = shared->GetMaxKey();
|
|
639
624
|
|
|
640
625
|
// OPERATION delete
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
std::string write_ts_str;
|
|
644
|
-
Slice write_ts;
|
|
645
|
-
while (!shared->AllowsOverwrite(rand_key) &&
|
|
646
|
-
!shared->Exists(rand_column_family, rand_key)) {
|
|
647
|
-
lock.reset();
|
|
648
|
-
rand_key = thread->rand.Next() % max_key;
|
|
649
|
-
rand_column_family = thread->rand.Next() % FLAGS_column_families;
|
|
650
|
-
lock.reset(
|
|
651
|
-
new MutexLock(shared->GetMutexForKey(rand_column_family, rand_key)));
|
|
652
|
-
if (FLAGS_user_timestamp_size > 0) {
|
|
653
|
-
write_ts_str = NowNanosStr();
|
|
654
|
-
write_ts = write_ts_str;
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
if (write_ts.size() == 0 && FLAGS_user_timestamp_size) {
|
|
658
|
-
write_ts_str = NowNanosStr();
|
|
659
|
-
write_ts = write_ts_str;
|
|
660
|
-
}
|
|
626
|
+
std::string write_ts_str = NowNanosStr();
|
|
627
|
+
Slice write_ts = write_ts_str;
|
|
661
628
|
|
|
662
629
|
std::string key_str = Key(rand_key);
|
|
663
630
|
Slice key = key_str;
|
|
@@ -823,7 +790,7 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
823
790
|
const std::vector<int64_t>& rand_keys,
|
|
824
791
|
std::unique_ptr<MutexLock>& lock) override {
|
|
825
792
|
const std::string sst_filename =
|
|
826
|
-
FLAGS_db + "/." +
|
|
793
|
+
FLAGS_db + "/." + std::to_string(thread->tid) + ".sst";
|
|
827
794
|
Status s;
|
|
828
795
|
if (db_stress_env->FileExists(sst_filename).ok()) {
|
|
829
796
|
// Maybe we terminated abnormally before, so cleanup to give this file
|
|
@@ -882,16 +849,24 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
882
849
|
}
|
|
883
850
|
#endif // ROCKSDB_LITE
|
|
884
851
|
|
|
885
|
-
bool
|
|
886
|
-
|
|
887
|
-
|
|
852
|
+
bool VerifyOrSyncValue(int cf, int64_t key, const ReadOptions& /*opts*/,
|
|
853
|
+
SharedState* shared, const std::string& value_from_db,
|
|
854
|
+
const Status& s, bool strict = false) const {
|
|
888
855
|
if (shared->HasVerificationFailedYet()) {
|
|
889
856
|
return false;
|
|
890
857
|
}
|
|
891
858
|
// compare value_from_db with the value in the shared state
|
|
892
|
-
char value[kValueMaxLen];
|
|
893
859
|
uint32_t value_base = shared->Get(cf, key);
|
|
894
860
|
if (value_base == SharedState::UNKNOWN_SENTINEL) {
|
|
861
|
+
if (s.ok()) {
|
|
862
|
+
// Value exists in db, update state to reflect that
|
|
863
|
+
Slice slice(value_from_db);
|
|
864
|
+
value_base = GetValueBase(slice);
|
|
865
|
+
shared->Put(cf, key, value_base, false);
|
|
866
|
+
} else if (s.IsNotFound()) {
|
|
867
|
+
// Value doesn't exist in db, update state to reflect that
|
|
868
|
+
shared->SingleDelete(cf, key, false);
|
|
869
|
+
}
|
|
895
870
|
return true;
|
|
896
871
|
}
|
|
897
872
|
if (value_base == SharedState::DELETION_SENTINEL && !strict) {
|
|
@@ -899,6 +874,7 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
899
874
|
}
|
|
900
875
|
|
|
901
876
|
if (s.ok()) {
|
|
877
|
+
char value[kValueMaxLen];
|
|
902
878
|
if (value_base == SharedState::DELETION_SENTINEL) {
|
|
903
879
|
VerificationAbort(shared, "Unexpected value found", cf, key);
|
|
904
880
|
return false;
|
|
@@ -921,6 +897,21 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
921
897
|
}
|
|
922
898
|
return true;
|
|
923
899
|
}
|
|
900
|
+
|
|
901
|
+
#ifndef ROCKSDB_LITE
|
|
902
|
+
void PrepareTxnDbOptions(SharedState* shared,
|
|
903
|
+
TransactionDBOptions& txn_db_opts) override {
|
|
904
|
+
txn_db_opts.rollback_deletion_type_callback =
|
|
905
|
+
[shared](TransactionDB*, ColumnFamilyHandle*, const Slice& key) {
|
|
906
|
+
assert(shared);
|
|
907
|
+
uint64_t key_num = 0;
|
|
908
|
+
bool ok = GetIntVal(key.ToString(), &key_num);
|
|
909
|
+
assert(ok);
|
|
910
|
+
(void)ok;
|
|
911
|
+
return !shared->AllowsOverwrite(key_num);
|
|
912
|
+
};
|
|
913
|
+
}
|
|
914
|
+
#endif // ROCKSDB_LITE
|
|
924
915
|
};
|
|
925
916
|
|
|
926
917
|
StressTest* CreateNonBatchedOpsStressTest() {
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
//
|
|
6
6
|
#include "env/composite_env_wrapper.h"
|
|
7
7
|
#include "rocksdb/utilities/options_type.h"
|
|
8
|
+
#include "util/string_util.h"
|
|
8
9
|
|
|
9
10
|
namespace ROCKSDB_NAMESPACE {
|
|
10
11
|
namespace {
|
|
@@ -382,19 +383,49 @@ Status CompositeEnv::NewDirectory(const std::string& name,
|
|
|
382
383
|
}
|
|
383
384
|
|
|
384
385
|
namespace {
|
|
385
|
-
static std::unordered_map<std::string, OptionTypeInfo>
|
|
386
|
-
composite_env_wrapper_type_info = {
|
|
386
|
+
static std::unordered_map<std::string, OptionTypeInfo> env_wrapper_type_info = {
|
|
387
387
|
#ifndef ROCKSDB_LITE
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
388
|
+
{"target",
|
|
389
|
+
OptionTypeInfo(0, OptionType::kUnknown, OptionVerificationType::kByName,
|
|
390
|
+
OptionTypeFlags::kDontSerialize)
|
|
391
|
+
.SetParseFunc([](const ConfigOptions& opts,
|
|
392
|
+
const std::string& /*name*/, const std::string& value,
|
|
393
|
+
void* addr) {
|
|
394
|
+
auto target = static_cast<EnvWrapper::Target*>(addr);
|
|
395
|
+
return Env::CreateFromString(opts, value, &(target->env),
|
|
396
|
+
&(target->guard));
|
|
397
|
+
})
|
|
398
|
+
.SetEqualsFunc([](const ConfigOptions& opts,
|
|
399
|
+
const std::string& /*name*/, const void* addr1,
|
|
400
|
+
const void* addr2, std::string* mismatch) {
|
|
401
|
+
const auto target1 = static_cast<const EnvWrapper::Target*>(addr1);
|
|
402
|
+
const auto target2 = static_cast<const EnvWrapper::Target*>(addr2);
|
|
403
|
+
if (target1->env != nullptr) {
|
|
404
|
+
return target1->env->AreEquivalent(opts, target2->env, mismatch);
|
|
405
|
+
} else {
|
|
406
|
+
return (target2->env == nullptr);
|
|
407
|
+
}
|
|
408
|
+
})
|
|
409
|
+
.SetPrepareFunc([](const ConfigOptions& opts,
|
|
410
|
+
const std::string& /*name*/, void* addr) {
|
|
411
|
+
auto target = static_cast<EnvWrapper::Target*>(addr);
|
|
412
|
+
if (target->guard.get() != nullptr) {
|
|
413
|
+
target->env = target->guard.get();
|
|
414
|
+
} else if (target->env == nullptr) {
|
|
415
|
+
target->env = Env::Default();
|
|
416
|
+
}
|
|
417
|
+
return target->env->PrepareOptions(opts);
|
|
418
|
+
})
|
|
419
|
+
.SetValidateFunc([](const DBOptions& db_opts,
|
|
420
|
+
const ColumnFamilyOptions& cf_opts,
|
|
421
|
+
const std::string& /*name*/, const void* addr) {
|
|
422
|
+
const auto target = static_cast<const EnvWrapper::Target*>(addr);
|
|
423
|
+
if (target->env == nullptr) {
|
|
424
|
+
return Status::InvalidArgument("Target Env not specified");
|
|
425
|
+
} else {
|
|
426
|
+
return target->env->ValidateOptions(db_opts, cf_opts);
|
|
427
|
+
}
|
|
428
|
+
})},
|
|
398
429
|
#endif // ROCKSDB_LITE
|
|
399
430
|
};
|
|
400
431
|
static std::unordered_map<std::string, OptionTypeInfo>
|
|
@@ -425,7 +456,7 @@ CompositeEnvWrapper::CompositeEnvWrapper(Env* env,
|
|
|
425
456
|
const std::shared_ptr<FileSystem>& fs,
|
|
426
457
|
const std::shared_ptr<SystemClock>& sc)
|
|
427
458
|
: CompositeEnv(fs, sc), target_(env) {
|
|
428
|
-
RegisterOptions("", &target_, &
|
|
459
|
+
RegisterOptions("", &target_, &env_wrapper_type_info);
|
|
429
460
|
RegisterOptions("", &file_system_, &composite_fs_wrapper_type_info);
|
|
430
461
|
RegisterOptions("", &system_clock_, &composite_clock_wrapper_type_info);
|
|
431
462
|
}
|
|
@@ -434,7 +465,7 @@ CompositeEnvWrapper::CompositeEnvWrapper(const std::shared_ptr<Env>& env,
|
|
|
434
465
|
const std::shared_ptr<FileSystem>& fs,
|
|
435
466
|
const std::shared_ptr<SystemClock>& sc)
|
|
436
467
|
: CompositeEnv(fs, sc), target_(env) {
|
|
437
|
-
RegisterOptions("", &target_, &
|
|
468
|
+
RegisterOptions("", &target_, &env_wrapper_type_info);
|
|
438
469
|
RegisterOptions("", &file_system_, &composite_fs_wrapper_type_info);
|
|
439
470
|
RegisterOptions("", &system_clock_, &composite_clock_wrapper_type_info);
|
|
440
471
|
}
|
|
@@ -461,4 +492,46 @@ std::string CompositeEnvWrapper::SerializeOptions(
|
|
|
461
492
|
return options;
|
|
462
493
|
}
|
|
463
494
|
#endif // ROCKSDB_LITE
|
|
495
|
+
|
|
496
|
+
EnvWrapper::EnvWrapper(Env* t) : target_(t) {
|
|
497
|
+
RegisterOptions("", &target_, &env_wrapper_type_info);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
EnvWrapper::EnvWrapper(std::unique_ptr<Env>&& t) : target_(std::move(t)) {
|
|
501
|
+
RegisterOptions("", &target_, &env_wrapper_type_info);
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
EnvWrapper::EnvWrapper(const std::shared_ptr<Env>& t) : target_(t) {
|
|
505
|
+
RegisterOptions("", &target_, &env_wrapper_type_info);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
EnvWrapper::~EnvWrapper() {}
|
|
509
|
+
|
|
510
|
+
Status EnvWrapper::PrepareOptions(const ConfigOptions& options) {
|
|
511
|
+
target_.Prepare();
|
|
512
|
+
return Env::PrepareOptions(options);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
#ifndef ROCKSDB_LITE
|
|
516
|
+
std::string EnvWrapper::SerializeOptions(const ConfigOptions& config_options,
|
|
517
|
+
const std::string& header) const {
|
|
518
|
+
auto parent = Env::SerializeOptions(config_options, "");
|
|
519
|
+
if (config_options.IsShallow() || target_.env == nullptr ||
|
|
520
|
+
target_.env == Env::Default()) {
|
|
521
|
+
return parent;
|
|
522
|
+
} else {
|
|
523
|
+
std::string result = header;
|
|
524
|
+
if (!StartsWith(parent, OptionTypeInfo::kIdPropName())) {
|
|
525
|
+
result.append(OptionTypeInfo::kIdPropName()).append("=");
|
|
526
|
+
}
|
|
527
|
+
result.append(parent);
|
|
528
|
+
if (!EndsWith(result, config_options.delimiter)) {
|
|
529
|
+
result.append(config_options.delimiter);
|
|
530
|
+
}
|
|
531
|
+
result.append("target=").append(target_.env->ToString(config_options));
|
|
532
|
+
return result;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
#endif // ROCKSDB_LITE
|
|
536
|
+
|
|
464
537
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -26,7 +26,6 @@
|
|
|
26
26
|
#include "rocksdb/utilities/object_registry.h"
|
|
27
27
|
#include "rocksdb/utilities/options_type.h"
|
|
28
28
|
#include "util/autovector.h"
|
|
29
|
-
#include "util/string_util.h"
|
|
30
29
|
|
|
31
30
|
namespace ROCKSDB_NAMESPACE {
|
|
32
31
|
namespace {
|
|
@@ -1084,65 +1083,6 @@ Status ReadFileToString(Env* env, const std::string& fname, std::string* data) {
|
|
|
1084
1083
|
return ReadFileToString(fs.get(), fname, data);
|
|
1085
1084
|
}
|
|
1086
1085
|
|
|
1087
|
-
namespace {
|
|
1088
|
-
static std::unordered_map<std::string, OptionTypeInfo> env_wrapper_type_info = {
|
|
1089
|
-
#ifndef ROCKSDB_LITE
|
|
1090
|
-
{"target",
|
|
1091
|
-
{0, OptionType::kCustomizable, OptionVerificationType::kByName,
|
|
1092
|
-
OptionTypeFlags::kDontSerialize | OptionTypeFlags::kRawPointer,
|
|
1093
|
-
[](const ConfigOptions& opts, const std::string& /*name*/,
|
|
1094
|
-
const std::string& value, void* addr) {
|
|
1095
|
-
EnvWrapper::Target* target = static_cast<EnvWrapper::Target*>(addr);
|
|
1096
|
-
return Env::CreateFromString(opts, value, &(target->env),
|
|
1097
|
-
&(target->guard));
|
|
1098
|
-
},
|
|
1099
|
-
nullptr, nullptr}},
|
|
1100
|
-
#endif // ROCKSDB_LITE
|
|
1101
|
-
};
|
|
1102
|
-
} // namespace
|
|
1103
|
-
|
|
1104
|
-
EnvWrapper::EnvWrapper(Env* t) : target_(t) {
|
|
1105
|
-
RegisterOptions("", &target_, &env_wrapper_type_info);
|
|
1106
|
-
}
|
|
1107
|
-
|
|
1108
|
-
EnvWrapper::EnvWrapper(std::unique_ptr<Env>&& t) : target_(std::move(t)) {
|
|
1109
|
-
RegisterOptions("", &target_, &env_wrapper_type_info);
|
|
1110
|
-
}
|
|
1111
|
-
|
|
1112
|
-
EnvWrapper::EnvWrapper(const std::shared_ptr<Env>& t) : target_(t) {
|
|
1113
|
-
RegisterOptions("", &target_, &env_wrapper_type_info);
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1116
|
-
EnvWrapper::~EnvWrapper() {
|
|
1117
|
-
}
|
|
1118
|
-
|
|
1119
|
-
Status EnvWrapper::PrepareOptions(const ConfigOptions& options) {
|
|
1120
|
-
target_.Prepare();
|
|
1121
|
-
return Env::PrepareOptions(options);
|
|
1122
|
-
}
|
|
1123
|
-
|
|
1124
|
-
#ifndef ROCKSDB_LITE
|
|
1125
|
-
std::string EnvWrapper::SerializeOptions(const ConfigOptions& config_options,
|
|
1126
|
-
const std::string& header) const {
|
|
1127
|
-
auto parent = Env::SerializeOptions(config_options, "");
|
|
1128
|
-
if (config_options.IsShallow() || target_.env == nullptr ||
|
|
1129
|
-
target_.env == Env::Default()) {
|
|
1130
|
-
return parent;
|
|
1131
|
-
} else {
|
|
1132
|
-
std::string result = header;
|
|
1133
|
-
if (!StartsWith(parent, OptionTypeInfo::kIdPropName())) {
|
|
1134
|
-
result.append(OptionTypeInfo::kIdPropName()).append("=");
|
|
1135
|
-
}
|
|
1136
|
-
result.append(parent);
|
|
1137
|
-
if (!EndsWith(result, config_options.delimiter)) {
|
|
1138
|
-
result.append(config_options.delimiter);
|
|
1139
|
-
}
|
|
1140
|
-
result.append("target=").append(target_.env->ToString(config_options));
|
|
1141
|
-
return result;
|
|
1142
|
-
}
|
|
1143
|
-
}
|
|
1144
|
-
#endif // ROCKSDB_LITE
|
|
1145
|
-
|
|
1146
1086
|
namespace { // anonymous namespace
|
|
1147
1087
|
|
|
1148
1088
|
void AssignEnvOptions(EnvOptions* env_options, const DBOptions& options) {
|
|
@@ -1139,6 +1139,15 @@ CTREncryptionProvider::CTREncryptionProvider(
|
|
|
1139
1139
|
RegisterOptions("Cipher", &cipher_, &ctr_encryption_provider_type_info);
|
|
1140
1140
|
}
|
|
1141
1141
|
|
|
1142
|
+
bool CTREncryptionProvider::IsInstanceOf(const std::string& name) const {
|
|
1143
|
+
// Special case for test purposes.
|
|
1144
|
+
if (name == "1://test" && cipher_ != nullptr) {
|
|
1145
|
+
return cipher_->IsInstanceOf(ROT13BlockCipher::kClassName());
|
|
1146
|
+
} else {
|
|
1147
|
+
return EncryptionProvider::IsInstanceOf(name);
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1142
1151
|
// GetPrefixLength returns the length of the prefix that is added to every file
|
|
1143
1152
|
// and used for storing encryption options.
|
|
1144
1153
|
// For optimal performance, the prefix length should be a multiple of
|
|
@@ -66,7 +66,7 @@ class CTREncryptionProvider : public EncryptionProvider {
|
|
|
66
66
|
|
|
67
67
|
static const char* kClassName() { return "CTR"; }
|
|
68
68
|
const char* Name() const override { return kClassName(); }
|
|
69
|
-
|
|
69
|
+
bool IsInstanceOf(const std::string& name) const override;
|
|
70
70
|
// GetPrefixLength returns the length of the prefix that is added to every
|
|
71
71
|
// file
|
|
72
72
|
// and used for storing encryption options.
|
|
@@ -130,8 +130,8 @@ class PosixDynamicLibrary : public DynamicLibrary {
|
|
|
130
130
|
class PosixClock : public SystemClock {
|
|
131
131
|
public:
|
|
132
132
|
static const char* kClassName() { return "PosixClock"; }
|
|
133
|
-
const char* Name() const override { return
|
|
134
|
-
const char* NickName() const override { return
|
|
133
|
+
const char* Name() const override { return kDefaultName(); }
|
|
134
|
+
const char* NickName() const override { return kClassName(); }
|
|
135
135
|
|
|
136
136
|
uint64_t NowMicros() override {
|
|
137
137
|
struct timeval tv;
|
|
@@ -488,6 +488,7 @@ Env* Env::Default() {
|
|
|
488
488
|
CompressionContextCache::InitSingleton();
|
|
489
489
|
INIT_SYNC_POINT_SINGLETONS();
|
|
490
490
|
// ~PosixEnv must be called on exit
|
|
491
|
+
//**TODO: Can we make this a STATIC_AVOID_DESTRUCTION?
|
|
491
492
|
static PosixEnv default_env;
|
|
492
493
|
return &default_env;
|
|
493
494
|
}
|
|
@@ -496,9 +497,9 @@ Env* Env::Default() {
|
|
|
496
497
|
// Default Posix SystemClock
|
|
497
498
|
//
|
|
498
499
|
const std::shared_ptr<SystemClock>& SystemClock::Default() {
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
return
|
|
500
|
+
STATIC_AVOID_DESTRUCTION(std::shared_ptr<SystemClock>, instance)
|
|
501
|
+
(std::make_shared<PosixClock>());
|
|
502
|
+
return instance;
|
|
502
503
|
}
|
|
503
504
|
} // namespace ROCKSDB_NAMESPACE
|
|
504
505
|
|