diff options
author | akankshamahajan <akankshamahajan@fb.com> | 2022-11-11 13:34:49 -0800 |
---|---|---|
committer | Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> | 2022-11-11 13:34:49 -0800 |
commit | d1aca4a5ae6b3f94dddf3f69cbef4463f3858ede (patch) | |
tree | 44e7696b0dc3b7f33927cea74a5bb855a61ed7cf /file/file_prefetch_buffer.cc | |
parent | dbc4101b89a4d864c021cb7a68fdc5b6202458b4 (diff) |
Fix async_io regression in scans (#10939)
Summary:
Fix async_io regression in scans due to incorrect check which was causing the valid data in buffer to be cleared during seek.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/10939
Test Plan:
- stress tests export CRASH_TEST_EXT_ARGS="--async_io=1"
make crash_test -j32
- Ran db_bench command which was caught the regression:
./db_bench --db=/rocksdb_async_io_testing/prefix_scan --disable_wal=1 --use_existing_db=true --benchmarks="seekrandom" -key_size=32 -value_size=512 -num=50000000 -use_direct_reads=false -seek_nexts=963 -duration=30 -ops_between_duration_checks=1 --async_io=true --compaction_readahead_size=4194304 --log_readahead_size=0 --blob_compaction_readahead_size=0 --initial_auto_readahead_size=65536 --num_file_reads_for_auto_readahead=0 --max_auto_readahead_size=524288
seekrandom : 3777.415 micros/op 264 ops/sec 30.000 seconds 7942 operations; 132.3 MB/s (7942 of 7942 found)
Reviewed By: anand1976
Differential Revision: D41173899
Pulled By: akankshamahajan15
fbshipit-source-id: 2d75b06457d65b1851c92382565d9c3fac329dfe
Diffstat (limited to 'file/file_prefetch_buffer.cc')
-rw-r--r-- | file/file_prefetch_buffer.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/file/file_prefetch_buffer.cc b/file/file_prefetch_buffer.cc index 9222acdfa..9ea9129e2 100644 --- a/file/file_prefetch_buffer.cc +++ b/file/file_prefetch_buffer.cc @@ -664,7 +664,7 @@ bool FilePrefetchBuffer::TryReadFromCacheAsync( // submitted in PrefetchAsync should match with this request. Otherwise // buffers will be outdated. // Random offset called. So abort the IOs. - if (bufs_[curr_].offset_ != offset) { + if (prev_offset_ != offset) { AbortAllIOs(); bufs_[curr_].buffer_.Clear(); bufs_[curr_ ^ 1].buffer_.Clear(); |