Factor out the infrastructure for reading primary + additional stores #1384
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.
Factor out the repetitive “find primary + additional stores, and lock them in order” parts out of the top-level storage.Store API into helpers:
readAll{Layer,Image}Stores
.Overall, this is just a refactoring that should not change behavior. The goal is to decrease the number of individual call sites to the locking code — so that the code refactored here does not need to be touched again for locking changes.
The more complex readers that don’t fit the simple locking schemes of these helpers remain unchanged; the locking in them will be updated individually.
This could be a bit better with Go 1.18, but that’s for the future.
See individual commit messages for (a bit) more detail.
#1383 is a counterpart for the write paths.