argoproj/argo-workflows · error
getting archived workflows not supported
Error message
getting archived workflows not supported
What it means
nullWorkflowArchive is the no-op archive implementation used when the workflow archive is not configured. GetWorkflow always returns this error because there is no archive database to read from. It replaces the real sqldb-backed archive when persistence is disabled.
Source
Thrown at persist/sqldb/null_workflow_archive.go:39
func (r *nullWorkflowArchive) ArchiveWorkflow(ctx context.Context, wf *wfv1.Workflow) error {
return nil
}
func (r *nullWorkflowArchive) ListWorkflows(ctx context.Context, options sutils.ListOptions) (wfv1.Workflows, error) {
return wfv1.Workflows{}, nil
}
func (r *nullWorkflowArchive) CountWorkflows(ctx context.Context, options sutils.ListOptions) (int64, error) {
return 0, nil
}
func (r *nullWorkflowArchive) HasMoreWorkflows(ctx context.Context, options sutils.ListOptions) (bool, error) {
return false, nil
}
func (r *nullWorkflowArchive) GetWorkflow(ctx context.Context, uid string, namespace string, name string) (*wfv1.Workflow, error) {
return nil, fmt.Errorf("getting archived workflows not supported")
}
func (r *nullWorkflowArchive) GetWorkflowForEstimator(ctx context.Context, namespace string, requirements []labels.Requirement) (*wfv1.Workflow, error) {
return nil, fmt.Errorf("getting archived workflow for estimator not supported")
}
func (r *nullWorkflowArchive) DeleteWorkflow(ctx context.Context, uid string) error {
return fmt.Errorf("deleting archived workflows not supported")
}
func (r *nullWorkflowArchive) DeleteExpiredWorkflows(ctx context.Context, ttl time.Duration) error {
return nil
}
func (r *nullWorkflowArchive) ListWorkflowsLabelKeys(ctx context.Context) (*wfv1.LabelKeys, error) {
return &wfv1.LabelKeys{}, nil
}
View on GitHub (pinned to 35bff19146)
Solutions
- Configure persistence in the workflow-controller-configmap (postgres/mysql endpoint, archive: true) and restart the controller and server.
- If archiving is intentionally off, retrieve the workflow directly (kubectl get wf) rather than from the archive.
- Check that the server is pointed at the deployment where archiving is actually enabled.
- Handle the error in UI/CLI flows by hiding archive features when the archive is not configured.
Example fix
// before (workflow-controller-configmap)
// persistence: {}
// after
// persistence:
// connectionPool:
// maxIdleConns: 100
// postgresql:
// host: postgres
// database: postgres
// archive: true Defensive patterns
Strategy: type-guard
Validate before calling
// feature-detect archive support before calling
if !archivingEnabled(hybridCtx) {
return errors.New("workflow archive is not configured on this server")
} Type guard
func archiveConfigured(archive workflowarchive.Archive) bool {
_, err := archive.GetWorkflow(ctx, "__probe__", "", "")
return err == nil || !strings.Contains(err.Error(), "not supported")
} Try / catch
wf, err := archive.GetWorkflow(ctx, uid, ns, name)
if err != nil && strings.Contains(err.Error(), "not supported") {
return nil, status.Error(codes.Unimplemented, "workflow archive is not configured")
} Prevention
- Enable persistence + archive: true in the controller configmap before exposing archive UI/CLI features.
- Hide/disable archive endpoints when the archive isn't configured.
- Check server startup logs for the archive wiring.
- Fall back to reading live workflows via the k8s API when archiving is off.
When it happens
Trigger: Any request to fetch an archived workflow by UID (argo CLI `argo archive get`, server archived-workflow API, or UI) when persistence/workflow archive is not configured on the server/controller.
Common situations: Deployments without the persistence section in workflow-controller-configmap; users hitting archive endpoints of a server with no database; accidentally scaling down or misconfiguring the archive DB so the null archive is wired.
Related errors
- deleting archived workflows not supported
- operation %v is not supported
- getting archived workflow for estimator not supported
- unsupported db type %s
- requires either selector or workflow
AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03).
Data as JSON: /api/errors/8df0ff881a1ed5e5.
Report an issue: GitHub.