-
Notifications
You must be signed in to change notification settings - Fork 332
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
Writing manifest files outside of the write thread #3456
Comments
If we update the manifest in the background, we should ensure the background flush and compaction don't corrupt the manifest. For example, a flush job updates the manifest after a truncate action is written to the manifest. Then we might see data still exist after truncation. Fortunately, flush and compaction don't break most operations:
To alter, drop, edit, or truncate a region, we set the state in the worker loop. After that, the region won't be able to process other requests until the background manifest job is done. |
There is a remaining issue: If a region is editing the manifest, then sending another |
What type of enhancement is this?
Performance
What does the enhancement do?
As mentioned in #3447 (comment), we write manifest files inside the region worker thread (the write thread) and is likely to block the thread for a long time if there are many flush jobs.
We should move this operation to the background thread if possible and this should reduce the block time of the worker.
Implementation challenges
Once we write manifests outside of the worker thread, we must find a way to serialize the following operations:
Steps
MitoRegion
#3689The text was updated successfully, but these errors were encountered: