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
- Break the cycle: dependency graphs must be a DAG
- 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.