Class: Datadog::Tracing::TraceSegment

Inherits:
Object
  • Object
show all
Defined in:
lib/datadog/tracing/trace_segment.rb

Overview

Serializable construct representing a trace

Constant Summary collapse

TAG_NAME =
'name'
TAG_RESOURCE =
'resource'
TAG_SERVICE =
'service'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(spans, agent_sample_rate: nil, hostname: nil, id: nil, lang: nil, name: nil, origin: nil, process_id: nil, rate_limiter_rate: nil, resource: nil, root_span_id: nil, rule_sample_rate: nil, runtime_id: nil, sample_rate: nil, sampling_priority: nil, service: nil, tags: nil, metrics: nil, profiling_enabled: nil, apm_tracing_enabled: nil) ⇒ Object

Parameters:

  • spans (Array<Datadog::Span>)


43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/datadog/tracing/trace_segment.rb', line 43

def initialize(
  spans,
  agent_sample_rate: nil,
  hostname: nil,
  id: nil,
  lang: nil,
  name: nil,
  origin: nil,
  process_id: nil,
  rate_limiter_rate: nil,
  resource: nil,
  root_span_id: nil,
  rule_sample_rate: nil,
  runtime_id: nil,
  sample_rate: nil,
  sampling_priority: nil,
  service: nil,
  tags: nil,
  metrics: nil,
  profiling_enabled: nil,
  apm_tracing_enabled: nil
)
  @id = id
  @root_span_id = root_span_id
  @spans = spans || []

  # Does not make an effort to move metrics out of tags
  # The caller is expected to have done that
  @meta = (tags && tags.dup) || {}
  @metrics = (metrics && metrics.dup) || {}

  # Set well-known tags, defaulting to getting the values from tags
  @agent_sample_rate = agent_sample_rate || agent_sample_rate_tag
  @hostname = hostname || hostname_tag
  @lang = lang || lang_tag
  @name = Core::Utils::SafeDup.frozen_or_dup(name || name_tag)
  @origin = Core::Utils::SafeDup.frozen_or_dup(origin || origin_tag)
  @process_id = process_id || process_id_tag
  @rate_limiter_rate = rate_limiter_rate || rate_limiter_rate_tag
  @resource = Core::Utils::SafeDup.frozen_or_dup(resource || resource_tag)
  @rule_sample_rate = rule_sample_rate_tag || rule_sample_rate
  @runtime_id = runtime_id || runtime_id_tag
  @sample_rate = sample_rate || sample_rate_tag
  @sampling_decision_maker = sampling_decision_maker_tag
  @sampling_priority = sampling_priority || sampling_priority_tag
  @service = Core::Utils::SafeDup.frozen_or_dup(service || service_tag)
  @profiling_enabled = profiling_enabled
  @apm_tracing_enabled = apm_tracing_enabled
end

Instance Attribute Details

#agent_sample_rateObject

Returns the value of attribute agent_sample_rate.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def agent_sample_rate
  @agent_sample_rate
end

#apm_tracing_enabledObject (readonly)

Returns the value of attribute apm_tracing_enabled.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def apm_tracing_enabled
  @apm_tracing_enabled
end

#hostnameObject

Returns the value of attribute hostname.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def hostname
  @hostname
end

#idObject (readonly)

Returns the value of attribute id.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def id
  @id
end

#langObject

Returns the value of attribute lang.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def lang
  @lang
end

#nameObject

Returns the value of attribute name.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def name
  @name
end

#originObject

Returns the value of attribute origin.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def origin
  @origin
end

#process_idObject

Returns the value of attribute process_id.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def process_id
  @process_id
end

#profiling_enabledObject (readonly)

Returns the value of attribute profiling_enabled.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def profiling_enabled
  @profiling_enabled
end

#rate_limiter_rateObject

Returns the value of attribute rate_limiter_rate.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def rate_limiter_rate
  @rate_limiter_rate
end

#resourceObject

Returns the value of attribute resource.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def resource
  @resource
end

#rule_sample_rateObject

Returns the value of attribute rule_sample_rate.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def rule_sample_rate
  @rule_sample_rate
end

#runtime_idObject

Returns the value of attribute runtime_id.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def runtime_id
  @runtime_id
end

#sample_rateObject

Returns the value of attribute sample_rate.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def sample_rate
  @sample_rate
end

#sampling_decision_makerObject (readonly)

Returns the value of attribute sampling_decision_maker.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def sampling_decision_maker
  @sampling_decision_maker
end

#sampling_priorityObject

Returns the value of attribute sampling_priority.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def sampling_priority
  @sampling_priority
end

#serviceObject

Returns the value of attribute service.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def service
  @service
end

#spansObject (readonly)

Returns the value of attribute spans.



20
21
22
# File 'lib/datadog/tracing/trace_segment.rb', line 20

def spans
  @spans
end

Instance Method Details

#any?Object



95
96
97
# File 'lib/datadog/tracing/trace_segment.rb', line 95

def any?
  @spans.any?
end

#countObject



99
100
101
# File 'lib/datadog/tracing/trace_segment.rb', line 99

def count
  @spans.count
end

#empty?Boolean

Returns:

  • (Boolean)


103
104
105
# File 'lib/datadog/tracing/trace_segment.rb', line 103

def empty?
  @spans.empty?
end

#high_order_tidObject

Returns the high order part of the trace id as a hexadecimal string; the most significant 64 bits. The String returned is padded with zeros, having a fixed length of 16 characters. If the high order part is zero, it returns nil.



140
141
142
143
144
# File 'lib/datadog/tracing/trace_segment.rb', line 140

def high_order_tid
  high_order = Tracing::Utils::TraceId.to_high_order(@id)

  format('%016x', high_order) if high_order != 0
end

#keep!void

This method returns an undefined value.

If an active trace is present, forces it to be retained by the Datadog backend.

Any sampling logic will not be able to change this decision.



120
121
122
# File 'lib/datadog/tracing/trace_segment.rb', line 120

def keep!
  self.sampling_priority = Sampling::Ext::Priority::USER_KEEP
end

#lengthObject



107
108
109
# File 'lib/datadog/tracing/trace_segment.rb', line 107

def length
  @spans.length
end

#reject!void

This method returns an undefined value.

If an active trace is present, forces it to be dropped and not stored by the Datadog backend.

Any sampling logic will not be able to change this decision.



129
130
131
# File 'lib/datadog/tracing/trace_segment.rb', line 129

def reject!
  self.sampling_priority = Sampling::Ext::Priority::USER_REJECT
end

#sampled?Boolean

Returns:

  • (Boolean)


133
134
135
# File 'lib/datadog/tracing/trace_segment.rb', line 133

def sampled?
  [Sampling::Ext::Priority::AUTO_KEEP, Sampling::Ext::Priority::USER_KEEP].include?(sampling_priority)
end

#sizeObject



111
112
113
# File 'lib/datadog/tracing/trace_segment.rb', line 111

def size
  @spans.size
end