Sha256: dee8475181b62d230a35b51059671bed9f5ea0580900ba92bac27852e5c3ee32

Contents?: true

Size: 1.69 KB

Versions: 71

Compression:

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

require 'new_relic/agent/transaction/transaction_sample_buffer'

module NewRelic
  module Agent
    class Transaction
      class XraySampleBuffer < TransactionSampleBuffer

        attr_writer :xray_session_collection

        def initialize
          super

          # Memoize the config setting since this happens per request
          @enabled = NewRelic::Agent.config[:'xray_session.allow_traces']
          NewRelic::Agent.config.register_callback(:'xray_session.allow_traces') do |new_value|
            @enabled = new_value
          end

          @capacity = NewRelic::Agent.config[:'xray_session.max_samples']
          NewRelic::Agent.config.register_callback(:'xray_session.max_samples') do |new_value|
            @capacity = new_value
          end
        end

        def xray_session_collection
          @xray_session_collection ||= NewRelic::Agent.instance.agent_command_router.xray_session_collection
        end

        def capacity
          @capacity
        end

        def truncate_samples
          # First in wins, so stop on allow_sample? instead of truncating
        end

        def allow_sample?(sample)
          !full? && !lookup_session_id(sample).nil?
        end

        def enabled?
          @enabled
        end


        private

        def add_sample(sample)
          super(sample)
          sample.xray_session_id = lookup_session_id(sample)
        end

        def lookup_session_id(sample)
          xray_session_collection.session_id_for_transaction_name(sample.transaction_name)
        end

      end
    end
  end
end

Version data entries

71 entries across 71 versions & 2 rubygems

Version Path
newrelic_rpm-6.3.0.355 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-6.2.0.354 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-6.1.0.352 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-6.0.0.351 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-5.7.0.350 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-5.6.0.349 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-5.5.0.348 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-5.4.0.347 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-5.3.0.346 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-5.2.0.345 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-5.1.0.344 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-5.0.0.342 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-4.8.0.341 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-4.7.1.340 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-4.7.0.339 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-4.6.0.338 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-4.5.0.337 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-4.4.0.336 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-4.3.0.335 lib/new_relic/agent/transaction/xray_sample_buffer.rb
newrelic_rpm-4.2.0.334 lib/new_relic/agent/transaction/xray_sample_buffer.rb