metrics: zero temp variable in updateMeter (#21470)

* metrics: zero temp variable in  updateMeter

Previously the temp variable was not updated properly after summing it to count.
This meant we had astronomically high metrics, now we zero out the temp whenever we
sum it onto the snapshot count

* metrics: move temp variable to be aligned, unit tests

Moves the temp variable in MeterSnapshot to be 64-bit aligned because of the atomic bug.
Adds a unit test, that catches the previous bug.
This commit is contained in:
Marius van der Wijden
2020-08-21 10:04:36 +02:00
committed by GitHub
parent a70a79b285
commit 4e54b1a45e
2 changed files with 22 additions and 2 deletions

View File

@ -73,3 +73,19 @@ func TestMeterZero(t *testing.T) {
t.Errorf("m.Count(): 0 != %v\n", count)
}
}
func TestMeterRepeat(t *testing.T) {
m := NewMeter()
for i := 0; i < 101; i++ {
m.Mark(int64(i))
}
if count := m.Count(); count != 5050 {
t.Errorf("m.Count(): 5050 != %v\n", count)
}
for i := 0; i < 101; i++ {
m.Mark(int64(i))
}
if count := m.Count(); count != 10100 {
t.Errorf("m.Count(): 10100 != %v\n", count)
}
}