# Clear Helm "another operation is in progress"

## TL;DR
A previous helm operation was interrupted and left the release in a pending state. Check `helm list --pending`, then roll back to a good revision or uninstall and reinstall. Only delete the release's storage secret as a last resort. Helm keeps release state in secrets and refuses concurrent operations, so the stale pending state has to be resolved before anything else runs.

```text
helm "another operation (install/upgrade/rollback) is in progress": how to clear
```

## Steps

1. **Find the stuck release.** Run `helm list -n [namespace] --pending` (add `-a` to see everything).
   Expected: the release shows as pending-install, pending-upgrade, or pending-rollback.

2. **See what got stuck.** Run `helm history [release] -n [namespace]`.
   Expected: the revision list shows which operation never completed.

3. **Try rolling back.** Run `helm rollback [release] [revision] -n [namespace]` to the last good revision.
   Expected: the release returns to deployed status.

4. **If rollback fails, uninstall and reinstall.** Run `helm uninstall [release] -n [namespace]`, then install fresh.
   Expected: a clean release with no pending state.

5. **Last resort: remove the lock secret.** List secrets with the helm owner label for the release name, identify the specific version secret holding the pending state, and delete just that one.
   Expected: helm no longer sees the lock and a fresh install works.

## Use this when
- Helm refuses with "another operation (install/upgrade/rollback) is in progress"
- A CI job was killed mid-upgrade and left the release wedged
- Upgrades hang and every retry hits the lock

## Not for this skill when
- Helm fails with a template rendering error (that is chart syntax)
- The operation times out waiting on resources (that is readiness, not a lock)
- Helm says the release was not found (different problem)

## Variant phrasings
- helm release stuck pending
- helm upgrade already in progress
- clear helm lock
- helm pending-upgrade how to fix

## Why it happens
Helm 3 stores each release revision as a secret in the namespace. An interrupted operation (killed CI job, timed-out client, crashed shell) leaves the newest secret in a pending state. Every new operation checks that state first and refuses to proceed while it says in-progress.

## Edge cases
- Deleting the wrong secret wipes release history. Match the release name and version carefully before deleting.
- In CI, a killed job is the usual cause. Add sane timeouts so jobs fail cleanly instead of being murdered mid-upgrade.
- `helm uninstall --wait` avoids racing the next install against terminating resources.
- If the pending state keeps coming back, something is re-triggering upgrades. Check your CD pipeline before blaming helm.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_OD6ToUeDwn8F76oYrS-Img
