PreviousRevisionUnavailable see history edit this page

Talks about: , , and

Symptom

READY=False, REASON=PreviousRevisionUnavailable. The StageSet has spec.rollbackOnFailure set, a run failed, and the controller could not restore the last-good revisions.

Cause

rollbackOnFailure restores the previously-applied artifact revisions by re-fetching their recorded URLs and verifying their digests. That only works while the producer still retains those revisions. This reason means a revision the rollback needs is no longer fetchable — the producer garbage-collected it.

Rollback is best-effort by contract: it works exactly when producers retain. Common triggers:

A configured external rollback store changes the failure shape rather than masking it:

Diagnosis

kubectl --namespace <namespace> describe stageset <name>   # Message names the stage + revision
kubectl --namespace <namespace> get events --field-selector reason=RollbackStoreFailed

Check the producer’s retention. For a JaaS snippet:

kubectl --namespace <namespace> get jsonnetsnippet <name> --output jsonpath='{.spec.history}'

Remediation

The cluster is left at the partially-applied failed state; resolve the underlying failure (see the failing stage’s own runbook) and fix forward — the StageSet converges once the desired revision applies cleanly.

To make rollback reliable in future, either: