argoproj/argo-workflows · error
getting archived workflow for estimator not supported
Error message
getting archived workflow for estimator not supported
What it means
nullWorkflowArchive.GetWorkflowForEstimator is the no-op implementation used when workflow archiving is disabled. Estimator logic (used to predict workflow duration from archived runs) needs an archived workflow sample, which does not exist without an archive, so it always returns this error.
Source
Thrown at persist/sqldb/null_workflow_archive.go:43
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
}
func (r *nullWorkflowArchive) ListWorkflowsLabelValues(ctx context.Context, key string) (*wfv1.LabelValues, error) {
return &wfv1.LabelValues{}, nil
}
View on GitHub (pinned to 35bff19146)
Solutions
- Enable workflow archiving via the persistence section in the workflow-controller-configmap so a real archive backs the estimator.
- Disable/avoid estimator-dependent features when archiving is off.
- Guard callers: skip estimation (return no estimate) when the archive repo is the null implementation or archiving is disabled.
- Confirm the server and controller both run with archiving enabled if estimation is expected to work.
Example fix
// before
// wf, err := archive.GetWorkflowForEstimator(ctx, ns, reqs)
// after
// if !archiveEnabled {
// return nil, nil // no estimate available without archive
// }
// wf, err := archive.GetWorkflowForEstimator(ctx, ns, reqs) Defensive patterns
Strategy: type-guard
Validate before calling
// gate estimator usage on archive availability
if !archivingEnabled(ctx) {
return nil, nil // no estimate possible without an archive
} Type guard
func estimatorSupported(archive workflowarchive.Archive) bool {
_, err := archive.GetWorkflowForEstimator(ctx, "default", nil)
return !strings.Contains(fmt.Sprint(err), "not supported")
} Try / catch
wf, err := archive.GetWorkflowForEstimator(ctx, ns, reqs)
if err != nil && strings.Contains(err.Error(), "not supported") {
return nil, nil // degrade gracefully: no duration estimate
} Prevention
- Enable archiving before using estimator/progress features.
- Treat estimates as optional; always degrade gracefully when unavailable.
- Check persistence config on both controller and server at deploy time.
- Document that estimatedDuration requires the workflow archive.
When it happens
Trigger: A workflow template uses an estimator / estimated-duration feature, or server code calls GetWorkflowForEstimator to find a representative archived workflow, while the null archive is wired (archive not configured).
Common situations: Using duration estimation or `estimatedDuration` features on a cluster without persistence enabled; API/UI paths that estimate progress hitting a server with no archive database.
Related errors
- getting archived workflows not supported
- deleting archived workflows not supported
- requires either selector or workflow
- Multiple archived workflows found with name '%s': %s (Crea
- resolve UID: %w
AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03).
Data as JSON: /api/errors/37a5a93dfd740514.
Report an issue: GitHub.