From 984ea1040f35f900ec116b68924e45efb4ec25ca Mon Sep 17 00:00:00 2001 From: tanyadegurechaff Date: Wed, 3 May 2017 00:20:20 +0900 Subject: [PATCH] Fix error handling for docker swarm mode --- provider/docker/docker.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/provider/docker/docker.go b/provider/docker/docker.go index 591c31e86..2b7f28fec 100644 --- a/provider/docker/docker.go +++ b/provider/docker/docker.go @@ -153,15 +153,18 @@ func (p *Provider) Provide(configurationChan chan<- types.ConfigMessage, pool *s if p.Watch { ctx, cancel := context.WithCancel(ctx) if p.SwarmMode { + errChan := make(chan error) // TODO: This need to be change. Linked to Swarm events docker/docker#23827 ticker := time.NewTicker(SwarmDefaultWatchTime) pool.Go(func(stop chan bool) { + defer close(errChan) for { select { case <-ticker.C: services, err := p.listServices(ctx, dockerClient) if err != nil { log.Errorf("Failed to list services for docker, error %s", err) + errChan <- err return } configuration := p.loadDockerConfig(services) @@ -179,6 +182,10 @@ func (p *Provider) Provide(configurationChan chan<- types.ConfigMessage, pool *s } } }) + if err, ok := <-errChan; ok { + return err + } + // channel closed } else { pool.Go(func(stop chan bool) {