{"record":{"id":"19069f996f2e88d8","repo":"argoproj/argo-workflows","slug":"failed-to-get-pod-from-informer-store-w-19069f","errorCode":null,"errorMessage":"failed to get pod from informer store: %w","messagePattern":"failed to get pod from informer store: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"workflow/controller/workflowpod.go","lineNumber":971,"sourceCode":"\t\tnewActiveDeadlineSeconds := int64(templateDeadline.Sub(pb.in.now).Seconds())\n\t\tif newActiveDeadlineSeconds <= 1 {\n\t\t\treturn nil, fmt.Errorf(\"%s exceeded its deadline\", nodeName)\n\t\t}\n\t\tlog.WithFields(logging.Fields{\"newActiveDeadlineSeconds\": newActiveDeadlineSeconds, \"podNamespace\": pod.Namespace, \"podName\": pod.Name}).Debug(ctx, \"Setting new activeDeadlineSeconds\")\n\t\tpod.Spec.ActiveDeadlineSeconds = &newActiveDeadlineSeconds\n\t}\n\n\t// build is pure: the pod is fully constructed but not yet created. submitPod\n\t// performs the impure operations (ConfigMap/pod creation, rate limiting,\n\t// active-pod accounting, progress write).\n\tresult.Pod = pod\n\treturn result, nil\n}\n\nfunc (woc *wfOperationCtx) podExists(nodeID string) (existing *apiv1.Pod, exists bool, err error) {\n\tobjs, err := woc.controller.PodController.GetPodsByIndex(indexes.NodeIDIndex, woc.wf.Namespace+\"/\"+nodeID)\n\tif err != nil {\n\t\treturn nil, false, fmt.Errorf(\"failed to get pod from informer store: %w\", err)\n\t}\n\n\tobjectCount := len(objs)\n\n\tif objectCount == 0 {\n\t\treturn nil, false, nil\n\t}\n\n\tif objectCount > 1 {\n\t\treturn nil, false, fmt.Errorf(\"expected 1 pod, got %d. This can happen when multiple workflow-controller \"+\n\t\t\t\"pods are running and both reconciling this Workflow. Check your Argo Workflows installation for a rogue \"+\n\t\t\t\"workflow-controller. Otherwise, this is a bug\", len(objs))\n\t}\n\n\tif existing, ok := objs[0].(*apiv1.Pod); ok {\n\t\treturn existing, true, nil\n\t}\n","sourceCodeStart":953,"sourceCodeEnd":989,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/workflow/controller/workflowpod.go#L953-L989","documentation":"podExists() queries the pod informer's index (NodeIDIndex) to find an existing pod for a node ID. If the index lookup itself fails (not 'no results', but an actual error from GetPodsByIndex), the controller wraps it with this message.","triggerScenarios":"woc.controller.PodController.GetPodsByIndex returns an error for the wf.Namespace/nodeID key — informer store not yet synced, index misconfigured, or internal cache error — reached via nodePodExist, executeTemplate, or createWorkflowPod.","commonSituations":"Controller just started and informers are still syncing; memory-pressure or cache invalidation in the informer store; bugs after controller upgrades affecting the NodeIDIndex.","solutions":["Retry the workflow reconciliation — usually transient; check controller logs around startup","Ensure only one workflow-controller version is running and informers are healthy","Check controller metrics/logs for informer sync failures at startup","If persistent, restart the workflow-controller deployment"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// check informer health before relying on indexed lookups\n// controller log: wait for 'informer synced' at startup","typeGuard":null,"tryCatchPattern":"objs, err := woc.controller.PodController.GetPodsByIndex(indexes.NodeIDIndex, key)\nif err != nil {\n    return nil, false, fmt.Errorf(\"failed to get pod from informer store: %w\", err)\n} // caller should treat as transient and requeue","preventionTips":["Let informers sync before submitting workflows after controller restart","Monitor controller startup and informer metrics","Restart the controller if cache errors persist"],"tags":["kubernetes","informer","cache","controller"],"backgroundTag":"informer-cache-error","analyzedSha":"35bff19146f5a6ada77468c431f2624bd577e373","analyzedAt":"2026-09-03T19:34:35.908Z","contentChangedAt":"2026-09-03T19:34:35.908Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}