Sha256: a5e082e2e3aa9b152bd815df0780cc153099c04ea4d13a8dac423d3fac28f778

Contents?: true

Size: 1.47 KB

Versions: 11

Compression:

Stored size: 1.47 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.

DependencyDetection.defer do
  named :net_http

  depends_on do
    defined?(Net) && defined?(Net::HTTP)
  end

  executes do
    ::NewRelic::Agent.logger.info 'Installing Net instrumentation'
    require 'new_relic/agent/cross_app_tracing'
    require 'new_relic/agent/http_clients/net_http_wrappers'
  end

  executes do
    class Net::HTTP
      def request_with_newrelic_trace(request, *args, &block)
        wrapped_request = NewRelic::Agent::HTTPClients::NetHTTPRequest.new(self, request)

        segment = NewRelic::Agent::Transaction.start_external_request_segment(
          library: wrapped_request.type,
          uri: wrapped_request.uri,
          procedure: wrapped_request.method
        )

        begin
          response = nil
          segment.add_request_headers wrapped_request

          # RUBY-1244 Disable further tracing in request to avoid double
          # counting if connection wasn't started (which calls request again).
          NewRelic::Agent.disable_all_tracing do
            response = request_without_newrelic_trace( request, *args, &block )
          end

          segment.read_response_headers response
          response
        ensure
          segment.finish
        end
      end

      alias request_without_newrelic_trace request
      alias request request_with_newrelic_trace
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
newrelic_rpm-5.7.0.350 lib/new_relic/agent/instrumentation/net.rb
newrelic_rpm-5.6.0.349 lib/new_relic/agent/instrumentation/net.rb
newrelic_rpm-5.5.0.348 lib/new_relic/agent/instrumentation/net.rb
newrelic_rpm-5.4.0.347 lib/new_relic/agent/instrumentation/net.rb
newrelic_rpm-5.3.0.346 lib/new_relic/agent/instrumentation/net.rb
newrelic_rpm-5.2.0.345 lib/new_relic/agent/instrumentation/net.rb
newrelic_rpm-5.1.0.344 lib/new_relic/agent/instrumentation/net.rb
newrelic_rpm-5.0.0.342 lib/new_relic/agent/instrumentation/net.rb
newrelic_rpm-4.8.0.341 lib/new_relic/agent/instrumentation/net.rb
newrelic_rpm-4.7.1.340 lib/new_relic/agent/instrumentation/net.rb
newrelic_rpm-4.7.0.339 lib/new_relic/agent/instrumentation/net.rb