metric

in lib/elastic_apm/metrics/set.rb [59:86]


      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