Fixes histograms becoming empty after loaded from checkpoints
This commit is contained in:
parent
200a292f8a
commit
d10948211f
|
|
@ -277,6 +277,7 @@ func (h *histogram) LoadFromCheckpoint(checkpoint *vpa_types.HistogramCheckpoint
|
||||||
h.bucketWeight[bucket] += float64(weight) * ratio
|
h.bucketWeight[bucket] += float64(weight) * ratio
|
||||||
}
|
}
|
||||||
h.totalWeight += checkpoint.TotalWeight
|
h.totalWeight += checkpoint.TotalWeight
|
||||||
|
h.updateMinAndMaxBucket()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -264,6 +264,21 @@ func TestHistogramLoadFromCheckpointReturnsErrorOnNilInput(t *testing.T) {
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHistogramIsNotEmptyAfterSavingAndLoadingCheckpointsWithBoundaryValues(t *testing.T) {
|
||||||
|
histogram := NewHistogram(testHistogramOptions)
|
||||||
|
histogram.AddSample(1, weightEpsilon, anyTime)
|
||||||
|
histogram.AddSample(2, (float64(MaxCheckpointWeight)*weightEpsilon - weightEpsilon), anyTime)
|
||||||
|
assert.False(t, histogram.IsEmpty())
|
||||||
|
|
||||||
|
checkpoint, err := histogram.SaveToChekpoint()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
newHistogram := NewHistogram(testHistogramOptions)
|
||||||
|
err = newHistogram.LoadFromCheckpoint(checkpoint)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.False(t, newHistogram.IsEmpty())
|
||||||
|
}
|
||||||
|
|
||||||
func areUnique(values ...interface{}) bool {
|
func areUnique(values ...interface{}) bool {
|
||||||
dict := make(map[interface{}]bool)
|
dict := make(map[interface{}]bool)
|
||||||
for i, v := range values {
|
for i, v := range values {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue