Revisit waitgroup (#241)

* Fix Add to waitgroup out of goroutines calling wg.Done()
* Pass waitgroup to other loop functions
This commit is contained in:
Quentin McGaw
2020-09-12 14:34:15 -04:00
committed by GitHub
parent 1c012e4c92
commit e0e450ca1c
8 changed files with 33 additions and 20 deletions

View File

@@ -14,7 +14,7 @@ import (
type Looper interface {
Run(ctx context.Context, wg *sync.WaitGroup)
RunRestartTicker(ctx context.Context)
RunRestartTicker(ctx context.Context, wg *sync.WaitGroup)
Restart()
Start()
Stop()
@@ -139,7 +139,6 @@ func (l *looper) waitForSubsequentStart(ctx context.Context, unboundCancel conte
}
func (l *looper) Run(ctx context.Context, wg *sync.WaitGroup) {
wg.Add(1)
defer wg.Done()
const fallback = false
l.useUnencryptedDNS(fallback)
@@ -282,7 +281,8 @@ func (l *looper) useUnencryptedDNS(fallback bool) {
l.logger.Error("no ipv4 DNS address found for providers %s", settings.Providers)
}
func (l *looper) RunRestartTicker(ctx context.Context) {
func (l *looper) RunRestartTicker(ctx context.Context, wg *sync.WaitGroup) {
defer wg.Done()
ticker := time.NewTicker(time.Hour)
settings := l.GetSettings()
if settings.UpdatePeriod > 0 {