Consider limiting transactions per second for read-only and read-write transactions separately
- Dominant language
- C++
- Stars
- 16.7k
- Forks
- 1.6k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 126
Description
When a cluster is running out of space, currently Ratekeeper will severely limit the rate of all transactions. There isn't any need to throttle read-only transactions however, since they won't grow the disk usage. Other reasons for throttling might also only apply to read-write transactions. (See here for more limit reasons: https://github.com/apple/foundationdb/blob/d7252da951272273efefe6f6b98993449dec81eb/fdbserver/Ratekeeper.actor.cpp#L35)
We don't exactly have a good way to know that a transaction is read-only at GRV time (although if we implement [this](https://forums.foundationdb.org/t/developing-a-read-only-fdb-driver/1430/6) proposal to add a read-only transaction option we would)
Contributor guide
Research direction
Start with the throttling reasons in fdbserver/Ratekeeper.actor.cpp, especially the linked section, then read the referenced read-only transaction proposal. Determine how transaction read-only status could be known at GRV time and how the existing limit reasons should distinguish read-only from read-write work. Done would mean a defined, reviewed approach for applying separate transaction limits.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- databases, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100