https://gitcode.net/kvdb/rocksdb/-/commit/c15ee5a758cd7c6168fae79360fcde65cb66251fFix `GenericRateLimiter` hanging bug (#11763)2023-09-01T13:50:20-07:00Andrew Kryczkaajkr@users.noreply.github.com
Summary:
Fixes <a href="https://github.com/facebook/rocksdb/issues/11742" rel="nofollow noreferrer noopener" target="_blank">https://github.com/facebook/rocksdb/issues/11742</a>
Even after performing duty (1) ("Waiting for the next refill time"), it is possible the remaining threads are all in `Wait()`. Waking up at least one thread is enough to ensure progress continues, even if no new requests arrive.
The repro unit test (<a href="https://github.com/facebook/rocksdb/commit/bb54245e6" rel="nofollow noreferrer noopener" target="_blank">https://github.com/facebook/rocksdb/commit/bb54245e6</a>) is not included as it depends on an unlanded PR (<a href="https://github.com/facebook/rocksdb/issues/11753" rel="nofollow noreferrer noopener" target="_blank">https://github.com/facebook/rocksdb/issues/11753</a>)
Pull Request resolved: <a href="https://github.com/facebook/rocksdb/pull/11763" rel="nofollow noreferrer noopener" target="_blank">https://github.com/facebook/rocksdb/pull/11763</a>
Reviewed By: jaykorean
Differential Revision: D48710130
Pulled By: ajkr
fbshipit-source-id: 9d166bd577ea3a96ccd81dde85871fec5e85a4ebhttps://gitcode.net/kvdb/rocksdb/-/commit/e283b751a69e65f6d041029c4241548b667f22a8Fix a bug where iterator status is not checked (#11782)2023-09-01T13:50:32-07:00Changyu Bichangyubi@meta.com
Summary:
This happens in (Compaction)MergingIterator layer, and can cause data loss during compaction or read/scan return incorrect result
Pull Request resolved: <a href="https://github.com/facebook/rocksdb/pull/11782" rel="nofollow noreferrer noopener" target="_blank">https://github.com/facebook/rocksdb/pull/11782</a>
Reviewed By: ajkr
Differential Revision: D48880575
Pulled By: cbi42
fbshipit-source-id: 2294ad284a6d653d3674bebe55380f12ee4b645bhttps://gitcode.net/kvdb/rocksdb/-/commit/f2cbed0cc4469712a99a1aed17b1de1b9252582bFix a bug where iterator can return incorrect data for DeleteRange() users (#...2023-09-01T13:50:42-07:00Changyu Bichangyubi@meta.com
Summary:
This should only affect iterator when
- user uses DeleteRange(),
- An iterator from level L has a non-ok status (such non-ok status may not be caught before the bug fix in <a href="https://github.com/facebook/rocksdb/pull/11783" rel="nofollow noreferrer noopener" target="_blank">https://github.com/facebook/rocksdb/pull/11783</a>), and
- A range tombstone covers a key from level > L and triggers a reseek sets the status_ to OK in SeekImpl()/SeekPrevImpl() e.g. <a href="https://github.com/facebook/rocksdb/blob/bd6a8340c3a2db764620e90b3ac5be173fc68a0c/table/merging_iterator.cc#L801" rel="nofollow noreferrer noopener" target="_blank">https://github.com/facebook/rocksdb/blob/bd6a8340c3a2db764620e90b3ac5be173fc68a0c/table/merging_iterator.cc#L801</a>
Pull Request resolved: <a href="https://github.com/facebook/rocksdb/pull/11786" rel="nofollow noreferrer noopener" target="_blank">https://github.com/facebook/rocksdb/pull/11786</a>
Differential Revision: D48908830
Pulled By: cbi42
fbshipit-source-id: eb564be375af4e33dc27542eff753260186e6d5dhttps://gitcode.net/kvdb/rocksdb/-/commit/ffcfbaa5843516ffdd8ec4a84173a0272c7b15eeupdate HISTORY.md and version.h for 8.4.42023-09-01T13:51:51-07:00Andrew Kryczkaandrew.kryczka2@gmail.com
> NOTE: Entries for next release do not go here. Follow instructions in `unreleased_history/README.txt`
## 8.4.4 (09/01/2023)
### Bug Fixes
* Fix a bug where if there is an error reading from offset 0 of a file from L1+ and that the file is not the first file in the sorted run, data can be lost in compaction and read/scan can return incorrect results.
* Fix a bug where iterator may return incorrect result for DeleteRange() users if there was an error reading from a file.
* Fixed a race condition in `GenericRateLimiter` that could cause it to stop granting requests
## 8.4.3 (07/27/2023)
### Bug Fixes
* Fix use_after_free bug in async_io MultiReads when underlying FS enabled kFSBuffer. kFSBuffer is when underlying FS pass their own buffer instead of using RocksDB scratch in FSReadRequest.