Streaming PromQL engine: sort series in matrix at end #8058
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
This PR modifies the behaviour of the streaming PromQL engine to not sort series in the aggregation operator, and instead sort the final matrix value.
Matrix values are expected to be sorted by series labels, so we can't avoid sorting series altogether - but we don't need to sort intermediate results.
Sorting series in the aggregation operator is unnecessary:
Some operators (eg. selectors) will always return series in the correct order, but
slices.SortFunc
handles the case where the input is already sorted relatively efficiently, so this extra sorting pass does not add much overhead (<1% latency in our benchmarks).The final sorting pass does not require more memory utilisation or allocations.
Which issue(s) this PR fixes or relates to
(none)
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]
.about-versioning.md
updated with experimental features.