rocksdb/db_stress_tool
Changyu Bi 3d5be596a5 Fix a bug in iterator with UDT + ReadOptions::pin_data (#12451)
Summary:
with https://github.com/facebook/rocksdb/issues/12414 enabling `ReadOptions::pin_data`, this bug surfaced as corrupted per key-value checksum during crash test. `saved_key_.GetUserKey()` could be pinned user key, so DBIter should not overwrite it.

In one case, it only surfaces when iterator skips many keys of the same user key. To stress that code path, this PR also added `max_sequential_skip_in_iterations` to crash test.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/12451

Test Plan:
- Set ReadOptions::pin_data to true, the bug can be reproed quickly with `./db_stress --persist_user_defined_timestamps=1 --user_timestamp_size=8 --writepercent=35 --delpercent=4 --delrangepercent=1 --iterpercent=20 --nooverwritepercent=1 --prefix_size=8 --prefixpercent=10 --readpercent=30 --memtable_protection_bytes_per_key=8 --block_protection_bytes_per_key=2 --clear_column_family_one_in=0`.
    - Set max_sequential_skip_in_iterations to 1 for the other occurrence of the bug.

Reviewed By: jowlyzhang

Differential Revision: D55003766

Pulled By: cbi42

fbshipit-source-id: 23e1049129456684dafb028b6132b70e0afc07fb
2024-03-18 09:05:11 -07:00
..
batched_ops_stress.cc
cf_consistency_stress.cc
CMakeLists.txt
db_stress.cc
db_stress_common.cc
db_stress_common.h
db_stress_compaction_filter.h
db_stress_driver.cc
db_stress_driver.h
db_stress_env_wrapper.h
db_stress_gflags.cc
db_stress_listener.cc
db_stress_listener.h
db_stress_shared_state.cc
db_stress_shared_state.h
db_stress_stat.cc
db_stress_stat.h
db_stress_table_properties_collector.h
db_stress_test_base.cc
db_stress_test_base.h
db_stress_tool.cc
db_stress_wide_merge_operator.cc
db_stress_wide_merge_operator.h
expected_state.cc
expected_state.h
expected_value.cc
expected_value.h
multi_ops_txns_stress.cc
multi_ops_txns_stress.h
no_batched_ops_stress.cc