rpc: fix ns/µs mismatch in metrics (#28649)

The rpc/duration/all meter was in nanoseconds, the individual meter in microseconds.
This PR changes it so both of them use nanoseconds.
This commit is contained in:
Martin HS 2023-12-08 09:40:50 +01:00 committed by GitHub
parent 77c4bbcaa5
commit 5a45e7a631
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 7 deletions

@ -106,20 +106,18 @@ func (t *StandardTimer) Time(f func()) {
t.Update(time.Since(ts)) t.Update(time.Since(ts))
} }
// Record the duration of an event. // Record the duration of an event, in nanoseconds.
func (t *StandardTimer) Update(d time.Duration) { func (t *StandardTimer) Update(d time.Duration) {
t.mutex.Lock() t.mutex.Lock()
defer t.mutex.Unlock() defer t.mutex.Unlock()
t.histogram.Update(int64(d)) t.histogram.Update(d.Nanoseconds())
t.meter.Mark(1) t.meter.Mark(1)
} }
// Record the duration of an event that started at a time and ends now. // Record the duration of an event that started at a time and ends now.
// The record uses nanoseconds.
func (t *StandardTimer) UpdateSince(ts time.Time) { func (t *StandardTimer) UpdateSince(ts time.Time) {
t.mutex.Lock() t.Update(time.Since(ts))
defer t.mutex.Unlock()
t.histogram.Update(int64(time.Since(ts)))
t.meter.Mark(1)
} }
// timerSnapshot is a read-only copy of another Timer. // timerSnapshot is a read-only copy of another Timer.

@ -46,5 +46,5 @@ func updateServeTimeHistogram(method string, success bool, elapsed time.Duration
metrics.NewExpDecaySample(1028, 0.015), metrics.NewExpDecaySample(1028, 0.015),
) )
} }
metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(elapsed.Microseconds()) metrics.GetOrRegisterHistogramLazy(h, nil, sampler).Update(elapsed.Nanoseconds())
} }