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) { | ||||
| 	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 | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	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 | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	ref, err := app.Appender.AppendHistogram(ref, lset, t, h, fh) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
|  |  | |||
|  | @ -517,6 +517,11 @@ func TestBucketLimitAppender(t *testing.T) { | |||
| 			limit:       3, | ||||
| 			expectError: true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			h:           example, | ||||
| 			limit:       4, | ||||
| 			expectError: false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			h:           example, | ||||
| 			limit:       10, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue