{"record":{"id":"a2058664edb9dc22","repo":"argoproj/argo-workflows","slug":"artifact-not-found-s-isinput-t-workflow-statu","errorCode":null,"errorMessage":"artifact not found: %s, isInput=%t, Workflow Status=%+v","messagePattern":"artifact not found: (.+?), isInput=%t, Workflow Status=%\\+v","errorType":"http","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/artifacts/artifact_server.go","lineNumber":689,"sourceCode":"func (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\n\ttemplateNode, 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(\"unable to get artifact and driver; could not get node for %s: %w\", nodeID, err)\n\t}\n\ttemplateName := util.GetTemplateFromNode(*templateNode)\n\tif templateName != \"\" {\n\t\ttemplate := wf.GetTemplateByName(templateName)","sourceCodeStart":671,"sourceCodeEnd":707,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/server/artifacts/artifact_server.go#L671-L707","documentation":"The node was found but neither its inputs nor outputs contain an artifact with the requested name (isInput selects which map is searched). The message dumps the whole workflow status to help spot the mismatch between requested and actual artifact names.","triggerScenarios":"Thrown at server/artifacts/artifact_server.go:689 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the exact artifact name via `argo get` on the node","Distinguish input vs output artifacts — artifacts declared under outputs are not in inputs"],"exampleFix":null,"handlingStrategy":"validation","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"}