mirror of
https://github.com/prometheus/prometheus.git
synced 2025-02-02 08:31:11 -08:00
automatically reduce resolution rather than fail scrape
Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com>
This commit is contained in:
parent
e250f09b5d
commit
b94f32f6fa
|
@ -366,15 +366,23 @@ type bucketLimitAppender struct {
|
||||||
|
|
||||||
func (app *bucketLimitAppender) AppendHistogram(ref storage.SeriesRef, lset labels.Labels, t int64, h *histogram.Histogram, fh *histogram.FloatHistogram) (storage.SeriesRef, error) {
|
func (app *bucketLimitAppender) AppendHistogram(ref storage.SeriesRef, lset labels.Labels, t int64, h *histogram.Histogram, fh *histogram.FloatHistogram) (storage.SeriesRef, error) {
|
||||||
if h != nil {
|
if h != nil {
|
||||||
if len(h.PositiveBuckets)+len(h.NegativeBuckets) > app.limit {
|
for len(h.PositiveBuckets)+len(h.NegativeBuckets) > app.limit {
|
||||||
|
lastSum := len(h.PositiveBuckets) + len(h.NegativeBuckets)
|
||||||
|
h = h.ReduceResolution(h.Schema - 1)
|
||||||
|
if len(h.PositiveBuckets)+len(h.NegativeBuckets) == lastSum {
|
||||||
return 0, errBucketLimit
|
return 0, errBucketLimit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if fh != nil {
|
if fh != nil {
|
||||||
if len(fh.PositiveBuckets)+len(fh.NegativeBuckets) > app.limit {
|
for len(fh.PositiveBuckets)+len(fh.NegativeBuckets) > app.limit {
|
||||||
|
lastSum := len(fh.PositiveBuckets) + len(fh.NegativeBuckets)
|
||||||
|
fh = fh.ReduceResolution(fh.Schema - 1)
|
||||||
|
if len(fh.PositiveBuckets)+len(fh.NegativeBuckets) == lastSum {
|
||||||
return 0, errBucketLimit
|
return 0, errBucketLimit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
ref, err := app.Appender.AppendHistogram(ref, lset, t, h, fh)
|
ref, err := app.Appender.AppendHistogram(ref, lset, t, h, fh)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
|
|
|
@ -517,6 +517,11 @@ func TestBucketLimitAppender(t *testing.T) {
|
||||||
limit: 3,
|
limit: 3,
|
||||||
expectError: true,
|
expectError: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
h: example,
|
||||||
|
limit: 4,
|
||||||
|
expectError: false,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
h: example,
|
h: example,
|
||||||
limit: 10,
|
limit: 10,
|
||||||
|
|
Loading…
Reference in a new issue