Skip to content
Latchkey

Helm Release Stuck in "pending-upgrade" - Recover in CI

A Helm release is wedged in a pending-* status because an operation was interrupted and never reached a terminal state. Every later helm upgrade then errors that an operation is already in progress.

What this error means

helm status shows pending-upgrade/pending-install/pending-rollback, and new operations fail with "another operation in progress". The release never settles to deployed on its own.

helm output
$ helm status api -n prod
STATUS: pending-upgrade
# subsequent: Error: UPGRADE FAILED: another operation (install/upgrade/rollback)
# is in progress

Diagnose it: render the chart before you install it

Most Helm failures are visible in the rendered manifests. Template them locally with the same values CI uses and you will usually see the problem without touching the cluster.

Terminal
# what will actually be applied
helm template <release> <chart> -f values.ci.yaml | head -60

# validate against the live cluster schema without installing
helm install <release> <chart> -f values.ci.yaml --dry-run --debug

# what state is the release actually in?
helm history <release>
helm status <release>

Common causes

Interrupted Helm operation

A CI job timeout, cancellation, or crash killed Helm mid-operation, leaving the release record in a pending state with no rollback.

Helm process lost connectivity mid-apply

A network drop to the API server during --wait can leave the operation marked pending even though some changes applied.

How to fix it

Roll back to the last deployed revision

If a previously deployed revision exists, rolling back clears the pending state.

Terminal
helm history api -n prod
helm rollback api <last-deployed-revision> -n prod

Delete the pending release record (no good revision)

For a stuck first install with no deployed revision, remove the pending release secret, then reinstall.

Terminal
kubectl get secret -n prod -l owner=helm,name=api
kubectl delete secret -n prod \
  sh.helm.release.v1.api.v1   # the pending revision's secret
helm upgrade --install api ./chart -n prod

How to prevent it

  • Use --atomic --timeout so interrupted upgrades roll back instead of hanging.
  • Give Helm jobs generous timeouts and avoid cancelling them mid-flight.
  • Serialize releases so retries do not collide with an in-flight operation.

Frequently asked questions

What causes Helm release stuck in "pending-upgrade"?
There are 2 common causes: interrupted helm operation and helm process lost connectivity mid-apply. A CI job timeout, cancellation, or crash killed Helm mid-operation, leaving the release record in a pending state with no rollback.
How do I fix Helm release stuck in "pending-upgrade"?
There are 2 fixes depending on which cause you have: roll back to the last deployed revision and delete the pending release record (no good revision). Work through them in order, since the first is the most common.
What does Helm release stuck in "pending-upgrade" actually mean?
helm status shows pending-upgrade/pending-install/pending-rollback, and new operations fail with "another operation in progress".
How do I stop Helm release stuck in "pending-upgrade" happening again?
Use --atomic --timeout so interrupted upgrades roll back instead of hanging. The prevention section lists 3 changes that keep it from recurring.

Related guides

References

Not every red build is your code. Latchkey repairs the ones that are not, on the runner. Start free → 30-day trial · No credit card