Correctly handle pruning wraparound after ring expansion (#3942)

Fixes #3939
This commit is contained in:
Brian Brazil 2018-03-12 13:16:59 +00:00
parent fcb8e9ac95
commit a8e3d0fc4b
2 changed files with 6 additions and 0 deletions

View file

@ -178,6 +178,7 @@ func (r *sampleRing) add(t int64, v float64) {
r.buf = buf r.buf = buf
r.i = r.f r.i = r.f
r.f += l r.f += l
l = 2 * l
} else { } else {
r.i++ r.i++
if r.i >= l { if r.i >= l {

View file

@ -48,6 +48,11 @@ func TestSampleRing(t *testing.T) {
delta: 7, delta: 7,
size: 1, size: 1,
}, },
{
input: []int64{1, 2, 3, 4, 6},
delta: 4,
size: 4,
},
} }
for _, c := range cases { for _, c := range cases {
r := newSampleRing(c.delta, c.size) r := newSampleRing(c.delta, c.size)