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

  1. Avoid list-based artifact features for HDFS artifacts; delete/manage HDFS artifacts manually via hadoop fs commands.
  2. Use a backend that implements ListObjects (S3, GCS, Azure, OSS) if you need artifact enumeration.
  3. Implement ListObjects in workflow/artifacts/hdfs/hdfs.go using the hdfs client's ReadDir if you control the fork.
  4. 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

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


AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03). Data as JSON: /api/errors/688bf13aa205f3e8. Report an issue: GitHub.