Sha256: 48944d2bc7e58f79bc0db72839930abec73cd6cb9c0fea6b339a946ebef9d180

Contents?: true

Size: 1.83 KB

Versions: 39

Compression:

Stored size: 1.83 KB

Contents

# encoding: utf-8

module OneApm
  module Instrumentation
    module ActsAsSolrInstrumentation
      module ParserMethodsInstrumentation
        def parse_query_with_oneapm(*args)
          self.class.trace_execution_scoped(["SolrClient/ActsAsSolr/query"]) do
            t0 = Time.now
            begin
              parse_query_without_oneapm(*args)
            ensure
              OneApm::Manager.agent.transaction_sampler.notice_nosql(args.first.inspect, (Time.now - t0).to_f) rescue nil
            end
          end
        end
      end
    end
  end
end

LibraryDetection.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
    OneApm::Manager.logger.info 'Installing ActsAsSolr instrumentation'
  end

  executes do
    ActsAsSolr::ParserMethods.module_eval do
      include OneApm::Instrumentation::ActsAsSolrInstrumentation::ParserMethodsInstrumentation
      alias :parse_query_without_oneapm :parse_query
      alias :parse_query :parse_query_with_oneapm
    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

39 entries across 39 versions & 1 rubygems

Version Path
oneapm_rpm-1.4.2 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.4.1 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.4.0 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.7 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.7.rc1 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.6 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.6.rc1 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.5 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.5.rc1 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.4 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.4.rc1 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.3 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.3.rc1 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.2 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.2.rc1 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.1 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.1.rc1 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.0 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.3.0.rc1 lib/one_apm/inst/3rd/acts_as_solr.rb
oneapm_rpm-1.2.9 lib/one_apm/inst/3rd/acts_as_solr.rb