Don't hold labels from store-gateways in two forms, and don't convert them multiple times #9914
+46
−38
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.
What this PR does
Previously, queriers would hold two copies of the labels for each series from a store-gateway: once as a
[]mimirpb.LabelAdapter
(in thestorepb.StreamingSeries
held byblockStreamingQuerierSeriesSet
) and again as alabels.Labels
(passed tonewBlockStreamingQuerierSeries
). This means that queries that select many series use twice as much memory as they need to for labels, which can be problematic for queries that select many series with many labels.This PR modifies the behaviour of queriers to only hold the labels as a
labels.Labels
instance.It also fixes the issue where
[]mimirpb.LabelAdapter
instances are converted tolabels.Labels
multiple times when streaming chunks: once when applying the series limiter, and again for use when iterating through series. Multiple conversions are still used when not streaming chunks, but given this is not the default behaviour and fixing this would be a more complex change, I've chosen to leave it as-is.Which issue(s) this PR fixes or relates to
(none)
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]
.about-versioning.md
updated with experimental features.