argoproj/argo-workflows · warning
ListObjects is currently not supported for this artifact typ
Error message
ListObjects is currently not supported for this artifact type, but it will be in a future version
What it means
The HDFS artifact driver does not implement ListObjects; it returns a placeholder error promising possible future support. The method exists only to satisfy the ArtifactDriver interface. Any code path that enumerates artifacts by prefix for HDFS will fail immediately with this message.
Source
Thrown at workflow/artifacts/hdfs/hdfs.go:250
}
return hdfscli.CopyToRemote(path, driver.Path)
}
// SaveStream saves an artifact from an io.Reader to HDFS compliant storage
func (driver *ArtifactDriver) SaveStream(ctx context.Context, reader io.Reader, outputArtifact *wfv1.Artifact) error {
return common.SaveStreamViaTempFile(reader, "hdfs-upload-*", func(path string) error {
return driver.Save(ctx, path, outputArtifact)
})
}
// Delete is unsupported for the hdfs artifacts
func (driver *ArtifactDriver) Delete(ctx context.Context, s *wfv1.Artifact) error {
return common.ErrDeleteNotSupported
}
func (driver *ArtifactDriver) ListObjects(ctx context.Context, artifact *wfv1.Artifact) ([]string, error) {
return nil, fmt.Errorf("ListObjects is currently not supported for this artifact type, but it will be in a future version")
}
func (driver *ArtifactDriver) IsDirectory(ctx context.Context, artifact *wfv1.Artifact) (bool, error) {
return false, errors.New(errors.CodeNotImplemented, "IsDirectory currently unimplemented for HDFS")
}
View on GitHub (pinned to 35bff19146)
Solutions
- Avoid list-based artifact features for HDFS artifacts; delete/manage HDFS artifacts manually via hadoop fs commands.
- Use a backend that implements ListObjects (S3, GCS, Azure, OSS) if you need artifact enumeration.
- Implement ListObjects in workflow/artifacts/hdfs/hdfs.go using the hdfs client's ReadDir if you control the fork.
- If a workflow fails with this, check the artifact type in your spec — you likely configured `hdfs:` where you meant a listing-capable backend.
Example fix
// before (workflow spec using HDFS for a list-dependent feature) archiveLogs: true # with HDFS archive + GC // after: use S3 for artifacts that need listing/GC s3: bucket: my-bucket key: path/to/artifact
Defensive patterns
Strategy: fallback
Validate before calling
func supportsListObjects(artifactType string) bool {
switch artifactType {
case "s3", "gcs", "azure", "oss":
return true
default:
return false
}
} Try / catch
keys, err := driver.ListObjects(ctx, art)
if err != nil && strings.Contains(err.Error(), "ListObjects is currently not supported") {
// fall back to manual hadoop fs -ls management or skip GC
} Prevention
- Use list-capable backends (S3/GCS/Azure/OSS) for features needing artifact enumeration
- Do not enable artifact GC/archive listing features on HDFS artifact repos
- Document in your platform that HDFS artifacts must be managed via hadoop fs commands
When it happens
Trigger: Any controller/server/CLI feature that lists artifacts of an HDFS artifact — e.g. artifact repository GC or recursive artifact deletion calling ListObjects(ctx, artifact) on an artifact whose HDFS driver is selected.
Common situations: Running workflows that rely on artifact listing/garbage collection features against HDFS artifact repositories; users of S3 features switching to HDFS discover list-dependent features are unavailable.
Related errors
- ListObjects is currently not supported for this artifact typ
- CodeNotFound
- CodeNotImplemented
- failed to test if %s/%s is a directory: %w
- CodeNotFound
AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03).
Data as JSON: /api/errors/688bf13aa205f3e8.
Report an issue: GitHub.