argoproj/argo-workflows · error
failed to get pod from informer store: %w
Error message
failed to get pod from informer store: %w
What it means
createAgentPod looks up the agent pod for the workflow from the controller's pod informer store (not a live API call). If the informer store lookup fails, the error is wrapped as 'failed to get pod from informer store: %w'. Note a clean 'not found' result (nil pod, nil err) is expected and proceeds to pod creation; this error means the lookup itself failed.
Source
Thrown at workflow/controller/agent.go:123
MountPath: "/etc/ssl/certs/ca-certificates/",
ReadOnly: true,
}
return certVolume, certVolumeMount, nil
}
return nil, nil, nil
}
func (woc *wfOperationCtx) createAgentPod(ctx context.Context) (*apiv1.Pod, error) {
if woc.controller.Config.DisableAgentPodCreation {
return nil, nil
}
podName := woc.getAgentPodName()
ctx, log := woc.log.WithField("podName", podName).InContext(ctx)
pod, err := woc.controller.PodController.GetPod(woc.wf.Namespace, podName)
if err != nil {
return nil, fmt.Errorf("failed to get pod from informer store: %w", err)
}
if pod != nil {
return pod, nil
}
certVolume, certVolumeMount, err := woc.getCertVolumeMount(ctx, common.CACertificatesVolumeMountName)
if err != nil {
return nil, err
}
pluginSidecars, pluginVolumes, err := woc.getExecutorPlugins(ctx)
if err != nil {
return nil, err
}
envVars := []apiv1.EnvVar{
{Name: common.EnvVarWorkflowName, Value: woc.wf.Name},
{Name: common.EnvVarWorkflowUID, Value: string(woc.wf.UID)},View on GitHub (pinned to 35bff19146)
Solutions
- Wait for the controller to resync and the workflow to be re-reconciled (reconciliation is periodic; this is often transient)
- Check controller logs around startup for informer sync failures
- Restart the workflow-controller if the informer store remains unhealthy
- Ensure only one controller instance is reconciling the namespace (leader election healthy)
Defensive patterns
Strategy: retry
Try / catch
pod, err := podController.GetPod(ns, name)
if err != nil {
// informer store hiccup: requeue and retry on next reconcile
return nil, fmt.Errorf("...: %w", err)
} Prevention
- Ensure informers are synced before reconciling (HasSynced checks)
- Run a single leader-elected controller per namespace
- Restart controller if cache stays unsynced; watch startup logs
When it happens
Trigger: PodController.GetPod(namespace, podName) returns an error during reconcileAgentPod — typically informer cache sync issues, store closed during controller shutdown, or an internal cache error — while creating/reconciling the agent pod.
Common situations: Controller restarting while workflows are being reconciled; informer not yet synced after controller startup; heavy load causing cache resync problems; unit/integration tests exercising createAgentPod with an unprimed informer.
Related errors
- failed to get pod from informer store: %w
- failed to read container args file %s: %w
- failed to unmarshal container args: %w
- failed to read template: %w
- failed to start command: %w
AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03).
Data as JSON: /api/errors/27ba6c1b59a197af.
Report an issue: GitHub.