mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-26 06:04:05 -08:00
Fix histogram pool poisoning bu chunkenc.Iterator
chunkenc.Iterator.AtFloatHistogram may do a shallow copy if it receives nil as input pointer. This can in turn share the span slice with multiple histograms in the matrixSelectorHPool, leading to unexpected errors. Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
This commit is contained in:
parent
e92a18b6ce
commit
37c8c9257b
|
@ -2356,6 +2356,11 @@ loop:
|
||||||
} else {
|
} else {
|
||||||
histograms = append(histograms, HPoint{H: &histogram.FloatHistogram{}})
|
histograms = append(histograms, HPoint{H: &histogram.FloatHistogram{}})
|
||||||
}
|
}
|
||||||
|
if histograms[n].H == nil {
|
||||||
|
// Initialize to non zero to AtFloatHistogram does a copy for sure.
|
||||||
|
// Not an issue in the loop above since that uses an intermediate buffer.
|
||||||
|
histograms[n].H = &histogram.FloatHistogram{}
|
||||||
|
}
|
||||||
histograms[n].T, histograms[n].H = it.AtFloatHistogram(histograms[n].H)
|
histograms[n].T, histograms[n].H = it.AtFloatHistogram(histograms[n].H)
|
||||||
if value.IsStaleNaN(histograms[n].H.Sum) {
|
if value.IsStaleNaN(histograms[n].H.Sum) {
|
||||||
histograms = histograms[:n]
|
histograms = histograms[:n]
|
||||||
|
|
Loading…
Reference in a new issue