code: func (c *Controller) pvcAddedUpdated(obj interface{}) {
  	pvc, ok := obj.(*v1.PersistentVolumeClaim)
  	if !ok {
  		utilruntime.HandleError(fmt.Errorf("PVC informer returned non-PVC object: %#v", obj))
  		return
  	}
  	key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(pvc)
  	if err != nil {
  		utilruntime.HandleError(fmt.Errorf("Couldn't get key for Persistent Volume Claim %#v: %v", pvc, err))
  		return
  	}
  	klog.V(4).Infof("Got event on PVC %s", key)
  
  	if protectionutil.NeedToAddFinalizer(pvc, volumeutil.PVCProtectionFinalizer) || protectionutil.IsDeletionCandidate(pvc, volumeutil.PVCProtectionFinalizer) {
  		c.queue.Add(key)
  	}
  }
docs: // pvcAddedUpdated reacts to pvc added/updated/deleted events