code: func (c *MatchingCache) GetMatchingObject(labelObj objectWithMeta) (controller interface{}, exists bool) {
  	key := keyFunc(labelObj)
  	// NOTE: we use Lock() instead of RLock() here because lru's Get() method also modifies state(
  	// it need update the least recently usage information). So we can not call it concurrently.
  	c.mutex.Lock()
  	defer c.mutex.Unlock()
  	return c.cache.Get(key)
  }
docs: // GetMatchingObject lookup the matching object for a given object.
  // Note: the cache information may be invalid since the controller may be deleted or updated,
  // we need check in the external request to ensure the cache data is not dirty.