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.
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
Receiver: Validate labels in write requests #5508
Receiver: Validate labels in write requests #5508
Changes from 12 commits
0fa864b
62dc02a
246bc38
e2700fb
6830c6a
93d07d5
127b606
a722203
1b870b4
155c8e3
56677ac
12b2dcb
bb45775
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
Any concerns with increasing write latency due to this added validation?
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.
We could benchmark it so that we can make an informed decision about how much the latency changes. Maybe the validation is negligible compared to the storing or the metrics in the TSDB, maybe not.
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.
Benchmarking if possible would be great. If that's too complicated, I can keep an eye on this after deploying.
Now that you mentioned TSDB, I wonder why it even accepts writing samples with OOO labels. Should we also open an issue in prometheus/prometheus?
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.
I think that is a valid concern, I'd see how complicated it would be to add a benchmark for this.
As for TSDB, I'm not sure whether this was ever a requirement or a problem, I've seen various reference to ordering sprinkled throughout the repo / codebase (prometheus/prometheus#8861 (comment), prometheus/prometheus#10532, prometheus/prometheus#5372), but I cannot find any authoritative doc saying how labels must be ordered at time of ingestion.
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.
I actually realized that we can simplify the validation, since we are expecting the labels to be ordered, we can first check order and then duplication, meaning we don't have to use a map to check duplicates (saving us allocations).
I ran benchmarks from #5533 on old and new code and there's no discernible difference: