datadog 2.0.0.beta1 → 2.0.0.beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +125 -1
  3. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +32 -12
  4. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +5 -2
  5. data/ext/datadog_profiling_native_extension/heap_recorder.c +45 -3
  6. data/ext/datadog_profiling_native_extension/heap_recorder.h +7 -1
  7. data/ext/datadog_profiling_native_extension/http_transport.c +5 -5
  8. data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +1 -1
  9. data/ext/datadog_profiling_native_extension/stack_recorder.c +7 -9
  10. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +43 -13
  11. data/lib/datadog/appsec/event.rb +2 -2
  12. data/lib/datadog/core/configuration/components.rb +2 -1
  13. data/lib/datadog/core/configuration/option.rb +7 -5
  14. data/lib/datadog/core/configuration/settings.rb +38 -14
  15. data/lib/datadog/core/configuration.rb +20 -4
  16. data/lib/datadog/core/environment/platform.rb +7 -1
  17. data/lib/datadog/core/remote/client/capabilities.rb +2 -1
  18. data/lib/datadog/core/remote/transport/http/config.rb +5 -5
  19. data/lib/datadog/core/telemetry/client.rb +18 -10
  20. data/lib/datadog/core/telemetry/emitter.rb +9 -13
  21. data/lib/datadog/core/telemetry/event.rb +247 -57
  22. data/lib/datadog/core/telemetry/ext.rb +1 -0
  23. data/lib/datadog/core/telemetry/heartbeat.rb +1 -3
  24. data/lib/datadog/core/telemetry/http/ext.rb +4 -1
  25. data/lib/datadog/core/telemetry/http/transport.rb +9 -4
  26. data/lib/datadog/core/telemetry/request.rb +59 -0
  27. data/lib/datadog/core/utils/base64.rb +22 -0
  28. data/lib/datadog/opentelemetry/sdk/span_processor.rb +1 -1
  29. data/lib/datadog/opentelemetry/sdk/trace/span.rb +3 -17
  30. data/lib/datadog/profiling/collectors/code_provenance.rb +10 -4
  31. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +25 -0
  32. data/lib/datadog/profiling/component.rb +23 -15
  33. data/lib/datadog/profiling/load_native_extension.rb +14 -1
  34. data/lib/datadog/profiling.rb +11 -0
  35. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
  36. data/lib/datadog/tracing/contrib/action_view/integration.rb +1 -1
  37. data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
  38. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
  39. data/lib/datadog/tracing/contrib/grape/endpoint.rb +43 -5
  40. data/lib/datadog/tracing/correlation.rb +3 -4
  41. data/lib/datadog/tracing/sampling/matcher.rb +23 -3
  42. data/lib/datadog/tracing/sampling/rule.rb +18 -2
  43. data/lib/datadog/tracing/sampling/rule_sampler.rb +2 -0
  44. data/lib/datadog/tracing/span.rb +7 -2
  45. data/lib/datadog/tracing/span_link.rb +86 -0
  46. data/lib/datadog/tracing/trace_operation.rb +12 -0
  47. data/lib/datadog/tracing/tracer.rb +4 -3
  48. data/lib/datadog/tracing/transport/serializable_trace.rb +3 -1
  49. data/lib/datadog/tracing/utils.rb +16 -0
  50. data/lib/datadog/version.rb +1 -1
  51. metadata +7 -30
  52. data/lib/datadog/core/telemetry/collector.rb +0 -248
  53. data/lib/datadog/core/telemetry/v1/app_event.rb +0 -59
  54. data/lib/datadog/core/telemetry/v1/application.rb +0 -94
  55. data/lib/datadog/core/telemetry/v1/configuration.rb +0 -27
  56. data/lib/datadog/core/telemetry/v1/dependency.rb +0 -45
  57. data/lib/datadog/core/telemetry/v1/host.rb +0 -59
  58. data/lib/datadog/core/telemetry/v1/install_signature.rb +0 -38
  59. data/lib/datadog/core/telemetry/v1/integration.rb +0 -66
  60. data/lib/datadog/core/telemetry/v1/product.rb +0 -36
  61. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +0 -108
  62. data/lib/datadog/core/telemetry/v2/app_client_configuration_change.rb +0 -41
  63. data/lib/datadog/core/telemetry/v2/request.rb +0 -29
@@ -65,6 +65,17 @@ module Datadog
65
65
  !!(profiler.send(:scheduler).running? if profiler)
66
66
  end
67
67
 
68
+ def self.wait_until_running(timeout_seconds: 5)
69
+ profiler = Datadog.send(:components).profiler
70
+ if profiler
71
+ # Use .send(...) to avoid exposing the attr_reader as an API to the outside
72
+ worker = profiler.send(:worker)
73
+ worker.wait_until_running(timeout_seconds: timeout_seconds)
74
+ else
75
+ raise 'Profiler not enabled or available'
76
+ end
77
+ end
78
+
68
79
  private_class_method def self.replace_noop_allocation_count
69
80
  def self.allocation_count # rubocop:disable Lint/NestedMethodDefinition (On purpose!)
70
81
  Datadog::Profiling::Collectors::CpuAndWallTimeWorker._native_allocation_count
@@ -3,7 +3,7 @@
3
3
  require_relative 'configuration/settings'
4
4
  require_relative 'patcher'
5
5
  require_relative '../integration'
6
- require_relative '../rails/integration'
6
+ require_relative '../rails/ext'
7
7
  require_relative '../rails/utils'
8
8
 
9
9
  module Datadog
@@ -3,7 +3,7 @@
3
3
  require_relative 'configuration/settings'
4
4
  require_relative 'patcher'
5
5
  require_relative '../integration'
6
- require_relative '../rails/integration'
6
+ require_relative '../rails/ext'
7
7
  require_relative '../rails/utils'
8
8
 
9
9
  module Datadog
@@ -5,7 +5,7 @@ require_relative 'configuration/settings'
5
5
  require_relative 'events'
6
6
  require_relative 'patcher'
7
7
  require_relative '../integration'
8
- require_relative '../rails/integration'
8
+ require_relative '../rails/ext'
9
9
  require_relative '../rails/utils'
10
10
 
11
11
  module Datadog
@@ -4,7 +4,7 @@ require_relative '../integration'
4
4
  require_relative 'configuration/settings'
5
5
  require_relative 'patcher'
6
6
  require_relative 'cache/redis'
7
- require_relative '../rails/integration'
7
+ require_relative '../rails/ext'
8
8
  require_relative '../rails/utils'
9
9
 
10
10
  module Datadog
@@ -92,8 +92,7 @@ module Datadog
92
92
  # Measure service stats
93
93
  Contrib::Analytics.set_measured(span)
94
94
 
95
- # catch thrown exceptions
96
- handle_error(span, payload[:exception_object]) if payload[:exception_object]
95
+ handle_error_and_status_code(span, endpoint, payload)
97
96
 
98
97
  # override the current span with this notification values
99
98
  span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil?
@@ -110,6 +109,30 @@ module Datadog
110
109
  Datadog.logger.error(e.message)
111
110
  end
112
111
 
112
+ # Status code resolution is tied to the exception handling
113
+ def handle_error_and_status_code(span, endpoint, payload)
114
+ status = nil
115
+
116
+ # Handle exceptions and status code
117
+ if (exception_object = payload[:exception_object])
118
+ # If the exception is not an internal Grape error, we won't have a status code at this point.
119
+ status = exception_object.status if exception_object.respond_to?(:status)
120
+
121
+ handle_error(span, exception_object, status)
122
+ else
123
+ # Status code is unreliable in `endpoint_run.grape` if there was an exception.
124
+ # Only after `Grape::Middleware::Error#run_rescue_handler` that the error status code of a request with a
125
+ # Ruby exception error is resolved. But that handler is called further down the Grape middleware stack.
126
+ # Rack span will then be the most reliable source for status codes.
127
+ # DEV: As a corollary, instrumenting Grape without Rack will provide incomplete
128
+ # DEV: status quote information.
129
+ status = endpoint.status
130
+ span.set_error(endpoint) if error_status_codes.include?(status)
131
+ end
132
+
133
+ span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, status) if status
134
+ end
135
+
113
136
  def endpoint_start_render(*)
114
137
  return if Thread.current[KEY_RENDER]
115
138
  return unless enabled?
@@ -193,9 +216,10 @@ module Datadog
193
216
 
194
217
  private
195
218
 
196
- def handle_error(span, exception)
197
- if exception.respond_to?('status')
198
- span.set_error(exception) if error_status_codes.include?(exception.status)
219
+ def handle_error(span, exception, status = nil)
220
+ status ||= (exception.status if exception.respond_to?(:status))
221
+ if status
222
+ span.set_error(exception) if error_status_codes.include?(status)
199
223
  else
200
224
  on_error.call(span, exception)
201
225
  end
@@ -240,6 +264,20 @@ module Datadog
240
264
  datadog_configuration[:analytics_sample_rate]
241
265
  end
242
266
 
267
+ def exception_is_error?(exception)
268
+ return false unless exception
269
+ return true unless exception.respond_to?(:status)
270
+
271
+ error_status?(status.exception)
272
+ end
273
+
274
+ def error_status?(status)
275
+ matcher = datadog_configuration[:error_statuses]
276
+ return true unless matcher
277
+
278
+ matcher.include?(status) if matcher
279
+ end
280
+
243
281
  def enabled?
244
282
  Datadog.configuration.tracing.enabled && \
245
283
  datadog_configuration[:enabled] == true
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'utils'
4
- require_relative 'metadata/ext'
5
4
  require_relative '../core/logging/ext'
6
5
 
7
6
  module Datadog
@@ -36,11 +35,11 @@ module Datadog
36
35
  version: nil
37
36
  )
38
37
  # Dup and freeze strings so they aren't modified by reference.
39
- @env = Core::Utils::SafeDup.frozen_dup(env || Datadog.configuration.env)
40
- @service = Core::Utils::SafeDup.frozen_dup(service || Datadog.configuration.service)
38
+ @env = env || Datadog.configuration.env
39
+ @service = service || Datadog.configuration.service
41
40
  @span_id = (span_id || 0).to_s
42
41
  @trace_id = trace_id || 0
43
- @version = Core::Utils::SafeDup.frozen_dup(version || Datadog.configuration.version)
42
+ @version = version || Datadog.configuration.version
44
43
  end
45
44
 
46
45
  def to_h
@@ -27,20 +27,40 @@ module Datadog
27
27
  end
28
28
  end.new
29
29
 
30
- attr_reader :name, :service
30
+ attr_reader :name, :service, :resource, :tags
31
31
 
32
32
  # @param name [String,Regexp,Proc] Matcher for case equality (===) with the trace name,
33
33
  # defaults to always match
34
34
  # @param service [String,Regexp,Proc] Matcher for case equality (===) with the service name,
35
35
  # defaults to always match
36
- def initialize(name: MATCH_ALL, service: MATCH_ALL)
36
+ # @param resource [String,Regexp,Proc] Matcher for case equality (===) with the resource name,
37
+ # defaults to always match
38
+ def initialize(name: MATCH_ALL, service: MATCH_ALL, resource: MATCH_ALL, tags: {})
37
39
  super()
38
40
  @name = name
39
41
  @service = service
42
+ @resource = resource
43
+ @tags = tags
40
44
  end
41
45
 
42
46
  def match?(trace)
43
- name === trace.name && service === trace.service
47
+ name === trace.name && service === trace.service && resource === trace.resource && tags_match?(trace)
48
+ end
49
+
50
+ private
51
+
52
+ # Match against the trace tags and metrics.
53
+ def tags_match?(trace)
54
+ @tags.all? do |name, matcher|
55
+ tag = trace.get_tag(name)
56
+
57
+ # Format metrics as strings, to allow for partial number matching (/4.*/ matching '400', '404', etc.).
58
+ # Because metrics are floats, we use the '%g' format specifier to avoid trailing zeros, which
59
+ # can affect exact string matching (e.g. '400' matching '400.0').
60
+ tag = format('%g', tag) if tag.is_a?(Numeric)
61
+
62
+ matcher === tag
63
+ end
44
64
  end
45
65
  end
46
66
 
@@ -51,9 +51,25 @@ module Datadog
51
51
  # @param name [String,Regexp,Proc] Matcher for case equality (===) with the trace name, defaults to always match
52
52
  # @param service [String,Regexp,Proc] Matcher for case equality (===) with the service name,
53
53
  # defaults to always match
54
+ # @param resource [String,Regexp,Proc] Matcher for case equality (===) with the resource name,
55
+ # defaults to always match
54
56
  # @param sample_rate [Float] Sampling rate between +[0,1]+
55
- def initialize(name: SimpleMatcher::MATCH_ALL, service: SimpleMatcher::MATCH_ALL, sample_rate: 1.0)
56
- super(SimpleMatcher.new(name: name, service: service), RateSampler.new(sample_rate))
57
+ def initialize(
58
+ name: SimpleMatcher::MATCH_ALL, service: SimpleMatcher::MATCH_ALL,
59
+ resource: SimpleMatcher::MATCH_ALL, tags: {}, sample_rate: 1.0
60
+ )
61
+ # We want to allow 0.0 to drop all traces, but {Datadog::Tracing::Sampling::RateSampler}
62
+ # considers 0.0 an invalid rate and falls back to 100% sampling.
63
+ #
64
+ # We address that here by not setting the rate in the constructor,
65
+ # but using the setter method.
66
+ #
67
+ # We don't want to make this change directly to {Datadog::Tracing::Sampling::RateSampler}
68
+ # because it breaks its current contract to existing users.
69
+ sampler = RateSampler.new
70
+ sampler.sample_rate = sample_rate
71
+
72
+ super(SimpleMatcher.new(name: name, service: service, resource: resource, tags: tags), sampler)
57
73
  end
58
74
  end
59
75
  end
@@ -62,6 +62,8 @@ module Datadog
62
62
  kwargs = {
63
63
  name: rule['name'],
64
64
  service: rule['service'],
65
+ resource: rule['resource'],
66
+ tags: rule['tags'],
65
67
  sample_rate: sample_rate,
66
68
  }
67
69
 
@@ -26,6 +26,7 @@ module Datadog
26
26
  :parent_id,
27
27
  :resource,
28
28
  :service,
29
+ :links,
29
30
  :type,
30
31
  :start_time,
31
32
  :status,
@@ -58,7 +59,8 @@ module Datadog
58
59
  status: 0,
59
60
  type: nil,
60
61
  trace_id: nil,
61
- service_entry: nil
62
+ service_entry: nil,
63
+ links: nil
62
64
  )
63
65
  @name = Core::Utils::SafeDup.frozen_or_dup(name)
64
66
  @service = Core::Utils::SafeDup.frozen_or_dup(service)
@@ -86,6 +88,8 @@ module Datadog
86
88
 
87
89
  @service_entry = service_entry
88
90
 
91
+ @links = links || []
92
+
89
93
  # Mark with the service entry span metric, if applicable
90
94
  set_metric(Metadata::Ext::TAG_TOP_LEVEL, 1.0) if service_entry
91
95
  end
@@ -136,7 +140,8 @@ module Datadog
136
140
  service: @service,
137
141
  span_id: @id,
138
142
  trace_id: @trace_id,
139
- type: @type
143
+ type: @type,
144
+ span_links: @links.map(&:to_hash)
140
145
  }
141
146
 
142
147
  if stopped?
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ # SpanLink represents a causal link between two spans.
6
+ # @public_api
7
+ class SpanLink
8
+ # @!attribute [r] span_id
9
+ # Datadog id for the currently active span.
10
+ # @return [Integer]
11
+ attr_reader :span_id
12
+
13
+ # @!attribute [r] trace_id
14
+ # Datadog id for the currently active trace.
15
+ # @return [Integer]
16
+ attr_reader :trace_id
17
+
18
+ # @!attribute [r] attributes
19
+ # Datadog-specific tags that support richer distributed tracing association.
20
+ # @return [Hash<String,String>]
21
+ attr_reader :attributes
22
+
23
+ # @!attribute [r] trace_flags
24
+ # The W3C "trace-flags" extracted from a distributed context. This field is an 8-bit unsigned integer.
25
+ # @return [Integer]
26
+ # @see https://www.w3.org/TR/trace-context/#trace-flags
27
+ attr_reader :trace_flags
28
+
29
+ # @!attribute [r] trace_state
30
+ # The W3C "tracestate" extracted from a distributed context.
31
+ # This field is a string representing vendor-specific distribution data.
32
+ # The `dd=` entry is removed from `trace_state` as its value is dynamically calculated
33
+ # on every propagation injection.
34
+ # @return [String]
35
+ # @see https://www.w3.org/TR/trace-context/#tracestate-header
36
+ attr_reader :trace_state
37
+
38
+ # @!attribute [r] dropped_attributes
39
+ # The number of attributes that were discarded due to serialization limits.
40
+ # @return [Integer]
41
+ attr_reader :dropped_attributes
42
+
43
+ def initialize(
44
+ attributes: nil,
45
+ digest: nil
46
+ )
47
+ @span_id = digest&.span_id
48
+ @trace_id = digest&.trace_id
49
+ @trace_flags = digest&.trace_flags
50
+ @trace_state = digest&.trace_state && digest&.trace_state.dup
51
+ @dropped_attributes = 0
52
+ @attributes = (attributes && attributes.dup) || {}
53
+ end
54
+
55
+ def to_hash
56
+ h = {
57
+ span_id: @span_id || 0,
58
+ trace_id: Tracing::Utils::TraceId.to_low_order(@trace_id) || 0,
59
+ }
60
+ # Optimization: Hash non empty attributes
61
+ if @trace_id.to_i > Tracing::Utils::EXTERNAL_MAX_ID
62
+ h[:trace_id_high] =
63
+ Tracing::Utils::TraceId.to_high_order(@trace_id)
64
+ end
65
+ unless @attributes&.empty?
66
+ h[:attributes] = {}
67
+ @attributes.each do |k1, v1|
68
+ Tracing::Utils.serialize_attribute(k1, v1).each do |new_k1, value|
69
+ h[:attributes][new_k1] = value.to_s
70
+ end
71
+ end
72
+ end
73
+ h[:dropped_attributes_count] = @dropped_attributes if @dropped_attributes > 0
74
+ h[:tracestate] = @trace_state if @trace_state
75
+ # If traceflags set, the high bit (bit 31) should be set to 1 (uint32).
76
+ # This helps us distinguish between when the sample decision is zero or not set
77
+ h[:flags] = if @trace_flags.nil?
78
+ 0
79
+ else
80
+ @trace_flags | (1 << 31)
81
+ end
82
+ h
83
+ end
84
+ end
85
+ end
86
+ end
@@ -8,6 +8,7 @@ require_relative 'metadata/tagging'
8
8
  require_relative 'sampling/ext'
9
9
  require_relative 'span_operation'
10
10
  require_relative 'trace_digest'
11
+ require_relative 'correlation'
11
12
  require_relative 'trace_segment'
12
13
  require_relative 'utils'
13
14
 
@@ -306,6 +307,17 @@ module Datadog
306
307
  ).freeze
307
308
  end
308
309
 
310
+ def to_correlation
311
+ # Resolve current span ID
312
+ span_id = @active_span && @active_span.id
313
+ span_id ||= @parent_span_id unless finished?
314
+
315
+ Correlation::Identifier.new(
316
+ trace_id: @id,
317
+ span_id: span_id
318
+ )
319
+ end
320
+
309
321
  # Returns a copy of this trace suitable for forks (w/o spans.)
310
322
  # Used for continuation of traces across forks.
311
323
  def fork_clone
@@ -224,9 +224,10 @@ module Datadog
224
224
  # @return [Datadog::Tracing::Correlation::Identifier] correlation object
225
225
  def active_correlation(key = nil)
226
226
  trace = active_trace(key)
227
- Correlation.identifier_from_digest(
228
- trace && trace.to_digest
229
- )
227
+
228
+ return Datadog::Tracing::Correlation::Identifier.new unless trace
229
+
230
+ trace.to_correlation
230
231
  end
231
232
 
232
233
  # Setup a new trace to continue from where another
@@ -58,7 +58,7 @@ module Datadog
58
58
  def to_msgpack(packer = nil)
59
59
  packer ||= MessagePack::Packer.new
60
60
 
61
- number_of_elements_to_write = 10
61
+ number_of_elements_to_write = 11
62
62
 
63
63
  if span.stopped?
64
64
  packer.write_map_header(number_of_elements_to_write + 2) # Set header with how many elements in the map
@@ -93,6 +93,8 @@ module Datadog
93
93
  packer.write(span.meta)
94
94
  packer.write('metrics')
95
95
  packer.write(span.metrics)
96
+ packer.write('span_links')
97
+ packer.write(span.links.map(&:to_hash))
96
98
  packer.write('error')
97
99
  packer.write(span.status)
98
100
  packer
@@ -45,6 +45,22 @@ module Datadog
45
45
  @id_rng = Random.new
46
46
  end
47
47
 
48
+ # Serialize values into Datadog span tags and metrics.
49
+ # Notably, arrays are exploded into many keys, each with
50
+ # a numeric suffix representing the array index, for example:
51
+ # `'foo' => ['a','b']` becomes `'foo.0' => 'a', 'foo.1' => 'b'`
52
+ def self.serialize_attribute(key, value)
53
+ if value.is_a?(Array)
54
+ value.flat_map.with_index do |v, idx|
55
+ serialize_attribute("#{key}.#{idx}", v)
56
+ end
57
+ elsif value.is_a?(TrueClass) || value.is_a?(FalseClass)
58
+ [[key, value.to_s]]
59
+ else
60
+ [[key, value]]
61
+ end
62
+ end
63
+
48
64
  private_class_method :id_rng, :reset!
49
65
 
50
66
  # The module handles bitwise operation for trace id
@@ -5,7 +5,7 @@ module Datadog
5
5
  MAJOR = 2
6
6
  MINOR = 0
7
7
  PATCH = 0
8
- PRE = 'beta1'
8
+ PRE = 'beta2'
9
9
  BUILD = nil
10
10
  # PRE and BUILD above are modified for dev gems during gem build GHA workflow
11
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta1
4
+ version: 2.0.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-22 00:00:00.000000000 Z
11
+ date: 2024-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: base64
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: debase-ruby_core_source
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +58,14 @@ dependencies:
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: 6.0.0.2.0
61
+ version: 7.0.0.1.0
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: 6.0.0.2.0
68
+ version: 7.0.0.1.0
83
69
  description: |
84
70
  datadog is Datadog's client library for Ruby. It includes a suite of tools
85
71
  which provide visibility into the performance and security of Ruby applications,
@@ -295,7 +281,6 @@ files:
295
281
  - lib/datadog/core/runtime/ext.rb
296
282
  - lib/datadog/core/runtime/metrics.rb
297
283
  - lib/datadog/core/telemetry/client.rb
298
- - lib/datadog/core/telemetry/collector.rb
299
284
  - lib/datadog/core/telemetry/emitter.rb
300
285
  - lib/datadog/core/telemetry/event.rb
301
286
  - lib/datadog/core/telemetry/ext.rb
@@ -305,17 +290,7 @@ files:
305
290
  - lib/datadog/core/telemetry/http/ext.rb
306
291
  - lib/datadog/core/telemetry/http/response.rb
307
292
  - lib/datadog/core/telemetry/http/transport.rb
308
- - lib/datadog/core/telemetry/v1/app_event.rb
309
- - lib/datadog/core/telemetry/v1/application.rb
310
- - lib/datadog/core/telemetry/v1/configuration.rb
311
- - lib/datadog/core/telemetry/v1/dependency.rb
312
- - lib/datadog/core/telemetry/v1/host.rb
313
- - lib/datadog/core/telemetry/v1/install_signature.rb
314
- - lib/datadog/core/telemetry/v1/integration.rb
315
- - lib/datadog/core/telemetry/v1/product.rb
316
- - lib/datadog/core/telemetry/v1/telemetry_request.rb
317
- - lib/datadog/core/telemetry/v2/app_client_configuration_change.rb
318
- - lib/datadog/core/telemetry/v2/request.rb
293
+ - lib/datadog/core/telemetry/request.rb
319
294
  - lib/datadog/core/transport/ext.rb
320
295
  - lib/datadog/core/transport/http/adapters/net.rb
321
296
  - lib/datadog/core/transport/http/adapters/registry.rb
@@ -330,6 +305,7 @@ files:
330
305
  - lib/datadog/core/transport/request.rb
331
306
  - lib/datadog/core/transport/response.rb
332
307
  - lib/datadog/core/utils.rb
308
+ - lib/datadog/core/utils/base64.rb
333
309
  - lib/datadog/core/utils/duration.rb
334
310
  - lib/datadog/core/utils/forking.rb
335
311
  - lib/datadog/core/utils/hash.rb
@@ -828,6 +804,7 @@ files:
828
804
  - lib/datadog/tracing/sampling/span/rule_parser.rb
829
805
  - lib/datadog/tracing/sampling/span/sampler.rb
830
806
  - lib/datadog/tracing/span.rb
807
+ - lib/datadog/tracing/span_link.rb
831
808
  - lib/datadog/tracing/span_operation.rb
832
809
  - lib/datadog/tracing/sync_writer.rb
833
810
  - lib/datadog/tracing/trace_digest.rb