-
Notifications
You must be signed in to change notification settings - Fork 480
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
*: Don't block flushes on cleaning turns #1124
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this something we can add a test for? I'm imagining a test where we grab the cleaning turn, run a flush/ingest while the turn is held and verify it completes.
Reviewable status: 0 of 5 files reviewed, all discussions resolved (waiting on @jbowens)
A flush isn't marked as complete (and flushing set to false) until deleteObsoleteFiles returns. Currently, deleteObsoleteFiles waits for other cleaning turns to complete before doing its own cleaning. This could make flushes wait for cleanup after large compactions, causing write stalls. This change makes flushes move along and mark themselves as completed if a cleaner job is already running, instead of waiting for them. This allows for a lower impact on user-observed write latency.
48a0e53
to
6f7a8c3
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a test! Basically does just that - grabs a cleaning turn then does a flush.
Reviewable status: 0 of 7 files reviewed, all discussions resolved (waiting on @jbowens)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: 0 of 7 files reviewed, all discussions resolved (waiting on @jbowens)
TFTR! |
A flush isn't marked as complete (and flushing set to
false) until deleteObsoleteFiles returns. Currently,
deleteObsoleteFiles waits for other cleaning turns to complete
before doing its own cleaning. This could make flushes wait
for cleanup after large compactions, causing write stalls.
This change makes flushes move along and mark themselves as
completed if a cleaner job is already running, instead of waiting
for them. This allows for a lower impact on user-observed
write latency.