瀏覽代碼

Merge pull request #943 from docker/fix_graph

Fix processing dependency graph only onces per node
Guillaume Tardif 5 年之前
父節點
當前提交
a4dfe706d6
共有 1 個文件被更改,包括 5 次插入0 次删除
  1. 5 0
      local/dependencies.go

+ 5 - 0
local/dependencies.go

@@ -31,9 +31,13 @@ func inDependencyOrder(ctx context.Context, project *types.Project, fn func(cont
 	eg, ctx := errgroup.WithContext(ctx)
 	results := make(chan string)
 	errors := make(chan error)
+	scheduled := map[string]bool{}
 	for len(graph) > 0 {
 		for _, n := range graph.independents() {
 			service := n.service
+			if scheduled[service.Name] {
+				continue
+			}
 			eg.Go(func() error {
 				err := fn(ctx, service)
 				if err != nil {
@@ -43,6 +47,7 @@ func inDependencyOrder(ctx context.Context, project *types.Project, fn func(cont
 				results <- service.Name
 				return nil
 			})
+			scheduled[service.Name] = true
 		}
 		select {
 		case result := <-results: