File tree Expand file tree Collapse file tree 2 files changed +10
-8
lines changed
Expand file tree Collapse file tree 2 files changed +10
-8
lines changed Original file line number Diff line number Diff line change @@ -131,19 +131,15 @@ var arbiter = meterTicker{meters: make(map[*Meter]struct{})}
131131type meterTicker struct {
132132 mu sync.RWMutex
133133
134- started bool
135- meters map [* Meter ]struct {}
134+ once sync. Once
135+ meters map [* Meter ]struct {}
136136}
137137
138- // add adds another *Meter ot the arbiter, and starts the arbiter ticker.
138+ // add a *Meter to the arbiter
139139func (ma * meterTicker ) add (m * Meter ) {
140140 ma .mu .Lock ()
141141 defer ma .mu .Unlock ()
142142 ma .meters [m ] = struct {}{}
143- if ! ma .started {
144- ma .started = true
145- go ma .loop ()
146- }
147143}
148144
149145// remove removes a meter from the set of ticked meters.
@@ -153,7 +149,7 @@ func (ma *meterTicker) remove(m *Meter) {
153149 ma .mu .Unlock ()
154150}
155151
156- // loop ticks meters on a 5 second interval.
152+ // loop ticks meters on a 5- second interval.
157153func (ma * meterTicker ) loop () {
158154 ticker := time .NewTicker (5 * time .Second )
159155 for range ticker .C {
@@ -167,3 +163,8 @@ func (ma *meterTicker) loop() {
167163 ma .mu .RUnlock ()
168164 }
169165}
166+
167+ // startMeterTickerLoop will start the arbiter ticker.
168+ func startMeterTickerLoop () {
169+ arbiter .once .Do (func () { go arbiter .loop () })
170+ }
Original file line number Diff line number Diff line change @@ -30,6 +30,7 @@ func Enabled() bool {
3030// the program, before any metrics collection will happen.
3131func Enable () {
3232 metricsEnabled = true
33+ startMeterTickerLoop ()
3334}
3435
3536var threadCreateProfile = pprof .Lookup ("threadcreate" )
You can’t perform that action at this time.
0 commit comments