cmn: fix race

This commit is contained in:
Ethan Buchman
2017-12-21 14:21:15 -05:00
parent b0b740210c
commit e2d7f1aa41

View File

@ -102,14 +102,14 @@ func NewRepeatTimerWithTicker(name string, ticker Ticker) *RepeatTimer {
name: name, name: name,
} }
t.wg.Add(1) t.wg.Add(1)
go t.fireRoutine(t.ticker) go t.fireRoutine(t.ticker.Chan())
return t return t
} }
func (t *RepeatTimer) fireRoutine(ticker Ticker) { func (t *RepeatTimer) fireRoutine(ch <-chan time.Time) {
for { for {
select { select {
case t_ := <-ticker.Chan(): case t_ := <-ch:
t.Ch <- t_ t.Ch <- t_
case <-t.quit: case <-t.quit:
// needed so we know when we can reset t.quit // needed so we know when we can reset t.quit
@ -129,7 +129,7 @@ func (t *RepeatTimer) Reset() {
t.ticker.Reset() t.ticker.Reset()
t.quit = make(chan struct{}) t.quit = make(chan struct{})
t.wg.Add(1) t.wg.Add(1)
go t.fireRoutine(t.ticker) go t.fireRoutine(t.ticker.Chan())
} }
// For ease of .Stop()'ing services before .Start()'ing them, // For ease of .Stop()'ing services before .Start()'ing them,