mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-09-27 18:34:18 +00:00
Motivation: Forget and BatchForget in pkg/repository/manager/manager.go accept a caller-provided context.Context but ignore it, hardcoding context.Background() when calling into the repository provider. This means cancellation and timeouts set by callers (e.g. the backup deletion controller) are silently dropped during repository connection and snapshot deletion. Additionally, BatchForget returned a wrapped nil instead of the real connection error when prd.BoostRepoConnect failed, because it referenced an unrelated, already-nil err variable instead of connectErr. Approach: Pass the caller's ctx through to prd.BoostRepoConnect, prd.Forget, and prd.BatchForget in both Forget and BatchForget, instead of substituting context.Background(). Fix BatchForget's connection-failure branch to wrap and return connectErr instead of the stale err. Other methods on manager (InitRepo, ConnectToRepo, PrepareRepo, PruneRepo, UnlockRepo) don't accept a ctx parameter at all, so they are unaffected and out of scope for this change. Validation: - go build ./pkg/repository/... and go build ./... pass. - go vet ./pkg/repository/... is clean. - go test ./pkg/repository/... passes, including three new tests added to pkg/repository/manager/manager_test.go. - golangci-lint run ./pkg/repository/... is clean. - Confirmed the new tests reproduce both bugs: temporarily reverting only manager.go and re-running go test ./pkg/repository/manager/... made all three new tests fail (missing propagated context value and cancellation, and a nil error returned where the real connect error was expected); re-applying the fix makes them pass. This is a silent behavior bug (broken context propagation and a swallowed error), not a crash. Report: https://github.com/velero-io/velero/issues/10551 Signed-off-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com> Assisted-by: claude-sonnet-5 (via Claude Code)