{"record":{"id":"2292a681aa1bd7c4","repo":"argoproj/argo-workflows","slug":"no-node-found-by-the-name-of-s-wf-status-nodes","errorCode":null,"errorMessage":"no Node found by the name of %s;  wf.Status.Nodes=%+v","messagePattern":"no Node found by the name of (.+?);  wf\\.Status\\.Nodes=%\\+v","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"workflow/controller/operator.go","lineNumber":2599,"sourceCode":"\t\t\tif retryPolicy != wfv1.RetryPolicyAlways &&\n\t\t\t\tretryPolicy != wfv1.RetryPolicyOnError &&\n\t\t\t\tretryPolicy != wfv1.RetryPolicyOnTransientError {\n\t\t\t\trelease = true\n\t\t\t}\n\t\t}\n\t\tif release {\n\t\t\twoc.controller.syncManager.Release(ctx, woc.wf, node.ID, processedTmpl.Synchronization)\n\t\t\treturn node, err\n\t\t}\n\t}\n\n\tif node.Fulfilled() {\n\t\twoc.controller.syncManager.Release(ctx, woc.wf, node.ID, processedTmpl.Synchronization)\n\t}\n\n\tretrieveNode, retrieveErr := woc.wf.GetNodeByName(node.Name)\n\tif retrieveErr != nil {\n\t\tnodeErr := fmt.Errorf(\"no Node found by the name of %s;  wf.Status.Nodes=%+v\", node.Name, woc.wf.Status.Nodes)\n\t\twoc.log.Error(ctx, nodeErr.Error())\n\t\twoc.markWorkflowError(ctx, nodeErr)\n\t\treturn node, nodeErr\n\t}\n\tnode = retrieveNode\n\n\t// Swap the node back to retry node\n\tif retryNodeName != \"\" {\n\t\tretryNode, getErr := woc.wf.GetNodeByName(retryNodeName)\n\t\tif getErr != nil {\n\t\t\tretryErr := fmt.Errorf(\"no Retry Node found by the name of %s;  wf.Status.Nodes=%+v\", retryNodeName, woc.wf.Status.Nodes)\n\t\t\twoc.log.Error(ctx, retryErr.Error())\n\t\t\twoc.markWorkflowError(ctx, retryErr)\n\t\t\treturn node, retryErr\n\t\t}\n\n\t\tif !retryNode.Phase.Fulfilled(retryNode.TaskResultSynced) && node.Phase.Fulfilled(node.TaskResultSynced) { // if the retry child has completed we need to update the parent's status\n\t\t\tretryNode, err = woc.executeTemplate(ctx, retryNodeName, orgTmpl, tmplCtx, args, opts)","sourceCodeStart":2581,"sourceCodeEnd":2617,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/workflow/controller/operator.go#L2581-L2617","documentation":"After executing (or observing) a template's node, executeTemplate re-reads the node from the workflow status by name with wf.GetNodeByName. If no node with that name exists in wf.Status.Nodes, it logs the error, marks the whole workflow as Error via markWorkflowError, and returns. This guards against reconciling against a node that has vanished from status.","triggerScenarios":"executeTemplate completes and calls woc.wf.GetNodeByName(node.Name); the node lookup fails because the node record was never persisted, was pruned/truncated from status, or the workflow object in memory diverges from expected state. Raised from any path into executeTemplate: executeDAGTask, runOnExitNode, workflow/template lifecycle hooks, operate().","commonSituations":"Extremely large workflows where node status was offloaded and hydration failed; manual kubectl edits removing nodes; controller restarts racing with stale workflow objects; version-mismatch between controller and CRDs after upgrade.","solutions":["Dump wf.Status.Nodes (kubectl get wf <name> -o yaml) and search for the node name printed in the message to confirm it is missing.","Retry the workflow (argo retry <name>) to rebuild node status from existing pods.","If you hand-edited the Workflow object, restore the original or resubmit cleanly (argo resubmit).","Verify controller and CRD versions match (manifests/install.yaml from the same release); mismatched CRDs can drop status fields.","Check for node-status offloading/hydration issues in controller logs; upgrade Argo Workflows if a known bug applies."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Pre-flight: confirm the node name exists in status before depending on it\nwf, _ := wfClient.ArgoprojV1alpha1().Workflows(ns).Get(ctx, name, metav1.GetOptions{})\nif wf.Status.Nodes.Find(func(n wfv1.NodeStatus) bool { return n.Name == nodeName }) == nil {\n\treturn fmt.Errorf(\"node %q not in status; retry the workflow\", nodeName)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Do not manually prune or edit entries in wf.Status.Nodes.","Keep workflow status small (offloading, artifact logging) to prevent truncation-related loss.","After controller upgrades, verify CRDs from the same release were applied.","Use argo retry (not manual patching) to recover from inconsistent node status."],"tags":["kubernetes","argo-workflows","controller","state-corruption"],"backgroundTag":"missing-node-status","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"}