Turn BlockLease associated type into an enum #4982
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The
BlockReader
trait is not ready to be asyncified, as associated types are not supported by asyncification strategies like via theasync_trait
macro, or via adopting enums.Summary of changes
Remove the
BlockLease
associated type from theBlockReader
trait and turn it into an enum instead, bearing the same name. The enum has two variants, one of which is gated by#[cfg(test)]
. Therefore, outside of test settings, the enum has zero overhead over just having thePageReadGuard
. Using the enum allows us to implBlockReader
without needing the page cache.Part of #4743
Checklist before requesting a review
Checklist before merging