argoproj/argo-workflows · error

containers %s

Error message

containers %s

What it means

ContainerSetTemplate.Validate's dependency-cycle check (validateNoCycles) found a cycle among container dependencies; this wrapper prefixes the cycle details with 'containers'. The inner error names the cyclic dependency chain.

Source

Thrown at pkg/apis/workflow/v1alpha1/container_set_template_types.go:134

		nameToContainer[ctr.Name] = ctr
	}
	for _, ctr := range in.Containers {
		for _, depName := range ctr.Dependencies {
			_, ok := nameToContainer[depName]
			if !ok {
				return fmt.Errorf("containers.%s dependency '%s' not defined", ctr.Name, depName)
			}
		}
	}

	// Ensure there is no dependency cycle
	depGraph := make(map[string][]string)
	for _, ctr := range in.Containers {
		depGraph[ctr.Name] = append(depGraph[ctr.Name], ctr.Dependencies...)
	}
	err = validateNoCycles(depGraph)
	if err != nil {
		return fmt.Errorf("containers %s", err.Error())
	}
	return nil
}

type ContainerNode struct {
	corev1.Container `json:",inline" protobuf:"bytes,1,opt,name=container"`
	Dependencies     []string `json:"dependencies,omitempty" protobuf:"bytes,2,rep,name=dependencies"`
}

View on GitHub (pinned to 35bff19146)

Solutions

  1. Break the cycle: dependency graphs must be a DAG
  2. Reorder or remove dependencies so no container transitively depends on itself
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/apis/workflow/v1alpha1/container_set_template_types.go:134 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03). Data as JSON: /api/errors/ceb4c76a2b72c2c3. Report an issue: GitHub.