code: func (dsc *DaemonSetsController) deleteHistory(obj interface{}) {
  	history, ok := obj.(*apps.ControllerRevision)
  
  	// When a delete is dropped, the relist will notice a ControllerRevision in the store not
  	// in the list, leading to the insertion of a tombstone object which contains
  	// the deleted key/value. Note that this value might be stale. If the ControllerRevision
  	// changed labels the new DaemonSet will not be woken up till the periodic resync.
  	if !ok {
  		tombstone, ok := obj.(cache.DeletedFinalStateUnknown)
  		if !ok {
  			utilruntime.HandleError(fmt.Errorf("Couldn't get object from tombstone %#v", obj))
  			return
  		}
  		history, ok = tombstone.Obj.(*apps.ControllerRevision)
  		if !ok {
  			utilruntime.HandleError(fmt.Errorf("Tombstone contained object that is not a ControllerRevision %#v", obj))
  			return
  		}
  	}
  
  	controllerRef := metav1.GetControllerOf(history)
  	if controllerRef == nil {
  		// No controller should care about orphans being deleted.
  		return
  	}
  	ds := dsc.resolveControllerRef(history.Namespace, controllerRef)
  	if ds == nil {
  		return
  	}
  	klog.V(4).Infof("ControllerRevision %s deleted.", history.Name)
  	dsc.enqueueDaemonSet(ds)
  }
docs: // deleteHistory enqueues the DaemonSet that manages a ControllerRevision when
  // the ControllerRevision is deleted. obj could be an *app.ControllerRevision, or
  // a DeletionFinalStateUnknown marker item.