store-gateways: extract read locking during Series #3546
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.
Series() acquires a per-tenant lock when starting to read from a block.
The reason is to prevent a race between addBlock, removeBlock, and
reading from these blocks (for example a block is unloaded after Series()
has already selected it for querying; when accessing this block's
index header we will be using an mmaped file which was deleted from
disk). It needs to release this lock once it has opened an indexReader
because blocks will wait for all open indexReaders to close before
being unloaded.
This PR moves this locking outside of Series() so we can use further
simplify the code in #3540 (see comment)
Signed-off-by: Dimitar Dimitrov dimitar.dimitrov@grafana.com