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

fix: Return empty vector instead of nil for empty evaluator. #13485

Merged
merged 5 commits into from
Jul 11, 2024

Conversation

jeschkies
Copy link
Contributor

@jeschkies jeschkies commented Jul 11, 2024

What this PR does / why we need it:
In case an underlying step evaluator in the query engine would return false for Next() the engine would return nil instead of an empty vector.

This issues has not been noticed because all current evaluators would always return true with an empty vector. However, the new last_over_time and first_over_time merge evaluators broke that convention here. It returns true with an empty vector.

Checklist

  • Reviewed the CONTRIBUTING.md guide (required)
  • Documentation added
  • Tests updated
  • Title matches the required conventional commits format, see here
    • Note that Promtail is considered to be feature complete, and future development for logs collection will be in Grafana Alloy. As such, feat PRs are unlikely to be accepted unless a case can be made for the feature actually being a bug fix to existing behavior.
  • Changes that require user attention or interaction to upgrade are documented in docs/sources/setup/upgrade/_index.md
  • For Helm chart changes bump the Helm chart version in production/helm/loki/Chart.yaml and update production/helm/loki/CHANGELOG.md and production/helm/loki/README.md. Example PR
  • If the change is deprecating or removing a configuration option, update the deprecated-config.yaml and deleted-config.yaml files respectively in the tools/deprecated-config-checker directory. Example PR

@grafanabot
Copy link
Collaborator

Hello @jeschkies!
Backport pull requests need to be either:

  • Pull requests which address bugs,
  • Urgent fixes which need product approval, in order to get merged,
  • Docs changes.

Please, if the current pull request addresses a bug fix, label it with the type/bug label.
If it already has the product approval, please add the product-approved label. For docs changes, please add the type/docs label.
If the pull request modifies CI behaviour, please add the type/ci label.
If none of the above applies, please consider removing the backport label and target the next major/minor release.
Thanks!

}

func (q *query) JoinSampleVector(next bool, r StepResult, stepEvaluator StepEvaluator, maxSeries int) (promql_parser.Value, error) {

Copy link
Contributor Author

Choose a reason for hiding this comment

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

that's my formatted ^^

pkg/logql/engine.go Outdated Show resolved Hide resolved
@jeschkies jeschkies added the type/bug Somehing is not working as expected label Jul 11, 2024
@grafanabot
Copy link
Collaborator

This PR must be merged before a backport PR will be created.

@chaudum
Copy link
Contributor

chaudum commented Jul 11, 2024

However, the new last_over_time and first_over_time merge evaluators broke that convention here.

As commented in the code, we should not break the convention.

@jeschkies jeschkies requested a review from chaudum July 11, 2024 12:57
Copy link
Contributor

@cstyan cstyan left a comment

Choose a reason for hiding this comment

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

discussed on slack with Karsten, LGTM 👍

@cstyan cstyan merged commit 08615bf into grafana:main Jul 11, 2024
60 checks passed
@grafanabot
Copy link
Collaborator

The backport to k210 failed:

The process '/usr/bin/git' failed with exit code 1

To backport manually, run these commands in your terminal:

# Fetch latest updates from GitHub
git fetch
# Create a new branch
git switch --create backport-13485-to-k210 origin/k210
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x 08615bf7519b31e825903577427f7407194baf74

When the conflicts are resolved, stage and commit the changes:

git add . && git cherry-pick --continue

If you have the GitHub CLI installed:

# Push the branch to GitHub:
git push --set-upstream origin backport-13485-to-k210
# Create the PR body template
PR_BODY=$(gh pr view 13485 --json body --template 'Backport 08615bf7519b31e825903577427f7407194baf74 from #13485{{ "\n\n---\n\n" }}{{ index . "body" }}')
# Create the PR on GitHub
echo "${PR_BODY}" | gh pr create --title 'chore: [k210] fix: Return empty vector instead of nil for empty evaluator.' --body-file - --label 'size/M' --label 'type/bug' --label 'backport' --base k210 --milestone k210 --web

Or, if you don't have the GitHub CLI installed (we recommend you install it!):

# Push the branch to GitHub:
git push --set-upstream origin backport-13485-to-k210

# Create a pull request where the `base` branch is `k210` and the `compare`/`head` branch is `backport-13485-to-k210`.

# Remove the local backport branch
git switch main
git branch -D backport-13485-to-k210

@grafanabot
Copy link
Collaborator

The backport to k210 failed:

The process '/usr/bin/git' failed with exit code 1

To backport manually, run these commands in your terminal:

# Fetch latest updates from GitHub
git fetch
# Create a new branch
git switch --create backport-13485-to-k210 origin/k210
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x 08615bf7519b31e825903577427f7407194baf74

When the conflicts are resolved, stage and commit the changes:

git add . && git cherry-pick --continue

If you have the GitHub CLI installed:

# Push the branch to GitHub:
git push --set-upstream origin backport-13485-to-k210
# Create the PR body template
PR_BODY=$(gh pr view 13485 --json body --template 'Backport 08615bf7519b31e825903577427f7407194baf74 from #13485{{ "\n\n---\n\n" }}{{ index . "body" }}')
# Create the PR on GitHub
echo "${PR_BODY}" | gh pr create --title 'chore: [k210] fix: Return empty vector instead of nil for empty evaluator.' --body-file - --label 'size/M' --label 'type/bug' --label 'backport' --base k210 --milestone k210 --web

Or, if you don't have the GitHub CLI installed (we recommend you install it!):

# Push the branch to GitHub:
git push --set-upstream origin backport-13485-to-k210

# Create a pull request where the `base` branch is `k210` and the `compare`/`head` branch is `backport-13485-to-k210`.

# Remove the local backport branch
git switch main
git branch -D backport-13485-to-k210

cstyan added a commit that referenced this pull request Jul 11, 2024
cstyan added a commit that referenced this pull request Jul 11, 2024
@jeschkies jeschkies deleted the karsten/fix-last-over-time-panic branch August 22, 2024 20:24
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.

4 participants