datadog 2.0.0.beta1 → 2.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
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