fix(blooms): Fix findGaps when ownership goes to MaxUInt64 and that is covered by existing meta #12558
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 / why we need it:
If a meta and ownership tange covers till the end of the FP key-space (MaxUInt64), the current implementation of
findGaps
overflows and the keyspace covered by that meta is misreported as a gap:loki/pkg/bloomcompactor/controller.go
Line 738 in 4c88be0
In more detail:
loki/pkg/bloomcompactor/controller.go
Lines 738 to 756 in 4c88be0
If we only have one meta spanning the whole keyspace:
leftBound = min(clippedMeta.Max+1, ownershipRange.Max+1)
Here clippedMeta.Max is MaxUint64 so +1 makes this 0if len(xors) == 0 {
is true so we end the loopif leftBound <= ownershipRange.Max {
sinceleftBound
is 0 we get inside here and add the gap.This PR fixes this by taking care of the overflows.
Which issue(s) this PR fixes:
Fixes #12499
Special notes for your reviewer:
Checklist
CONTRIBUTING.md
guide (required)docs/sources/setup/upgrade/_index.md
production/helm/loki/Chart.yaml
and updateproduction/helm/loki/CHANGELOG.md
andproduction/helm/loki/README.md
. Example PRdeprecated-config.yaml
anddeleted-config.yaml
files respectively in thetools/deprecated-config-checker
directory. Example PR