code: func (ctrl *PersistentVolumeController) updateVolume(volume *v1.PersistentVolume) {
  	// Store the new volume version in the cache and do not process it if this
  	// is an old version.
  	new, err := ctrl.storeVolumeUpdate(volume)
  	if err != nil {
  		klog.Errorf("%v", err)
  	}
  	if !new {
  		return
  	}
  
  	err = ctrl.syncVolume(volume)
  	if err != nil {
  		if errors.IsConflict(err) {
  			// Version conflict error happens quite often and the controller
  			// recovers from it easily.
  			klog.V(3).Infof("could not sync volume %q: %+v", volume.Name, err)
  		} else {
  			klog.Errorf("could not sync volume %q: %+v", volume.Name, err)
  		}
  	}
  }
docs: // updateVolume runs in worker thread and handles "volume added",
  // "volume updated" and "periodic sync" events.