prometheus/model/textparse
beorn7 a7c519930e histograms: Add Compact method to the normal integer Histogram
And use the new method to call to compact Histograms during
parsing. This happens for both `Histogram` and `FloatHistogram`. In
this way, if targets decide to optimize the exposition size by merging
spans with empty buckets in between, we still get a normalized
results. It will also normalize away any valid but weird
representations like empty spans, spans with offset zero, and empty
buckets at the start or end of a span.

The implementation seemed easy at first as it just turns the
`compactBuckets` helper into a generic function (which now got its own
file). However, the integer Histograms have delta buckets instead of
absolute buckets, which had to be treated specially in the generic
`compactBuckets` function. To make sure it works, I have added plenty
of explicit tests for `Histogram` in addition to the `FloatHistogram`
tests.

I have also updated the doc comment for the `Compact` method.

Based on the insights now expressed in the doc comment, compacting
with a maxEmptyBuckets > 0 is rarely useful. Therefore, this commit
also sets the value to 0 in the two cases we were using 3 so far. We
might still want to reconsider, so I don't want to remove the
maxEmptyBuckets parameter right now.

Signed-off-by: beorn7 <beorn@grafana.com>
2022-09-27 13:04:16 +02:00
..
interface.go histograms: parse float histograms from proto definition (#11149) 2022-08-25 20:37:41 +05:30
interface_test.go Improve content-type error handling 2022-02-08 11:02:51 +01:00
openmetricslex.l Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00
openmetricslex.l.go refactor (package model): move from github.com/pkg/errors to 'errors' and 'fmt' packages (#10747) 2022-06-27 21:29:19 +02:00
openmetricsparse.go histograms: parse float histograms from proto definition (#11149) 2022-08-25 20:37:41 +05:30
openmetricsparse_test.go Merge branch 'main' into sparsehistogram 2022-07-12 19:07:13 +02:00
promlex.l refactor (package model): move from github.com/pkg/errors to 'errors' and 'fmt' packages (#10747) 2022-06-27 21:29:19 +02:00
promlex.l.go refactor (package model): move from github.com/pkg/errors to 'errors' and 'fmt' packages (#10747) 2022-06-27 21:29:19 +02:00
promparse.go histograms: parse float histograms from proto definition (#11149) 2022-08-25 20:37:41 +05:30
promparse_test.go refactor (package model): move from github.com/pkg/errors to 'errors' and 'fmt' packages (#10747) 2022-06-27 21:29:19 +02:00
promtestdata.nometa.txt Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00
promtestdata.txt Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00
protobufparse.go histograms: Add Compact method to the normal integer Histogram 2022-09-27 13:04:16 +02:00
protobufparse_test.go histograms: parse float histograms from proto definition (#11149) 2022-08-25 20:37:41 +05:30
README.md Move packages out of deprecated pkg directory 2021-11-09 08:03:10 +01:00

Making changes to textparse lexers

In the rare case that you need to update the textparse lexers, edit promlex.l or openmetricslex.l and then run the following command: golex -o=promlex.l.go promlex.l

Note that you need golex installed: go get -u modernc.org/golex