Sha256: 7c4e7ad2c89f754f8d819dd52d882a883bb8f1e8f0ad6df9413d616814674b40

Contents?: true

Size: 1.99 KB

Versions: 57

Compression:

Stored size: 1.99 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

module NewRelic
  module Instrumentation
    module ActsAsSolrInstrumentation
      module ParserMethodsInstrumentation
        def parse_query_with_newrelic(*args)
          self.class.trace_execution_scoped(["SolrClient/ActsAsSolr/query"]) do
            t0 = Time.now
            begin
              parse_query_without_newrelic(*args)
            ensure
              NewRelic::Agent.instance.transaction_sampler.notice_nosql(args.first.inspect, (Time.now - t0).to_f) rescue nil
            end
          end
        end
      end
    end
  end
end

DependencyDetection.defer do
  @name = :acts_as_solr

  depends_on do
    defined?(ActsAsSolr)
  end

  depends_on do
    defined?(ActsAsSolr::ParserMethods)
  end

  depends_on do
    defined?(ActsAsSolr::ClassMethods)
  end

  depends_on do
    defined?(ActsAsSolr::CommonMethods)
  end

  executes do
    ::NewRelic::Agent.logger.info 'Installing ActsAsSolr instrumentation'
  end

  executes do
    ActsAsSolr::ParserMethods.module_eval do
      include NewRelic::Instrumentation::ActsAsSolrInstrumentation::ParserMethodsInstrumentation
      alias :parse_query_without_newrelic :parse_query
      alias :parse_query :parse_query_with_newrelic
    end
  end

  executes do
    ActsAsSolr::ClassMethods.module_eval do
      %w[find_by_solr find_id_by_solr multi_solr_search count_by_solr].each do |method|
        add_method_tracer method, 'SolrClient/ActsAsSolr/query'
      end
      add_method_tracer :rebuild_solr_index, 'SolrClient/ActsAsSolr/index'
    end
  end

  executes do
    ActsAsSolr::CommonMethods.module_eval do
      add_method_tracer :solr_add, 'SolrClient/ActsAsSolr/add'
      add_method_tracer :solr_delete, 'SolrClient/ActsAsSolr/delete'
      add_method_tracer :solr_commit, 'SolrClient/ActsAsSolr/commit'
      add_method_tracer :solr_optimize, 'SolrClient/ActsAsSolr/optimize'
    end
  end
end

Version data entries

57 entries across 57 versions & 2 rubygems

Version Path
newrelic_rpm-4.1.0.333 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-4.0.0.332 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.18.1.330 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.18.0.329 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.17.2.327 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.17.1.326 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.17.0.325 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.16.3.323 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.16.2.321 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.16.1.320 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.16.0.318 lib/new_relic/agent/instrumentation/acts_as_solr.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/newrelic_rpm-3.15.2.317/lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.15.2.317 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.15.1.316 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.15.0.314 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.14.3.313 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.14.2.312 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.14.1.311 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.14.0.305 lib/new_relic/agent/instrumentation/acts_as_solr.rb
newrelic_rpm-3.13.2.302 lib/new_relic/agent/instrumentation/acts_as_solr.rb