mirror of https://github.com/docker/compose.git
Merge pull request #943 from docker/fix_graph
Fix processing dependency graph only onces per node
This commit is contained in:
commit
a4dfe706d6
|
@ -31,9 +31,13 @@ func inDependencyOrder(ctx context.Context, project *types.Project, fn func(cont
|
||||||
eg, ctx := errgroup.WithContext(ctx)
|
eg, ctx := errgroup.WithContext(ctx)
|
||||||
results := make(chan string)
|
results := make(chan string)
|
||||||
errors := make(chan error)
|
errors := make(chan error)
|
||||||
|
scheduled := map[string]bool{}
|
||||||
for len(graph) > 0 {
|
for len(graph) > 0 {
|
||||||
for _, n := range graph.independents() {
|
for _, n := range graph.independents() {
|
||||||
service := n.service
|
service := n.service
|
||||||
|
if scheduled[service.Name] {
|
||||||
|
continue
|
||||||
|
}
|
||||||
eg.Go(func() error {
|
eg.Go(func() error {
|
||||||
err := fn(ctx, service)
|
err := fn(ctx, service)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -43,6 +47,7 @@ func inDependencyOrder(ctx context.Context, project *types.Project, fn func(cont
|
||||||
results <- service.Name
|
results <- service.Name
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
scheduled[service.Name] = true
|
||||||
}
|
}
|
||||||
select {
|
select {
|
||||||
case result := <-results:
|
case result := <-results:
|
||||||
|
|
Loading…
Reference in New Issue