cmol/pprof health (#17303)

health: ensure timers are cleaned up

Updates tailscale/corp#32696

Signed-off-by: Claus Lensbøl <claus@tailscale.com>
pull/17309/head
Claus Lensbøl 2 months ago committed by GitHub
parent 832e94607e
commit 9ae8155bab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -143,15 +143,30 @@ func NewTracker(bus *eventbus.Bus) *Tracker {
panic("no eventbus set")
}
cli := bus.Client("health.Tracker")
ec := bus.Client("health.Tracker")
t := &Tracker{
eventClient: cli,
changePub: eventbus.Publish[Change](cli),
eventClient: ec,
changePub: eventbus.Publish[Change](ec),
}
t.timer = t.clock().AfterFunc(time.Minute, t.timerSelfCheck)
ec.Monitor(t.awaitEventClientDone)
return t
}
func (t *Tracker) awaitEventClientDone(ec *eventbus.Client) {
<-ec.Done()
t.mu.Lock()
defer t.mu.Unlock()
for _, timer := range t.pendingVisibleTimers {
timer.Stop()
}
t.timer.Stop()
clear(t.pendingVisibleTimers)
}
func (t *Tracker) now() time.Time {
if t.testClock != nil {
return t.testClock.Now()

Loading…
Cancel
Save