From ea1862aab4e69a26806c8b876b9a80797f190982 Mon Sep 17 00:00:00 2001 From: Linas Medziunas Date: Sat, 25 Nov 2023 11:38:15 +0200 Subject: [PATCH] Explicit schema check in [Float]Histogram.ReduceResolution Signed-off-by: Linas Medziunas --- model/histogram/float_histogram.go | 4 ++++ model/histogram/histogram.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/model/histogram/float_histogram.go b/model/histogram/float_histogram.go index e0f5d208e..05a20f197 100644 --- a/model/histogram/float_histogram.go +++ b/model/histogram/float_histogram.go @@ -1110,6 +1110,10 @@ func floatBucketsMatch(b1, b2 []float64) bool { // ReduceResolution reduces the float histogram's spans, buckets into target schema. // The target schema must be smaller than the current float histogram's schema. func (h *FloatHistogram) ReduceResolution(targetSchema int32) *FloatHistogram { + if targetSchema >= h.Schema { + panic(fmt.Errorf("cannot reduce resolution from schema %d to %d", h.Schema, targetSchema)) + } + h.PositiveSpans, h.PositiveBuckets = reduceResolution(h.PositiveSpans, h.PositiveBuckets, h.Schema, targetSchema, false) h.NegativeSpans, h.NegativeBuckets = reduceResolution(h.NegativeSpans, h.NegativeBuckets, h.Schema, targetSchema, false) h.Schema = targetSchema diff --git a/model/histogram/histogram.go b/model/histogram/histogram.go index 3ebb27fbc..4a12498f2 100644 --- a/model/histogram/histogram.go +++ b/model/histogram/histogram.go @@ -497,6 +497,10 @@ func (c *cumulativeBucketIterator) At() Bucket[uint64] { // ReduceResolution reduces the histogram's spans, buckets into target schema. // The target schema must be smaller than the current histogram's schema. func (h *Histogram) ReduceResolution(targetSchema int32) *Histogram { + if targetSchema >= h.Schema { + panic(fmt.Errorf("cannot reduce resolution from schema %d to %d", h.Schema, targetSchema)) + } + h.PositiveSpans, h.PositiveBuckets = reduceResolution( h.PositiveSpans, h.PositiveBuckets, h.Schema, targetSchema, true, )