Consider query select time in max query length check #5808
Merged
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:
Right now, there is a check for max query length in the query frontend query range middleware. It only checks the
start
andend
parameter of range query API and see if it exceeds a maximum time range.However, this check doesn't analyze the query string itself. For example,
up[60d]
. The time window60d
can be very large and exceeds the limit. However, it is not checked at query frontend.To fix this issue, there is another checkfor max query length at Querier right now, which happens per
Select
only and it considers the time range of the query itself. For example,up[60d]
can be rejected at Querier if the limit is configured as 30d.However, this solution isn't perfect because a query can have multiple selects.
rate(up[25d]) + rate(up[25d] offset 25d) + rate(up[25] offset 50d)
actually queries 75 days of data but each select only queries 25 day time range so it will be allowed.To address this issue in a better way, additional check logic is added in Query Frontend to analyze the whole query and see the max time range it queries. With this check, the check at Querier can actually be turned off.
Overall changes:
querier.ignore-max-query-length
to disable checking max query length at Querier.Which issue(s) this PR fixes:
Fixes #
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]