lib/new_relic/agent/transaction/segment.rb in newrelic_rpm-6.12.0.367 vs lib/new_relic/agent/transaction/segment.rb in newrelic_rpm-6.13.0
- old
+ new
@@ -11,31 +11,35 @@
class Transaction
class Segment < AbstractSegment
# 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.
- attr_reader :unscoped_metrics, :attributes, :custom_transaction_attributes
+ attr_reader :unscoped_metrics, :custom_transaction_attributes
def initialize name=nil, unscoped_metrics=nil, start_time=nil
@unscoped_metrics = unscoped_metrics
- @attributes = Attributes.new(NewRelic::Agent.instance.attribute_filter)
super name, start_time
end
+ def attributes
+ @attributes ||= Attributes.new(NewRelic::Agent.instance.attribute_filter)
+ end
+
def add_agent_attribute(key, value, default_destinations=AttributeFilter::DST_SPAN_EVENTS)
- @attributes.add_agent_attribute(key, value, default_destinations)
+ attributes.add_agent_attribute(key, value, default_destinations)
end
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
- def merge_untrusted_agent_attributes(attributes, prefix, default_destinations)
- @attributes.merge_untrusted_agent_attributes(attributes, prefix, default_destinations)
+ 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
def add_custom_attributes(p)
attributes.merge_custom_attributes(p)
end