apple / apple/foundationdb

Consider limiting transactions per second for read-only and read-write transactions separately

Open
#4,510 1 comment 1 reaction 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.