{"record":{"id":"c25b8df40e9c1356","repo":"argoproj/argo-workflows","slug":"was-not-able-to-retrieve-node","errorCode":null,"errorMessage":"was not able to retrieve node","messagePattern":"was not able to retrieve node","errorType":"http","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/artifacts/artifact_server.go","lineNumber":681,"sourceCode":"\t}\n\n\thttp.Error(w, http.StatusText(statusCode), statusCode)\n\tif statusCode == http.StatusInternalServerError {\n\t\tlogging.RequireLoggerFromContext(ctx).WithError(err).Error(ctx, \"Artifact Server returned internal error\")\n\t}\n}\n\nfunc (a *ArtifactServer) getArtifactAndDriver(ctx context.Context, nodeID, artifactName string, isInput bool, wf *wfv1.Workflow, fileName *string) (*wfv1.Artifact, common.ArtifactDriver, error) {\n\tlogger := logging.RequireLoggerFromContext(ctx)\n\n\tkubeClient := auth.GetKubeClient(ctx)\n\n\tvar art *wfv1.Artifact\n\n\tnodeStatus, err := wf.Status.Nodes.Get(nodeID)\n\tif err != nil {\n\t\tlogger.WithError(err).WithField(\"nodeID\", nodeID).Error(ctx, \"Was unable to retrieve node\")\n\t\treturn nil, nil, fmt.Errorf(\"was not able to retrieve node\")\n\t}\n\tif isInput {\n\t\tart = nodeStatus.Inputs.GetArtifactByName(artifactName)\n\t} else {\n\t\tart = nodeStatus.Outputs.GetArtifactByName(artifactName)\n\t}\n\tif art == nil {\n\t\treturn nil, nil, fmt.Errorf(\"artifact not found: %s, isInput=%t, Workflow Status=%+v\", artifactName, isInput, wf.Status)\n\t}\n\n\t// Artifact Location can be defined in various places:\n\t// 1. In the Artifact itself\n\t// 2. Defined by Controller configmap\n\t// 3. Workflow spec defines artifactRepositoryRef which is a ConfigMap which defines the location\n\t// 4. Template defines ArchiveLocation\n\t// 5. Inline Template\n\n\tvar archiveLocation *wfv1.ArtifactLocation","sourceCodeStart":663,"sourceCodeEnd":699,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/server/artifacts/artifact_server.go#L663-L699","documentation":"getArtifactAndDriver could not find the workflow node status for the requested nodeID (wf.Status.Nodes.Get failed). Without the node there is no artifact metadata, so the artifact request cannot proceed; the underlying get error is logged but deliberately omitted from the returned message.","triggerScenarios":"Thrown at server/artifacts/artifact_server.go:681 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the node ID belongs to the workflow (check `argo get` output)","If the workflow is archived/offloaded, ensure hydration/DB access works on the server"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}