From 64a9e4bf0139aa32b2bbd6a16d567ef35b26f90c Mon Sep 17 00:00:00 2001 From: Guillaume Lours Date: Sun, 20 Feb 2022 11:59:26 +0100 Subject: [PATCH] fix cyclomatic complexity of composeService.waitDependencies function Signed-off-by: Guillaume Lours --- pkg/compose/convergence.go | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/pkg/compose/convergence.go b/pkg/compose/convergence.go index 844cf331..2e6304f7 100644 --- a/pkg/compose/convergence.go +++ b/pkg/compose/convergence.go @@ -276,14 +276,9 @@ func (s *composeService) waitDependencies(ctx context.Context, project *types.Pr eg, _ := errgroup.WithContext(ctx) w := progress.ContextWriter(ctx) for dep, config := range dependencies { - if config.Condition == types.ServiceConditionStarted { - // already managed by InDependencyOrder - continue - } - if service, err := project.GetService(dep); err != nil { + if shouldWait, err := shouldWaitForDependency(dep, config, project); err != nil { return err - } else if service.Scale == 0 { - // don't wait for the dependency which configured to have 0 containers running + } else if !shouldWait { continue } @@ -340,6 +335,20 @@ func (s *composeService) waitDependencies(ctx context.Context, project *types.Pr return eg.Wait() } +func shouldWaitForDependency(serviceName string, dependencyConfig types.ServiceDependency, project *types.Project) (bool, error) { + if dependencyConfig.Condition == types.ServiceConditionStarted { + // already managed by InDependencyOrder + return false, nil + } + if service, err := project.GetService(serviceName); err != nil { + return false, err + } else if service.Scale == 0 { + // don't wait for the dependency which configured to have 0 containers running + return false, nil + } + return true, nil +} + func nextContainerNumber(containers []moby.Container) (int, error) { max := 0 for _, c := range containers {