diff --git a/pkg/deployment/reconcile/timeouts.go b/pkg/deployment/reconcile/timeouts.go index 002f6b38d..efc9c4647 100644 --- a/pkg/deployment/reconcile/timeouts.go +++ b/pkg/deployment/reconcile/timeouts.go @@ -37,7 +37,7 @@ const ( backupRestoreTimeout = time.Minute * 15 shutdownMemberTimeout = time.Minute * 30 upgradeMemberTimeout = time.Hour * 6 - waitForMemberUpTimeout = time.Minute * 15 + waitForMemberUpTimeout = time.Minute * 30 tlsSNIUpdateTimeout = time.Minute * 10 shutdownTimeout = time.Second * 15 diff --git a/pkg/deployment/resources/pvc_inspector.go b/pkg/deployment/resources/pvc_inspector.go index d62b8a295..0e2e84c69 100644 --- a/pkg/deployment/resources/pvc_inspector.go +++ b/pkg/deployment/resources/pvc_inspector.go @@ -65,6 +65,17 @@ func (r *Resources) InspectPVCs(ctx context.Context) (util.Interval, error) { memberStatus, group, found := status.Members.MemberStatusByPVCName(p.GetName()) if !found { log.Debug().Str("pvc", p.GetName()).Msg("no memberstatus found for PVC") + if k8sutil.IsPersistentVolumeClaimMarkedForDeletion(&p) && len(p.GetFinalizers()) > 0 { + // Strange, pvc belongs to us, but we have no member for it. + // Remove all finalizers, so it can be removed. + log.Warn().Msg("PVC belongs to this deployment, but we don't know the member. Removing all finalizers") + kubecli := r.context.GetKubeCli() + ignoreNotFound := false + if err := k8sutil.RemovePVCFinalizers(log, kubecli, &p, p.GetFinalizers(), ignoreNotFound); err != nil { + log.Debug().Err(err).Msg("Failed to update PVC (to remove all finalizers)") + return 0, maskAny(err) + } + } continue }