func (r *RegisteredRateLimiter) registerIfNotPresent(gv unversioned.GroupVersion, client *dynamic.Client, prefix string) { once, found := r.rateLimiters[gv] if !found { return } once.Do(func() { if rateLimiter := client.GetRateLimiter(); rateLimiter != nil { group := strings.Replace(gv.Group, ".", ":", -1) metrics.RegisterMetricAndTrackRateLimiterUsage(fmt.Sprintf("%s_%s_%s", prefix, group, gv.Version), rateLimiter) } }) }
func (r *RegisteredRateLimiter) registerIfNotPresent(gv unversioned.GroupVersion, client *dynamic.Client, prefix string) { r.lock.RLock() _, ok := r.rateLimiters[gv] r.lock.RUnlock() if ok { return } r.lock.Lock() defer r.lock.Unlock() if _, ok := r.rateLimiters[gv]; !ok { if rateLimiter := client.GetRateLimiter(); rateLimiter != nil { group := strings.Replace(gv.Group, ".", ":", -1) metrics.RegisterMetricAndTrackRateLimiterUsage(fmt.Sprintf("%s_%s_%s", prefix, group, gv.Version), rateLimiter) } r.rateLimiters[gv] = struct{}{} } }