class ElasticAPM::Metrics::Set

def metric(kls, key, tags: nil, **args)

def metric(kls, key, tags: nil, **args)
  if @config.disable_metrics.any? { |p| p.match? key }
    return NOOP
  end
  key = key_with_tags(key, tags)
  return metrics[key] if metrics[key]
  @lock.synchronize do
    return metrics[key] if metrics[key]
    metrics[key] =
      if metrics.length < DISTINCT_LABEL_LIMIT
        kls.new(key, tags: tags, **args)
      else
        unless @label_limit_logged
          warn(
            'The limit of %d metricsets has been reached, no new ' \
             'metricsets will be created.', DISTINCT_LABEL_LIMIT
          )
          @label_limit_logged = true
        end
        NOOP
      end
  end
end