code: func (jm *JobController) enqueueController(obj interface{}, immediate bool) {
  	key, err := controller.KeyFunc(obj)
  	if err != nil {
  		utilruntime.HandleError(fmt.Errorf("Couldn't get key for object %+v: %v", obj, err))
  		return
  	}
  
  	backoff := time.Duration(0)
  	if !immediate {
  		backoff = getBackoff(jm.queue, key)
  	}
  
  	// TODO: Handle overlapping controllers better. Either disallow them at admission time or
  	// deterministically avoid syncing controllers that fight over pods. Currently, we only
  	// ensure that the same controller is synced for a given pod. When we periodically relist
  	// all controllers there will still be some replica instability. One way to handle this is
  	// by querying the store for all controllers that this rc overlaps, as well as all
  	// controllers that overlap this rc, and sorting them.
  	jm.queue.AddAfter(key, backoff)
  }
docs: // obj could be an *batch.Job, or a DeletionFinalStateUnknown marker item,
  // immediate tells the controller to update the status right away, and should
  // happen ONLY when there was a successful pod run.