Skip to content

Commit e4ad8a3

Browse files
RaunakShahmattcary
authored andcommitted
Allow creation of snapshot content if pvc finalizer exists,
even if pvc is marked for deletion.
1 parent 1faf727 commit e4ad8a3

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

pkg/common-controller/snapshot_controller.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -834,22 +834,24 @@ func (ctrl *csiSnapshotCommonController) ensurePVCFinalizer(snapshot *crdv1.Volu
834834
return newControllerUpdateError(snapshot.Name, "cannot get claim from snapshot")
835835
}
836836

837-
if pvc.ObjectMeta.DeletionTimestamp != nil {
838-
klog.Errorf("cannot add finalizer on claim [%s] for snapshot [%s]: claim is being deleted", pvc.Name, snapshot.Name)
839-
return newControllerUpdateError(pvc.Name, "cannot add finalizer on claim because it is being deleted")
837+
if slice.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer, nil) {
838+
klog.Infof("Protection finalizer already exists for persistent volume claim %s/%s", pvc.Namespace, pvc.Name)
839+
return nil
840840
}
841841

842-
// If PVC is not being deleted and PVCFinalizer is not added yet, the PVCFinalizer should be added.
843-
if pvc.ObjectMeta.DeletionTimestamp == nil && !slice.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer, nil) {
844-
// Add the finalizer
842+
if pvc.ObjectMeta.DeletionTimestamp != nil {
843+
klog.Errorf("cannot add finalizer on claim [%s/%s] for snapshot [%s/%s]: claim is being deleted", pvc.Namespace, pvc.Name, snapshot.Namespace, snapshot.Name)
844+
return newControllerUpdateError(pvc.Name, "cannot add finalizer on claim because it is being deleted")
845+
} else {
846+
// If PVC is not being deleted and PVCFinalizer is not added yet, add the PVCFinalizer.
845847
pvcClone := pvc.DeepCopy()
846848
pvcClone.ObjectMeta.Finalizers = append(pvcClone.ObjectMeta.Finalizers, utils.PVCFinalizer)
847849
_, err = ctrl.client.CoreV1().PersistentVolumeClaims(pvcClone.Namespace).Update(pvcClone)
848850
if err != nil {
849-
klog.Errorf("cannot add finalizer on claim [%s] for snapshot [%s]: [%v]", pvc.Name, snapshot.Name, err)
851+
klog.Errorf("cannot add finalizer on claim [%s/%s] for snapshot [%s/%s]: [%v]", pvc.Namespace, pvc.Name, snapshot.Namespace, snapshot.Name, err)
850852
return newControllerUpdateError(pvcClone.Name, err.Error())
851853
}
852-
klog.Infof("Added protection finalizer to persistent volume claim %s", pvc.Name)
854+
klog.Infof("Added protection finalizer to persistent volume claim %s/%s", pvc.Namespace, pvc.Name)
853855
}
854856

855857
return nil

0 commit comments

Comments
 (0)