argoproj/argo-workflows · error
was not able to retrieve node
Error message
was not able to retrieve node
What it means
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.
Source
Thrown at server/artifacts/artifact_server.go:681
}
http.Error(w, http.StatusText(statusCode), statusCode)
if statusCode == http.StatusInternalServerError {
logging.RequireLoggerFromContext(ctx).WithError(err).Error(ctx, "Artifact Server returned internal error")
}
}
func (a *ArtifactServer) getArtifactAndDriver(ctx context.Context, nodeID, artifactName string, isInput bool, wf *wfv1.Workflow, fileName *string) (*wfv1.Artifact, common.ArtifactDriver, error) {
logger := logging.RequireLoggerFromContext(ctx)
kubeClient := auth.GetKubeClient(ctx)
var art *wfv1.Artifact
nodeStatus, err := wf.Status.Nodes.Get(nodeID)
if err != nil {
logger.WithError(err).WithField("nodeID", nodeID).Error(ctx, "Was unable to retrieve node")
return nil, nil, fmt.Errorf("was not able to retrieve node")
}
if isInput {
art = nodeStatus.Inputs.GetArtifactByName(artifactName)
} else {
art = nodeStatus.Outputs.GetArtifactByName(artifactName)
}
if art == nil {
return nil, nil, fmt.Errorf("artifact not found: %s, isInput=%t, Workflow Status=%+v", artifactName, isInput, wf.Status)
}
// Artifact Location can be defined in various places:
// 1. In the Artifact itself
// 2. Defined by Controller configmap
// 3. Workflow spec defines artifactRepositoryRef which is a ConfigMap which defines the location
// 4. Template defines ArchiveLocation
// 5. Inline Template
var archiveLocation *wfv1.ArtifactLocationView on GitHub (pinned to 35bff19146)
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
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at server/artifacts/artifact_server.go:681 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03).
Data as JSON: /api/errors/c25b8df40e9c1356.
Report an issue: GitHub.