diff --git a/local/convergence.go b/local/convergence.go index b47899dd8..72689d77c 100644 --- a/local/convergence.go +++ b/local/convergence.go @@ -40,7 +40,10 @@ const ( ) func (s *local) ensureService(ctx context.Context, project *types.Project, service types.ServiceConfig) error { - s.waitDependencies(ctx, project, service) + err := s.waitDependencies(ctx, project, service) + if err != nil { + return err + } actual, err := s.containerService.apiClient.ContainerList(ctx, moby.ContainerListOptions{ Filters: filters.NewArgs( @@ -117,7 +120,10 @@ func (s *local) waitDependencies(ctx context.Context, project *types.Project, se switch config.Condition { case "service_healthy": eg.Go(func() error { - for range time.Tick(500 * time.Millisecond) { + ticker := time.NewTicker(500 * time.Millisecond) + defer ticker.Stop() + for { + <-ticker.C healthy, err := s.isServiceHealthy(ctx, project, dep) if err != nil { return err @@ -126,7 +132,6 @@ func (s *local) waitDependencies(ctx context.Context, project *types.Project, se return nil } } - return nil }) } } diff --git a/local/dependencies.go b/local/dependencies.go index 1d5e6bf33..e5ac9a77d 100644 --- a/local/dependencies.go +++ b/local/dependencies.go @@ -62,9 +62,9 @@ type node struct { dependent []string } -func (d dependencyGraph) independents() []node { +func (graph dependencyGraph) independents() []node { var nodes []node - for _, node := range d { + for _, node := range graph { if len(node.dependencies) == 0 { nodes = append(nodes, node) } diff --git a/local/util.go b/local/util.go index adc1b2e2c..c49af75dd 100644 --- a/local/util.go +++ b/local/util.go @@ -40,12 +40,3 @@ func contains(slice []string, item string) bool { } return false } - -func containsAll(slice []string, items []string) bool { - for _, i := range items { - if !contains(slice, i) { - return false - } - } - return true -}