-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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(blooms): Fix partitionSeriesByDay
function
#12900
Conversation
The function `partitionSeriesByDay` could yield empty when chunks were outside of the requested time range. This would result in requests for a time range that does not contain any series and chunks to filter. These requests would return errors. Signed-off-by: Christian Haudum <[email protected]>
Signed-off-by: Christian Haudum <[email protected]>
partitionByDay
functionpartitionSeriesByDay
function
This PR must be merged before a backport PR will be created. |
1 similar comment
This PR must be merged before a backport PR will be created. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Excellent catch 👏 LGTM
func truncateDay(ts model.Time) model.Time { | ||
// model.minimumTick is time.Millisecond | ||
return ts - (ts % model.Time(24*time.Hour/time.Millisecond)) | ||
return model.TimeFromUnix(ts.Time().Truncate(Day).Unix()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❤️
@@ -125,7 +119,7 @@ func partitionSeriesByDay(from, through model.Time, seriesWithChunks []*logproto | |||
}) | |||
|
|||
// All chunks fall outside of the range | |||
if min == len(chunks) || max == 0 { | |||
if min == len(chunks) || max == 0 || min == max { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
idea: I feel we have run already too many times into forgetting to check min==max
maybe we should wrap this search use-case into some Template function or something.
The function `partitionSeriesByDay` could yield empty when chunks were outside of the requested time range. This would result in requests for a time range that does not contain any chunks for a series to filter. These requests would return errors, because a subsequent `partitionSeriesByDay` for would remove that day resulting in no task. Signed-off-by: Christian Haudum <[email protected]> (cherry picked from commit 738c274)
Backport 738c274 from #12900 Co-authored-by: Christian Haudum <[email protected]>
What this PR does / why we need it:
The function
partitionSeriesByDay
could yield empty when chunks were outside of the requested time range.This would result in requests for a time range that does not contain any
chunks for a series to filter. These requests would return errors, because a subsequent
partitionSeriesByDay
for would remove that day resulting in no task.Checklist
CONTRIBUTING.md
guide (required)feat
PRs are unlikely to be accepted unless a case can be made for the feature actually being a bug fix to existing behavior.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