Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
* [ENHANCEMENT] Upgrade Thanos and promql-engine to latest. #7740
* [ENHANCEMENT] Ruler: Adjust ruler frontend decoder to not wrap query error messages with execution prefix, this makes error responses consistent between internal and external ruler paths. #7741
* [ENHANCEMENT] Distributor: Deduplicate metric metadata when converting PRW 2.0 requests. PRW 2.0 attaches metadata to every series, so a metric family was previously expanded into one `MetricMetadata` per series. #7760
* [ENHANCEMENT] Querier: Use non-pointer HistogramBucket slice in response codec. #7809
* [BUGFIX] Querier: Fix queryWithRetry and labelsWithRetry returning (nil, nil) on cancelled context by propagating ctx.Err(). #7370
* [BUGFIX] Metrics Helper: Fix non-deterministic bucket order in merged histograms by sorting buckets after map iteration, matching Prometheus client library behavior. #7380
* [BUGFIX] Distributor: Return HTTP 401 Unauthorized when tenant ID resolution fails in the Prometheus Remote Write 2.0 path. #7389
Expand Down
6 changes: 3 additions & 3 deletions pkg/querier/codec/protobuf_codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,8 @@ func getVectorSamples(data *v1.QueryData, cortexInternal bool) *[]tripperware.Sa
return &vectorSamples
}

func getBuckets(bucketsLen int, it histogram.BucketIterator[float64]) []*tripperware.HistogramBucket {
buckets := make([]*tripperware.HistogramBucket, bucketsLen)
func getBuckets(bucketsLen int, it histogram.BucketIterator[float64]) []tripperware.HistogramBucket {
buckets := make([]tripperware.HistogramBucket, bucketsLen)
bucketIdx := 0
for it.Next() {
bucket := it.At()
Expand All @@ -229,7 +229,7 @@ func getBuckets(bucketsLen int, it histogram.BucketIterator[float64]) []*tripper
boundaries = 0 // Inclusive only on upper end AKA left open.
}
}
buckets[bucketIdx] = &tripperware.HistogramBucket{
buckets[bucketIdx] = tripperware.HistogramBucket{
Boundaries: int32(boundaries),
Lower: bucket.Lower,
Upper: bucket.Upper,
Expand Down
8 changes: 4 additions & 4 deletions pkg/querier/codec/protobuf_codec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ func TestProtobufCodec_Encode(t *testing.T) {
Histogram: tripperware.SampleHistogram{
Count: 10,
Sum: 20,
Buckets: []*tripperware.HistogramBucket{
Buckets: []tripperware.HistogramBucket{
{
Boundaries: 1,
Upper: -1.414213562373095,
Expand Down Expand Up @@ -342,7 +342,7 @@ func TestProtobufCodec_Encode(t *testing.T) {
Histogram: tripperware.SampleHistogram{
Count: 0,
Sum: 1,
Buckets: []*tripperware.HistogramBucket{},
Buckets: []tripperware.HistogramBucket{},
},
},
},
Expand Down Expand Up @@ -386,7 +386,7 @@ func TestProtobufCodec_Encode(t *testing.T) {
Histogram: tripperware.SampleHistogram{
Count: 10,
Sum: 20,
Buckets: []*tripperware.HistogramBucket{
Buckets: []tripperware.HistogramBucket{
{
Boundaries: 1,
Upper: -1.414213562373095,
Expand Down Expand Up @@ -478,7 +478,7 @@ func TestProtobufCodec_Encode(t *testing.T) {
Histogram: tripperware.SampleHistogram{
Count: 0,
Sum: 1,
Buckets: []*tripperware.HistogramBucket{},
Buckets: []tripperware.HistogramBucket{},
},
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ func TestResponse(t *testing.T) {
Histogram: tripperware.SampleHistogram{
Count: 6342,
Sum: 43.31319875499995,
Buckets: []*tripperware.HistogramBucket{
Buckets: []tripperware.HistogramBucket{
{Boundaries: 0, Upper: 0.0015060652591874421, Lower: 0.0013810679320049755, Count: 1},
{Boundaries: 0, Upper: 0.001642375811042411, Lower: 0.0015060652591874421, Count: 7},
{Boundaries: 0, Upper: 0.0017910235218841233, Lower: 0.001642375811042411, Count: 5},
Expand Down
2 changes: 1 addition & 1 deletion pkg/querier/tripperware/merge_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ var (
testHistogram1 = SampleHistogram{
Count: 13.5,
Sum: 3897.1,
Buckets: []*HistogramBucket{
Buckets: []HistogramBucket{
{
Boundaries: 1,
Lower: -4870.992343051145,
Expand Down
24 changes: 12 additions & 12 deletions pkg/querier/tripperware/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -637,44 +637,44 @@ func UnmarshalSampleHistogramPairJSON(ptr unsafe.Pointer, iter *jsoniter.Iterato
}

// Adapted from https://github.com/prometheus/client_golang/blob/4b158abea9470f75b6f07460cdc2189b91914562/api/prometheus/v1/api.go#L252.
func unmarshalHistogramBucket(iter *jsoniter.Iterator) (*HistogramBucket, error) {
func unmarshalHistogramBucket(iter *jsoniter.Iterator) (HistogramBucket, error) {
b := HistogramBucket{}
if !iter.ReadArray() {
return nil, errors.New("HistogramBucket must be [boundaries, lower, upper, count]")
return b, errors.New("HistogramBucket must be [boundaries, lower, upper, count]")
}
boundaries, err := iter.ReadNumber().Int64()
if err != nil {
return nil, err
return b, err
}
b.Boundaries = int32(boundaries)
if !iter.ReadArray() {
return nil, errors.New("HistogramBucket must be [boundaries, lower, upper, count]")
return b, errors.New("HistogramBucket must be [boundaries, lower, upper, count]")
}
f, err := strconv.ParseFloat(iter.ReadString(), 64)
if err != nil {
return nil, err
return b, err
}
b.Lower = f
if !iter.ReadArray() {
return nil, errors.New("HistogramBucket must be [boundaries, lower, upper, count]")
return b, errors.New("HistogramBucket must be [boundaries, lower, upper, count]")
}
f, err = strconv.ParseFloat(iter.ReadString(), 64)
if err != nil {
return nil, err
return b, err
}
b.Upper = f
if !iter.ReadArray() {
return nil, errors.New("HistogramBucket must be [boundaries, lower, upper, count]")
return b, errors.New("HistogramBucket must be [boundaries, lower, upper, count]")
}
f, err = strconv.ParseFloat(iter.ReadString(), 64)
if err != nil {
return nil, err
return b, err
}
b.Count = f
if iter.ReadArray() {
return nil, errors.New("HistogramBucket has too many values, must be [boundaries, lower, upper, count]")
return b, errors.New("HistogramBucket has too many values, must be [boundaries, lower, upper, count]")
}
return &b, nil
return b, nil
}

// Adapted from https://github.com/prometheus/client_golang/blob/4b158abea9470f75b6f07460cdc2189b91914562/api/prometheus/v1/api.go#L137.
Expand Down Expand Up @@ -731,7 +731,7 @@ func marshalHistogram(h SampleHistogram, stream *jsoniter.Stream) {
stream.WriteArrayStart()
}
bucketFound = true
marshalHistogramBucket(*bucket, stream)
marshalHistogramBucket(bucket, stream)
}

if bucketFound {
Expand Down
Loading