@nxtedition/rocksdb 7.1.20 → 7.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -6
- package/deps/rocksdb/rocksdb/Makefile +1 -1
- package/deps/rocksdb/rocksdb/TARGETS +2 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +4 -4
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +139 -161
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +92 -82
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +16 -3
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -3
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +73 -30
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +25 -67
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +41 -40
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +109 -155
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +127 -149
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +75 -80
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +22 -172
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +272 -85
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +12 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +13 -4
- package/deps/rocksdb/rocksdb/db/builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +15 -1
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +25 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +10 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +22 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +14 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +38 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +9 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +408 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +244 -54
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +27 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +25 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +87 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -10
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +272 -0
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +38 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +69 -25
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +7 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +29 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +0 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +10 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +35 -22
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +5 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +40 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +22 -0
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +72 -5
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +60 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +170 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +9 -3
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +19 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.h +32 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +444 -3
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/dbformat.cc +13 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +59 -4
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +3 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +24 -3
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/filename_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +85 -43
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +3 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +33 -6
- package/deps/rocksdb/rocksdb/db/internal_stats.h +6 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +1 -1
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +158 -56
- package/deps/rocksdb/rocksdb/db/memtable.h +2 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +52 -9
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +31 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +81 -42
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +78 -12
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +21 -4
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +4 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +18 -6
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_set.cc +15 -7
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +3 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +28 -9
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +21 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +30 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +4 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +30 -7
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +24 -13
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +104 -60
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +199 -108
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +39 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +8 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +3 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +26 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -118
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +24 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +18 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +129 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +22 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +312 -117
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +10 -2
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +5 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +49 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +44 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +8 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -6
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memory/arena.cc +23 -88
- package/deps/rocksdb/rocksdb/memory/arena.h +25 -31
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +61 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +8 -0
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_test.cc +63 -40
- package/deps/rocksdb/rocksdb/port/mmap.cc +98 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +70 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +7 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +4 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -7
- package/deps/rocksdb/rocksdb/src.mk +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +7 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/get_context.cc +19 -1
- package/deps/rocksdb/rocksdb/table/get_context.h +9 -0
- package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -11
- package/deps/rocksdb/rocksdb/table/mock_table.cc +37 -19
- package/deps/rocksdb/rocksdb/table/mock_table.h +5 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +6 -0
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +33 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +45 -6
- package/deps/rocksdb/rocksdb/test_util/testharness.h +2 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +5 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +36 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +12 -7
- package/deps/rocksdb/rocksdb/util/hash_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/heap_test.cc +4 -2
- package/deps/rocksdb/rocksdb/util/random_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/thread_local_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/timer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/work_queue_test.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +13 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +8 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +20 -0
- package/index.js +12 -4
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
#ifdef GFLAGS
|
|
11
11
|
#pragma once
|
|
12
|
+
|
|
12
13
|
#include "db_stress_tool/db_stress_common.h"
|
|
13
14
|
#include "db_stress_tool/db_stress_shared_state.h"
|
|
14
15
|
|
|
@@ -34,13 +35,10 @@ class StressTest {
|
|
|
34
35
|
// The initialization work is split into two parts to avoid a circular
|
|
35
36
|
// dependency with `SharedState`.
|
|
36
37
|
virtual void FinishInitDb(SharedState*);
|
|
37
|
-
|
|
38
38
|
void TrackExpectedState(SharedState* shared);
|
|
39
|
-
|
|
40
39
|
void OperateDb(ThreadState* thread);
|
|
41
40
|
virtual void VerifyDb(ThreadState* thread) const = 0;
|
|
42
41
|
virtual void ContinuouslyVerifyDb(ThreadState* /*thread*/) const = 0;
|
|
43
|
-
|
|
44
42
|
void PrintStatistics();
|
|
45
43
|
|
|
46
44
|
protected:
|
|
@@ -54,6 +52,18 @@ class StressTest {
|
|
|
54
52
|
Status SetOptions(ThreadState* thread);
|
|
55
53
|
|
|
56
54
|
#ifndef ROCKSDB_LITE
|
|
55
|
+
// For transactionsDB, there can be txns prepared but not yet committeed
|
|
56
|
+
// right before previous stress run crash.
|
|
57
|
+
// They will be recovered and processed through
|
|
58
|
+
// ProcessRecoveredPreparedTxnsHelper on the start of current stress run.
|
|
59
|
+
void ProcessRecoveredPreparedTxns(SharedState* shared);
|
|
60
|
+
|
|
61
|
+
// Default implementation will first update ExpectedState to be
|
|
62
|
+
// `SharedState::UNKNOWN` for each keys in `txn` and then randomly
|
|
63
|
+
// commit or rollback `txn`.
|
|
64
|
+
virtual void ProcessRecoveredPreparedTxnsHelper(Transaction* txn,
|
|
65
|
+
SharedState* shared);
|
|
66
|
+
|
|
57
67
|
Status NewTxn(WriteOptions& write_opts, Transaction** txn);
|
|
58
68
|
|
|
59
69
|
Status CommitTxn(Transaction* txn, ThreadState* thread = nullptr);
|
|
@@ -129,6 +139,8 @@ class StressTest {
|
|
|
129
139
|
return column_families_[column_family_id];
|
|
130
140
|
}
|
|
131
141
|
|
|
142
|
+
virtual Slice GetValueBaseSlice(Slice slice) { return slice; }
|
|
143
|
+
|
|
132
144
|
#ifndef ROCKSDB_LITE
|
|
133
145
|
// Generated a list of keys that close to boundaries of SST keys.
|
|
134
146
|
// If there isn't any SST file in the DB, return empty list.
|
|
@@ -222,6 +234,13 @@ class StressTest {
|
|
|
222
234
|
int64_t key, Slice value_from_db,
|
|
223
235
|
Slice value_from_expected) const;
|
|
224
236
|
|
|
237
|
+
void VerificationAbort(SharedState* shared, int cf, int64_t key,
|
|
238
|
+
const Slice& value, const WideColumns& columns,
|
|
239
|
+
const WideColumns& expected_columns) const;
|
|
240
|
+
|
|
241
|
+
static std::string DebugString(const Slice& value, const WideColumns& columns,
|
|
242
|
+
const WideColumns& expected_columns);
|
|
243
|
+
|
|
225
244
|
void PrintEnv() const;
|
|
226
245
|
|
|
227
246
|
void Open(SharedState* shared);
|
|
@@ -235,7 +254,8 @@ class StressTest {
|
|
|
235
254
|
TransactionDBOptions& /*txn_db_opts*/) {}
|
|
236
255
|
#endif
|
|
237
256
|
|
|
238
|
-
|
|
257
|
+
// Returns whether the timestamp of read_opts is updated.
|
|
258
|
+
bool MaybeUseOlderTimestampForPointLookup(ThreadState* thread,
|
|
239
259
|
std::string& ts_str,
|
|
240
260
|
Slice& ts_slice,
|
|
241
261
|
ReadOptions& read_opts);
|
|
@@ -286,6 +286,24 @@ int db_stress_tool(int argc, char** argv) {
|
|
|
286
286
|
exit(1);
|
|
287
287
|
}
|
|
288
288
|
|
|
289
|
+
if (FLAGS_use_txn && FLAGS_sync_fault_injection &&
|
|
290
|
+
FLAGS_txn_write_policy != 0) {
|
|
291
|
+
fprintf(stderr,
|
|
292
|
+
"For TransactionDB, correctness testing with unsync data loss is "
|
|
293
|
+
"currently compatible with only write committed policy\n");
|
|
294
|
+
exit(1);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
if (FLAGS_use_put_entity_one_in > 0 &&
|
|
298
|
+
(FLAGS_ingest_external_file_one_in > 0 || FLAGS_use_merge ||
|
|
299
|
+
FLAGS_use_full_merge_v1 || FLAGS_use_txn || FLAGS_test_multi_ops_txns ||
|
|
300
|
+
FLAGS_user_timestamp_size > 0)) {
|
|
301
|
+
fprintf(stderr,
|
|
302
|
+
"PutEntity is currently incompatible with SstFileWriter, Merge,"
|
|
303
|
+
" transactions, and user-defined timestamps\n");
|
|
304
|
+
exit(1);
|
|
305
|
+
}
|
|
306
|
+
|
|
289
307
|
#ifndef NDEBUG
|
|
290
308
|
KillPoint* kp = KillPoint::GetInstance();
|
|
291
309
|
kp->rocksdb_kill_odds = FLAGS_kill_random_test;
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
#include "db_stress_tool/expected_state.h"
|
|
9
9
|
|
|
10
|
+
#include "db/wide/wide_column_serialization.h"
|
|
10
11
|
#include "db_stress_tool/db_stress_common.h"
|
|
11
12
|
#include "db_stress_tool/db_stress_shared_state.h"
|
|
12
13
|
#include "rocksdb/trace_reader_writer.h"
|
|
@@ -343,7 +344,9 @@ class ExpectedStateTraceRecordHandler : public TraceRecord::Handler,
|
|
|
343
344
|
public WriteBatch::Handler {
|
|
344
345
|
public:
|
|
345
346
|
ExpectedStateTraceRecordHandler(uint64_t max_write_ops, ExpectedState* state)
|
|
346
|
-
: max_write_ops_(max_write_ops),
|
|
347
|
+
: max_write_ops_(max_write_ops),
|
|
348
|
+
state_(state),
|
|
349
|
+
buffered_writes_(nullptr) {}
|
|
347
350
|
|
|
348
351
|
~ExpectedStateTraceRecordHandler() { assert(IsDone()); }
|
|
349
352
|
|
|
@@ -391,12 +394,62 @@ class ExpectedStateTraceRecordHandler : public TraceRecord::Handler,
|
|
|
391
394
|
}
|
|
392
395
|
uint32_t value_id = GetValueBase(value);
|
|
393
396
|
|
|
397
|
+
bool should_buffer_write = !(buffered_writes_ == nullptr);
|
|
398
|
+
if (should_buffer_write) {
|
|
399
|
+
return WriteBatchInternal::Put(buffered_writes_.get(), column_family_id,
|
|
400
|
+
key, value);
|
|
401
|
+
}
|
|
402
|
+
|
|
394
403
|
state_->Put(column_family_id, static_cast<int64_t>(key_id), value_id,
|
|
395
404
|
false /* pending */);
|
|
396
405
|
++num_write_ops_;
|
|
397
406
|
return Status::OK();
|
|
398
407
|
}
|
|
399
408
|
|
|
409
|
+
Status PutEntityCF(uint32_t column_family_id, const Slice& key_with_ts,
|
|
410
|
+
const Slice& entity) override {
|
|
411
|
+
Slice key =
|
|
412
|
+
StripTimestampFromUserKey(key_with_ts, FLAGS_user_timestamp_size);
|
|
413
|
+
|
|
414
|
+
uint64_t key_id = 0;
|
|
415
|
+
if (!GetIntVal(key.ToString(), &key_id)) {
|
|
416
|
+
return Status::Corruption("Unable to parse key", key.ToString());
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
Slice entity_copy = entity;
|
|
420
|
+
WideColumns columns;
|
|
421
|
+
if (!WideColumnSerialization::Deserialize(entity_copy, columns).ok()) {
|
|
422
|
+
return Status::Corruption("Unable to deserialize entity",
|
|
423
|
+
entity.ToString(/* hex */ true));
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
if (columns.empty() || columns[0].name() != kDefaultWideColumnName) {
|
|
427
|
+
return Status::Corruption("Cannot find default column in entity",
|
|
428
|
+
entity.ToString(/* hex */ true));
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
const Slice& value_of_default = columns[0].value();
|
|
432
|
+
|
|
433
|
+
const uint32_t value_base = GetValueBase(value_of_default);
|
|
434
|
+
|
|
435
|
+
if (columns != GenerateExpectedWideColumns(value_base, value_of_default)) {
|
|
436
|
+
return Status::Corruption("Wide columns in entity inconsistent",
|
|
437
|
+
entity.ToString(/* hex */ true));
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
if (buffered_writes_) {
|
|
441
|
+
return WriteBatchInternal::PutEntity(buffered_writes_.get(),
|
|
442
|
+
column_family_id, key, columns);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
state_->Put(column_family_id, static_cast<int64_t>(key_id), value_base,
|
|
446
|
+
false /* pending */);
|
|
447
|
+
|
|
448
|
+
++num_write_ops_;
|
|
449
|
+
|
|
450
|
+
return Status::OK();
|
|
451
|
+
}
|
|
452
|
+
|
|
400
453
|
Status DeleteCF(uint32_t column_family_id,
|
|
401
454
|
const Slice& key_with_ts) override {
|
|
402
455
|
Slice key =
|
|
@@ -406,6 +459,12 @@ class ExpectedStateTraceRecordHandler : public TraceRecord::Handler,
|
|
|
406
459
|
return Status::Corruption("unable to parse key", key.ToString());
|
|
407
460
|
}
|
|
408
461
|
|
|
462
|
+
bool should_buffer_write = !(buffered_writes_ == nullptr);
|
|
463
|
+
if (should_buffer_write) {
|
|
464
|
+
return WriteBatchInternal::Delete(buffered_writes_.get(),
|
|
465
|
+
column_family_id, key);
|
|
466
|
+
}
|
|
467
|
+
|
|
409
468
|
state_->Delete(column_family_id, static_cast<int64_t>(key_id),
|
|
410
469
|
false /* pending */);
|
|
411
470
|
++num_write_ops_;
|
|
@@ -414,6 +473,18 @@ class ExpectedStateTraceRecordHandler : public TraceRecord::Handler,
|
|
|
414
473
|
|
|
415
474
|
Status SingleDeleteCF(uint32_t column_family_id,
|
|
416
475
|
const Slice& key_with_ts) override {
|
|
476
|
+
bool should_buffer_write = !(buffered_writes_ == nullptr);
|
|
477
|
+
if (should_buffer_write) {
|
|
478
|
+
Slice key =
|
|
479
|
+
StripTimestampFromUserKey(key_with_ts, FLAGS_user_timestamp_size);
|
|
480
|
+
Slice ts =
|
|
481
|
+
ExtractTimestampFromUserKey(key_with_ts, FLAGS_user_timestamp_size);
|
|
482
|
+
std::array<Slice, 2> key_with_ts_arr{{key, ts}};
|
|
483
|
+
return WriteBatchInternal::SingleDelete(
|
|
484
|
+
buffered_writes_.get(), column_family_id,
|
|
485
|
+
SliceParts(key_with_ts_arr.data(), 2));
|
|
486
|
+
}
|
|
487
|
+
|
|
417
488
|
return DeleteCF(column_family_id, key_with_ts);
|
|
418
489
|
}
|
|
419
490
|
|
|
@@ -433,6 +504,12 @@ class ExpectedStateTraceRecordHandler : public TraceRecord::Handler,
|
|
|
433
504
|
return Status::Corruption("unable to parse end key", end_key.ToString());
|
|
434
505
|
}
|
|
435
506
|
|
|
507
|
+
bool should_buffer_write = !(buffered_writes_ == nullptr);
|
|
508
|
+
if (should_buffer_write) {
|
|
509
|
+
return WriteBatchInternal::DeleteRange(
|
|
510
|
+
buffered_writes_.get(), column_family_id, begin_key, end_key);
|
|
511
|
+
}
|
|
512
|
+
|
|
436
513
|
state_->DeleteRange(column_family_id, static_cast<int64_t>(begin_key_id),
|
|
437
514
|
static_cast<int64_t>(end_key_id), false /* pending */);
|
|
438
515
|
++num_write_ops_;
|
|
@@ -443,13 +520,64 @@ class ExpectedStateTraceRecordHandler : public TraceRecord::Handler,
|
|
|
443
520
|
const Slice& value) override {
|
|
444
521
|
Slice key =
|
|
445
522
|
StripTimestampFromUserKey(key_with_ts, FLAGS_user_timestamp_size);
|
|
523
|
+
|
|
524
|
+
bool should_buffer_write = !(buffered_writes_ == nullptr);
|
|
525
|
+
if (should_buffer_write) {
|
|
526
|
+
return WriteBatchInternal::Merge(buffered_writes_.get(), column_family_id,
|
|
527
|
+
key, value);
|
|
528
|
+
}
|
|
529
|
+
|
|
446
530
|
return PutCF(column_family_id, key, value);
|
|
447
531
|
}
|
|
448
532
|
|
|
533
|
+
Status MarkBeginPrepare(bool = false) override {
|
|
534
|
+
assert(!buffered_writes_);
|
|
535
|
+
buffered_writes_.reset(new WriteBatch());
|
|
536
|
+
return Status::OK();
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
Status MarkEndPrepare(const Slice& xid) override {
|
|
540
|
+
assert(buffered_writes_);
|
|
541
|
+
std::string xid_str = xid.ToString();
|
|
542
|
+
assert(xid_to_buffered_writes_.find(xid_str) ==
|
|
543
|
+
xid_to_buffered_writes_.end());
|
|
544
|
+
|
|
545
|
+
xid_to_buffered_writes_[xid_str].swap(buffered_writes_);
|
|
546
|
+
|
|
547
|
+
buffered_writes_.reset();
|
|
548
|
+
|
|
549
|
+
return Status::OK();
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
Status MarkCommit(const Slice& xid) override {
|
|
553
|
+
std::string xid_str = xid.ToString();
|
|
554
|
+
assert(xid_to_buffered_writes_.find(xid_str) !=
|
|
555
|
+
xid_to_buffered_writes_.end());
|
|
556
|
+
assert(xid_to_buffered_writes_.at(xid_str));
|
|
557
|
+
|
|
558
|
+
Status s = xid_to_buffered_writes_.at(xid_str)->Iterate(this);
|
|
559
|
+
xid_to_buffered_writes_.erase(xid_str);
|
|
560
|
+
|
|
561
|
+
return s;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
Status MarkRollback(const Slice& xid) override {
|
|
565
|
+
std::string xid_str = xid.ToString();
|
|
566
|
+
assert(xid_to_buffered_writes_.find(xid_str) !=
|
|
567
|
+
xid_to_buffered_writes_.end());
|
|
568
|
+
assert(xid_to_buffered_writes_.at(xid_str));
|
|
569
|
+
xid_to_buffered_writes_.erase(xid_str);
|
|
570
|
+
|
|
571
|
+
return Status::OK();
|
|
572
|
+
}
|
|
573
|
+
|
|
449
574
|
private:
|
|
450
575
|
uint64_t num_write_ops_ = 0;
|
|
451
576
|
uint64_t max_write_ops_;
|
|
452
577
|
ExpectedState* state_;
|
|
578
|
+
std::unordered_map<std::string, std::unique_ptr<WriteBatch>>
|
|
579
|
+
xid_to_buffered_writes_;
|
|
580
|
+
std::unique_ptr<WriteBatch> buffered_writes_;
|
|
453
581
|
};
|
|
454
582
|
|
|
455
583
|
} // anonymous namespace
|
|
@@ -329,6 +329,10 @@ void MultiOpsTxnsStressTest::FinishInitDb(SharedState* shared) {
|
|
|
329
329
|
if (FLAGS_enable_compaction_filter) {
|
|
330
330
|
// TODO (yanqin) enable compaction filter
|
|
331
331
|
}
|
|
332
|
+
#ifndef ROCKSDB_LITE
|
|
333
|
+
ProcessRecoveredPreparedTxns(shared);
|
|
334
|
+
#endif
|
|
335
|
+
|
|
332
336
|
ReopenAndPreloadDbIfNeeded(shared);
|
|
333
337
|
// TODO (yanqin) parallelize if key space is large
|
|
334
338
|
for (auto& key_gen : key_gen_for_a_) {
|
|
@@ -1353,6 +1357,18 @@ uint32_t MultiOpsTxnsStressTest::GenerateNextC(ThreadState* thread) {
|
|
|
1353
1357
|
}
|
|
1354
1358
|
|
|
1355
1359
|
#ifndef ROCKSDB_LITE
|
|
1360
|
+
void MultiOpsTxnsStressTest::ProcessRecoveredPreparedTxnsHelper(
|
|
1361
|
+
Transaction* txn, SharedState*) {
|
|
1362
|
+
thread_local Random rand(static_cast<uint32_t>(FLAGS_seed));
|
|
1363
|
+
if (rand.OneIn(2)) {
|
|
1364
|
+
Status s = txn->Commit();
|
|
1365
|
+
assert(s.ok());
|
|
1366
|
+
} else {
|
|
1367
|
+
Status s = txn->Rollback();
|
|
1368
|
+
assert(s.ok());
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1356
1372
|
Status MultiOpsTxnsStressTest::WriteToCommitTimeWriteBatch(Transaction& txn) {
|
|
1357
1373
|
WriteBatch* ctwb = txn.GetCommitTimeWriteBatch();
|
|
1358
1374
|
assert(ctwb);
|
|
@@ -1776,6 +1792,12 @@ void CheckAndSetOptionsForMultiOpsTxnStressTest() {
|
|
|
1776
1792
|
exit(1);
|
|
1777
1793
|
}
|
|
1778
1794
|
}
|
|
1795
|
+
if (FLAGS_sync_fault_injection == 1) {
|
|
1796
|
+
fprintf(stderr,
|
|
1797
|
+
"Sync fault injection is currently not supported in "
|
|
1798
|
+
"-test_multi_ops_txns\n");
|
|
1799
|
+
exit(1);
|
|
1800
|
+
}
|
|
1779
1801
|
#else
|
|
1780
1802
|
fprintf(stderr, "-test_multi_ops_txns not supported in ROCKSDB_LITE mode\n");
|
|
1781
1803
|
exit(1);
|
|
@@ -345,6 +345,10 @@ class MultiOpsTxnsStressTest : public StressTest {
|
|
|
345
345
|
uint32_t GenerateNextC(ThreadState* thread);
|
|
346
346
|
|
|
347
347
|
#ifndef ROCKSDB_LITE
|
|
348
|
+
// Randomly commit or rollback `txn`
|
|
349
|
+
void ProcessRecoveredPreparedTxnsHelper(Transaction* txn,
|
|
350
|
+
SharedState*) override;
|
|
351
|
+
|
|
348
352
|
// Some applications, e.g. MyRocks writes a KV pair to the database via
|
|
349
353
|
// commit-time-write-batch (ctwb) in additional to the transaction's regular
|
|
350
354
|
// write batch. The key is usually constant representing some system
|