Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add compatibility for sort without ext labels #6451

Closed
wants to merge 2 commits into from

Conversation

fpetkovski
Copy link
Contributor

In #6299 we changed the comparison algorithm in the store proxy to ignore store-specific external labels. This causes problems during long rollouts because old stores and new stores will sort data differently, leading to incorrectly deduplicated results.

This commit adds a new flag to the store info message to indicate whether the store sorts data with or without external labels. The querier uses this flag to decide whether to resort the store response set before starting a merge.

  • I added CHANGELOG entry for this change.
  • Change is not relevant to the end user.

Changes

  • Resort response set data if stores do not support sorting without external labels.

Verification

  • This was tested in a staging environment by running a querier from the branch against stores with an old version.
  • Added a unit test for the sorting functionality.

In thanos-io#6299 we changed the comparison
algorithm in the store proxy to ignore store-specific external labels.
This causes problems during long rollouts because old stores and new stores
will sort data differently, leading to incorrectly deduplicated results.

This commit adds a new flag to the store info message to indicate
whether the store sorts data with or without external labels.
The querier uses this flag to decide whether to resort the store response set
before starting a merge.

Signed-off-by: Filip Petkovski <[email protected]>
for _, s := range set {
func sortWithoutLabels(set []*storepb.SeriesResponse, storeLabels map[string]struct{}, labelsToRemove map[string]struct{}) {
extLabels := make([]labels.Labels, len(set))
lblScratch := labels.Labels{}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

37% of developers fix this issue

SA4006: this value of lblScratch is never used


ℹ️ Expand to see all @sonatype-lift commands

You can reply with the following commands. For example, reply with @sonatype-lift ignoreall to leave out all findings.

Command Usage
@sonatype-lift ignore Leave out the above finding from this PR
@sonatype-lift ignoreall Leave out all the existing findings from this PR
@sonatype-lift exclude <file|issue|path|tool> Exclude specified file|issue|path|tool from Lift findings by updating your config.toml file

Note: When talking to LiftBot, you need to refresh the page to see its response.
Click here to add LiftBot to another repo.

})

for i, _ := range set {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

S1005: unnecessary assignment to the blank identifier


ℹ️ Expand to see all @sonatype-lift commands

You can reply with the following commands. For example, reply with @sonatype-lift ignoreall to leave out all findings.

Command Usage
@sonatype-lift ignore Leave out the above finding from this PR
@sonatype-lift ignoreall Leave out all the existing findings from this PR
@sonatype-lift exclude <file|issue|path|tool> Exclude specified file|issue|path|tool from Lift findings by updating your config.toml file

Note: When talking to LiftBot, you need to refresh the page to see its response.
Click here to add LiftBot to another repo.

})

for i, _ := range set {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

44% of developers fix this issue

gofmt: File is not gofmt-ed with -s


ℹ️ Expand to see all @sonatype-lift commands

You can reply with the following commands. For example, reply with @sonatype-lift ignoreall to leave out all findings.

Command Usage
@sonatype-lift ignore Leave out the above finding from this PR
@sonatype-lift ignoreall Leave out all the existing findings from this PR
@sonatype-lift exclude <file|issue|path|tool> Exclude specified file|issue|path|tool from Lift findings by updating your config.toml file

Note: When talking to LiftBot, you need to refresh the page to see its response.
Click here to add LiftBot to another repo.

for _, s := range set {
func sortWithoutLabels(set []*storepb.SeriesResponse, storeLabels map[string]struct{}, labelsToRemove map[string]struct{}) {
extLabels := make([]labels.Labels, len(set))
lblScratch := labels.Labels{}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

23% of developers fix this issue

ineffassign: ineffectual assignment to lblScratch


ℹ️ Expand to see all @sonatype-lift commands

You can reply with the following commands. For example, reply with @sonatype-lift ignoreall to leave out all findings.

Command Usage
@sonatype-lift ignore Leave out the above finding from this PR
@sonatype-lift ignoreall Leave out all the existing findings from this PR
@sonatype-lift exclude <file|issue|path|tool> Exclude specified file|issue|path|tool from Lift findings by updating your config.toml file

Note: When talking to LiftBot, you need to refresh the page to see its response.
Click here to add LiftBot to another repo.

@fpetkovski
Copy link
Contributor Author

We will try to solve this problem differently. It seems hard to fix it with compatibility flags.

@fpetkovski fpetkovski closed this Jul 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant