Skip to content

Commit

Permalink
metrics: use resetting histograms for rare packets (ethereum#22586)
Browse files Browse the repository at this point in the history
  • Loading branch information
gzliudan authored and JukLee0ira committed Jan 1, 2025
1 parent e924695 commit b39b17e
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions metrics/resetting_sample.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package metrics

// ResettingSample converts an ordinary sample into one that resets whenever its
// snapshot is retrieved. This will break for multi-monitor systems, but when only
// a single metric is being pushed out, this ensure that low-frequency events don't
// skew th charts indefinitely.
func ResettingSample(sample Sample) Sample {
return &resettingSample{
Sample: sample,
}
}

// resettingSample is a simple wrapper around a sample that resets it upon the
// snapshot retrieval.
type resettingSample struct {
Sample
}

// Snapshot returns a read-only copy of the sample with the original reset.
func (rs *resettingSample) Snapshot() Sample {
s := rs.Sample.Snapshot()
rs.Sample.Clear()
return s
}

0 comments on commit b39b17e

Please sign in to comment.