code: func (c *Controller) processNextWorkItem() bool {
  	pvcKey, quit := c.queue.Get()
  	if quit {
  		return false
  	}
  	defer c.queue.Done(pvcKey)
  
  	pvcNamespace, pvcName, err := cache.SplitMetaNamespaceKey(pvcKey.(string))
  	if err != nil {
  		utilruntime.HandleError(fmt.Errorf("Error parsing PVC key %q: %v", pvcKey, err))
  		return true
  	}
  
  	err = c.processPVC(pvcNamespace, pvcName)
  	if err == nil {
  		c.queue.Forget(pvcKey)
  		return true
  	}
  
  	utilruntime.HandleError(fmt.Errorf("PVC %v failed with : %v", pvcKey, err))
  	c.queue.AddRateLimited(pvcKey)
  
  	return true
  }
docs: // processNextWorkItem deals with one pvcKey off the queue.  It returns false when it's time to quit.