mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-11 13:57:36 -08:00
validate exemplar labelSet length first (#8816)
* ignore check exemplar labelSet length when append Signed-off-by: XiaoYu Zhang <ideoutrea@163.com> * validate exemplar labelSet length firstly Signed-off-by: XiaoYu Zhang <ideoutrea@163.com>
This commit is contained in:
parent
e313ffa8ab
commit
277bac622a
|
@ -176,16 +176,11 @@ func (ce *CircularExemplarStorage) ValidateExemplar(l labels.Labels, e exemplar.
|
|||
return ce.validateExemplar(seriesLabels, e, false)
|
||||
}
|
||||
|
||||
// Not thread safe. The append parameters tells us whether this is an external validation, or interal
|
||||
// as a reuslt of an AddExemplar call, in which case we should update any relevant metrics.
|
||||
// Not thread safe. The append parameters tells us whether this is an external validation, or internal
|
||||
// as a result of an AddExemplar call, in which case we should update any relevant metrics.
|
||||
func (ce *CircularExemplarStorage) validateExemplar(l string, e exemplar.Exemplar, append bool) error {
|
||||
idx, ok := ce.index[l]
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Exemplar label length does not include chars involved in text rendering such as quotes
|
||||
// equals sign, or commas. See definiton of const ExemplarMaxLabelLength.
|
||||
// equals sign, or commas. See definition of const ExemplarMaxLabelLength.
|
||||
labelSetLen := 0
|
||||
for _, l := range e.Labels {
|
||||
labelSetLen += utf8.RuneCountInString(l.Name)
|
||||
|
@ -196,6 +191,11 @@ func (ce *CircularExemplarStorage) validateExemplar(l string, e exemplar.Exempla
|
|||
}
|
||||
}
|
||||
|
||||
idx, ok := ce.index[l]
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Check for duplicate vs last stored exemplar for this series.
|
||||
// NB these are expected, and appending them is a no-op.
|
||||
if ce.exemplars[idx.newest].exemplar.Equals(e) {
|
||||
|
|
Loading…
Reference in a new issue