class NewRelic::Agent::Transaction::Segment
Attributes
unscoped_metrics
can be nil, a string, or array. we do this to save object allocations. if allocations weren’t important then we would initialize it as an array that would be empty, have one item, or many items.
unscoped_metrics
can be nil, a string, or array. we do this to save object allocations. if allocations weren’t important then we would initialize it as an array that would be empty, have one item, or many items.
Public Class Methods
Source
# File lib/new_relic/agent/transaction/segment.rb, line 49 def self.finish(segment) return unless segment segment.finish end
Source
# File lib/new_relic/agent/transaction/segment.rb, line 31 def self.merge_untrusted_agent_attributes(attributes, prefix, default_destinations) if segment = NewRelic::Agent::Tracer.current_segment segment.merge_untrusted_agent_attributes(attributes, prefix, default_destinations) else NewRelic::Agent.logger.debug('Attempted to merge untrusted attributes without segment') end end
Source
# File lib/new_relic/agent/transaction/segment.rb, line 18 def initialize(name = nil, unscoped_metrics = nil, start_time = nil) @unscoped_metrics = unscoped_metrics super(name, start_time) end
Calls superclass method
NewRelic::Agent::Transaction::AbstractSegment::new
Public Instance Methods
Source
# File lib/new_relic/agent/transaction/segment.rb, line 27 def add_agent_attribute(key, value, default_destinations = AttributeFilter::DST_SPAN_EVENTS) attributes.add_agent_attribute(key, value, default_destinations) end
Source
# File lib/new_relic/agent/transaction/segment.rb, line 45 def add_custom_attributes(p) attributes.merge_custom_attributes(p) end
Source
# File lib/new_relic/agent/transaction/segment.rb, line 23 def attributes @attributes ||= Attributes.new(NewRelic::Agent.instance.attribute_filter) end
Source
# File lib/new_relic/agent/transaction/segment.rb, line 39 def merge_untrusted_agent_attributes(agent_attributes, prefix, default_destinations) return if agent_attributes.nil? attributes.merge_untrusted_agent_attributes(agent_attributes, prefix, default_destinations) end
Private Instance Methods
Source
# File lib/new_relic/agent/transaction/segment.rb, line 68 def append_unscoped_metric(metric) if @unscoped_metrics if Array === @unscoped_metrics if unscoped_metrics.frozen? @unscoped_metrics += [name] else @unscoped_metrics << name end else @unscoped_metrics = [@unscoped_metrics, metric] end else @unscoped_metrics = metric end end
Source
# File lib/new_relic/agent/transaction/segment.rb, line 57 def record_metrics if record_scoped_metric? metric_cache.record_scoped_and_unscoped(name, duration, exclusive_duration) else append_unscoped_metric(name) end if unscoped_metrics metric_cache.record_unscoped(unscoped_metrics, duration, exclusive_duration) end end
Source
# File lib/new_relic/agent/transaction/segment.rb, line 88 def record_span_event # don't record a span event if the transaction is ignored return if transaction.ignore? aggregator = ::NewRelic::Agent.agent.span_event_aggregator priority = transaction.priority aggregator.record(priority: priority) do SpanEventPrimitive.for_segment(self) end end
Source
# File lib/new_relic/agent/transaction/segment.rb, line 84 def segment_complete record_span_event if transaction.sampled? end