datadog 2.22.0 → 2.24.0

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 (212) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +100 -1
  3. data/ext/LIBDATADOG_DEVELOPMENT.md +1 -58
  4. data/ext/datadog_profiling_native_extension/collectors_stack.c +21 -5
  5. data/ext/datadog_profiling_native_extension/crashtracking_runtime_stacks.c +239 -0
  6. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +1 -1
  7. data/ext/datadog_profiling_native_extension/extconf.rb +9 -4
  8. data/ext/datadog_profiling_native_extension/heap_recorder.c +1 -1
  9. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +12 -0
  10. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +4 -0
  11. data/ext/datadog_profiling_native_extension/profiling.c +2 -0
  12. data/ext/libdatadog_api/datadog_ruby_common.h +1 -1
  13. data/ext/libdatadog_api/feature_flags.c +554 -0
  14. data/ext/libdatadog_api/feature_flags.h +5 -0
  15. data/ext/libdatadog_api/init.c +2 -0
  16. data/ext/libdatadog_api/library_config.c +12 -11
  17. data/ext/libdatadog_extconf_helpers.rb +1 -1
  18. data/lib/datadog/appsec/api_security/route_extractor.rb +23 -6
  19. data/lib/datadog/appsec/api_security/sampler.rb +7 -4
  20. data/lib/datadog/appsec/assets/blocked.html +8 -0
  21. data/lib/datadog/appsec/assets/blocked.json +1 -1
  22. data/lib/datadog/appsec/assets/blocked.text +3 -1
  23. data/lib/datadog/appsec/assets.rb +1 -1
  24. data/lib/datadog/appsec/context.rb +2 -1
  25. data/lib/datadog/appsec/remote.rb +5 -9
  26. data/lib/datadog/appsec/response.rb +18 -4
  27. data/lib/datadog/appsec/security_engine/result.rb +2 -1
  28. data/lib/datadog/core/configuration/components.rb +30 -3
  29. data/lib/datadog/core/configuration/config_helper.rb +2 -2
  30. data/lib/datadog/core/configuration/deprecations.rb +2 -2
  31. data/lib/datadog/core/configuration/option_definition.rb +4 -2
  32. data/lib/datadog/core/configuration/options.rb +8 -5
  33. data/lib/datadog/core/configuration/settings.rb +28 -3
  34. data/lib/datadog/core/configuration/supported_configurations.rb +332 -302
  35. data/lib/datadog/core/ddsketch.rb +0 -2
  36. data/lib/datadog/core/environment/cgroup.rb +52 -25
  37. data/lib/datadog/core/environment/container.rb +140 -46
  38. data/lib/datadog/core/environment/ext.rb +7 -0
  39. data/lib/datadog/core/environment/process.rb +87 -0
  40. data/lib/datadog/core/feature_flags.rb +61 -0
  41. data/lib/datadog/core/rate_limiter.rb +9 -1
  42. data/lib/datadog/core/remote/client/capabilities.rb +7 -0
  43. data/lib/datadog/core/remote/client.rb +14 -6
  44. data/lib/datadog/core/remote/component.rb +6 -4
  45. data/lib/datadog/core/remote/configuration/content.rb +15 -2
  46. data/lib/datadog/core/remote/configuration/digest.rb +14 -7
  47. data/lib/datadog/core/remote/configuration/repository.rb +1 -1
  48. data/lib/datadog/core/remote/configuration/target.rb +13 -6
  49. data/lib/datadog/core/remote/transport/config.rb +4 -25
  50. data/lib/datadog/core/remote/transport/http/config.rb +10 -50
  51. data/lib/datadog/core/remote/transport/http/negotiation.rb +14 -44
  52. data/lib/datadog/core/remote/transport/http.rb +15 -24
  53. data/lib/datadog/core/remote/transport/negotiation.rb +8 -33
  54. data/lib/datadog/core/remote/worker.rb +25 -37
  55. data/lib/datadog/core/tag_builder.rb +0 -4
  56. data/lib/datadog/core/tag_normalizer.rb +84 -0
  57. data/lib/datadog/core/telemetry/component.rb +59 -16
  58. data/lib/datadog/core/telemetry/event/app_started.rb +86 -49
  59. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +27 -4
  60. data/lib/datadog/core/telemetry/logger.rb +2 -2
  61. data/lib/datadog/core/telemetry/logging.rb +2 -8
  62. data/lib/datadog/core/telemetry/metrics_manager.rb +9 -0
  63. data/lib/datadog/core/telemetry/request.rb +17 -3
  64. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +3 -34
  65. data/lib/datadog/core/telemetry/transport/http.rb +21 -16
  66. data/lib/datadog/core/telemetry/transport/telemetry.rb +3 -11
  67. data/lib/datadog/core/telemetry/worker.rb +88 -32
  68. data/lib/datadog/core/transport/ext.rb +2 -0
  69. data/lib/datadog/core/transport/http/api/endpoint.rb +9 -4
  70. data/lib/datadog/core/transport/http/api/instance.rb +4 -21
  71. data/lib/datadog/core/transport/http/builder.rb +9 -5
  72. data/lib/datadog/core/transport/http/client.rb +80 -0
  73. data/lib/datadog/core/transport/http.rb +22 -19
  74. data/lib/datadog/core/transport/response.rb +9 -0
  75. data/lib/datadog/core/transport/transport.rb +90 -0
  76. data/lib/datadog/core/utils/array.rb +29 -0
  77. data/lib/datadog/{appsec/api_security → core/utils}/lru_cache.rb +10 -21
  78. data/lib/datadog/core/utils/network.rb +3 -1
  79. data/lib/datadog/core/utils/only_once_successful.rb +8 -2
  80. data/lib/datadog/core/utils/time.rb +1 -1
  81. data/lib/datadog/core/utils.rb +2 -0
  82. data/lib/datadog/core/workers/async.rb +10 -1
  83. data/lib/datadog/core/workers/interval_loop.rb +44 -3
  84. data/lib/datadog/core/workers/polling.rb +2 -0
  85. data/lib/datadog/core/workers/queue.rb +100 -1
  86. data/lib/datadog/data_streams/configuration/settings.rb +49 -0
  87. data/lib/datadog/data_streams/configuration.rb +11 -0
  88. data/lib/datadog/data_streams/ext.rb +11 -0
  89. data/lib/datadog/data_streams/extensions.rb +16 -0
  90. data/lib/datadog/data_streams/pathway_context.rb +169 -0
  91. data/lib/datadog/data_streams/processor.rb +509 -0
  92. data/lib/datadog/data_streams/transport/http/stats.rb +52 -0
  93. data/lib/datadog/data_streams/transport/http.rb +40 -0
  94. data/lib/datadog/data_streams/transport/stats.rb +46 -0
  95. data/lib/datadog/data_streams.rb +100 -0
  96. data/lib/datadog/di/component.rb +0 -16
  97. data/lib/datadog/di/contrib/active_record.rb +31 -5
  98. data/lib/datadog/di/el/compiler.rb +8 -4
  99. data/lib/datadog/di/el/evaluator.rb +1 -1
  100. data/lib/datadog/di/error.rb +9 -0
  101. data/lib/datadog/di/instrumenter.rb +93 -34
  102. data/lib/datadog/di/probe.rb +20 -0
  103. data/lib/datadog/di/probe_builder.rb +2 -1
  104. data/lib/datadog/di/probe_manager.rb +47 -33
  105. data/lib/datadog/di/probe_notification_builder.rb +77 -25
  106. data/lib/datadog/di/proc_responder.rb +32 -0
  107. data/lib/datadog/di/remote.rb +89 -84
  108. data/lib/datadog/di/transport/diagnostics.rb +8 -36
  109. data/lib/datadog/di/transport/http/diagnostics.rb +1 -33
  110. data/lib/datadog/di/transport/http/input.rb +1 -33
  111. data/lib/datadog/di/transport/http.rb +32 -17
  112. data/lib/datadog/di/transport/input.rb +67 -34
  113. data/lib/datadog/di.rb +61 -5
  114. data/lib/datadog/open_feature/component.rb +60 -0
  115. data/lib/datadog/open_feature/configuration.rb +27 -0
  116. data/lib/datadog/open_feature/evaluation_engine.rb +70 -0
  117. data/lib/datadog/open_feature/exposures/batch_builder.rb +32 -0
  118. data/lib/datadog/open_feature/exposures/buffer.rb +43 -0
  119. data/lib/datadog/open_feature/exposures/deduplicator.rb +30 -0
  120. data/lib/datadog/open_feature/exposures/event.rb +60 -0
  121. data/lib/datadog/open_feature/exposures/reporter.rb +40 -0
  122. data/lib/datadog/open_feature/exposures/worker.rb +116 -0
  123. data/lib/datadog/open_feature/ext.rb +14 -0
  124. data/lib/datadog/open_feature/native_evaluator.rb +38 -0
  125. data/lib/datadog/open_feature/noop_evaluator.rb +26 -0
  126. data/lib/datadog/open_feature/provider.rb +141 -0
  127. data/lib/datadog/open_feature/remote.rb +67 -0
  128. data/lib/datadog/open_feature/resolution_details.rb +35 -0
  129. data/lib/datadog/open_feature/transport.rb +70 -0
  130. data/lib/datadog/open_feature.rb +19 -0
  131. data/lib/datadog/opentelemetry/api/baggage.rb +1 -1
  132. data/lib/datadog/opentelemetry/configuration/settings.rb +159 -0
  133. data/lib/datadog/opentelemetry/metrics.rb +117 -0
  134. data/lib/datadog/opentelemetry/sdk/configurator.rb +25 -1
  135. data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +35 -0
  136. data/lib/datadog/opentelemetry.rb +3 -0
  137. data/lib/datadog/profiling/collectors/code_provenance.rb +41 -7
  138. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +1 -1
  139. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -1
  140. data/lib/datadog/profiling/collectors/info.rb +2 -1
  141. data/lib/datadog/profiling/component.rb +12 -11
  142. data/lib/datadog/profiling/http_transport.rb +4 -1
  143. data/lib/datadog/profiling/profiler.rb +4 -0
  144. data/lib/datadog/profiling/tag_builder.rb +36 -3
  145. data/lib/datadog/profiling.rb +1 -2
  146. data/lib/datadog/single_step_instrument.rb +1 -1
  147. data/lib/datadog/tracing/configuration/ext.rb +9 -0
  148. data/lib/datadog/tracing/configuration/settings.rb +74 -0
  149. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +4 -4
  150. data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -2
  151. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +21 -7
  152. data/lib/datadog/tracing/contrib/active_job/patcher.rb +5 -1
  153. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +4 -2
  154. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +4 -1
  155. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +11 -3
  156. data/lib/datadog/tracing/contrib/extensions.rb +10 -2
  157. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +11 -7
  158. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +7 -3
  159. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +22 -17
  160. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +11 -3
  161. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +11 -3
  162. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +11 -3
  163. data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +66 -0
  164. data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +66 -0
  165. data/lib/datadog/tracing/contrib/kafka/patcher.rb +14 -0
  166. data/lib/datadog/tracing/contrib/karafka/framework.rb +30 -0
  167. data/lib/datadog/tracing/contrib/karafka/monitor.rb +11 -0
  168. data/lib/datadog/tracing/contrib/karafka/patcher.rb +35 -4
  169. data/lib/datadog/tracing/contrib/rack/middlewares.rb +59 -27
  170. data/lib/datadog/tracing/contrib/rack/route_inference.rb +53 -0
  171. data/lib/datadog/tracing/contrib/rails/middlewares.rb +2 -2
  172. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +4 -1
  173. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +3 -1
  174. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +3 -1
  175. data/lib/datadog/tracing/contrib/status_range_matcher.rb +9 -1
  176. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +3 -1
  177. data/lib/datadog/tracing/contrib/waterdrop/configuration/settings.rb +27 -0
  178. data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +48 -0
  179. data/lib/datadog/tracing/contrib/waterdrop/ext.rb +17 -0
  180. data/lib/datadog/tracing/contrib/waterdrop/integration.rb +43 -0
  181. data/lib/datadog/tracing/contrib/waterdrop/middleware.rb +46 -0
  182. data/lib/datadog/tracing/contrib/waterdrop/patcher.rb +49 -0
  183. data/lib/datadog/tracing/contrib/waterdrop/producer.rb +50 -0
  184. data/lib/datadog/tracing/contrib/waterdrop.rb +37 -0
  185. data/lib/datadog/tracing/contrib.rb +1 -0
  186. data/lib/datadog/tracing/diagnostics/environment_logger.rb +1 -1
  187. data/lib/datadog/tracing/metadata/ext.rb +1 -1
  188. data/lib/datadog/tracing/remote.rb +1 -9
  189. data/lib/datadog/tracing/span_event.rb +2 -2
  190. data/lib/datadog/tracing/span_operation.rb +9 -4
  191. data/lib/datadog/tracing/trace_operation.rb +44 -6
  192. data/lib/datadog/tracing/tracer.rb +42 -16
  193. data/lib/datadog/tracing/transport/http/client.rb +12 -26
  194. data/lib/datadog/tracing/transport/http/traces.rb +2 -50
  195. data/lib/datadog/tracing/transport/http.rb +15 -9
  196. data/lib/datadog/tracing/transport/io/client.rb +1 -1
  197. data/lib/datadog/tracing/transport/trace_formatter.rb +11 -0
  198. data/lib/datadog/tracing/transport/traces.rb +9 -71
  199. data/lib/datadog/tracing/workers/trace_writer.rb +5 -0
  200. data/lib/datadog/tracing/writer.rb +1 -0
  201. data/lib/datadog/version.rb +2 -2
  202. data/lib/datadog.rb +2 -0
  203. metadata +78 -21
  204. data/lib/datadog/core/remote/transport/http/api.rb +0 -53
  205. data/lib/datadog/core/remote/transport/http/client.rb +0 -49
  206. data/lib/datadog/core/telemetry/transport/http/api.rb +0 -43
  207. data/lib/datadog/core/telemetry/transport/http/client.rb +0 -49
  208. data/lib/datadog/core/transport/http/api/spec.rb +0 -36
  209. data/lib/datadog/di/transport/http/api.rb +0 -42
  210. data/lib/datadog/di/transport/http/client.rb +0 -47
  211. data/lib/datadog/opentelemetry/api/baggage.rbs +0 -26
  212. data/lib/datadog/tracing/transport/http/api.rb +0 -44
@@ -3,6 +3,9 @@
3
3
  require_relative '../../core/chunker'
4
4
  require_relative '../../core/transport/parcel'
5
5
  require_relative '../../core/transport/request'
6
+ require_relative '../../core/transport/transport'
7
+ require_relative '../../core/utils/array'
8
+ require_relative 'http/client'
6
9
  require_relative 'serializable_trace'
7
10
  require_relative 'trace_formatter'
8
11
 
@@ -65,11 +68,8 @@ module Datadog
65
68
  # @return [Enumerable[Array[Bytes,Integer]]] list of encoded chunks: each containing a byte array and
66
69
  # number of traces
67
70
  def encode_in_chunks(traces)
68
- encoded_traces = if traces.respond_to?(:filter_map)
69
- # DEV Supported since Ruby 2.7, saves an intermediate object creation
70
- traces.filter_map { |t| encode_one(t) }
71
- else
72
- traces.map { |t| encode_one(t) }.reject(&:nil?)
71
+ encoded_traces = Core::Utils::Array.filter_map(traces) do |trace|
72
+ encode_one(trace)
73
73
  end
74
74
 
75
75
  Datadog::Core::Chunker.chunk_by_size(encoded_traces, max_size).map do |chunk|
@@ -123,16 +123,8 @@ module Datadog
123
123
  # This class initializes the HTTP client, breaks down large
124
124
  # batches of traces into smaller chunks and handles
125
125
  # API version downgrade handshake.
126
- class Transport
127
- attr_reader :client, :apis, :default_api, :current_api_id, :logger
128
-
129
- def initialize(apis, default_api, logger: Datadog.logger)
130
- @apis = apis
131
- @default_api = default_api
132
- @logger = logger
133
-
134
- change_api!(default_api)
135
- end
126
+ class Transport < Core::Transport::Transport
127
+ self.http_client_class = Tracing::Transport::HTTP::Client
136
128
 
137
129
  def send_traces(traces)
138
130
  encoder = current_api.encoder
@@ -145,7 +137,7 @@ module Datadog
145
137
  responses = chunker.encode_in_chunks(traces.lazy).map do |encoded_traces, trace_count|
146
138
  request = Request.new(EncodedParcel.new(encoded_traces, trace_count))
147
139
 
148
- client.send_traces_payload(request).tap do |response|
140
+ client.send_request(:traces, request).tap do |response|
149
141
  if downgrade?(response)
150
142
  downgrade!
151
143
  return send_traces(traces)
@@ -173,35 +165,11 @@ module Datadog
173
165
  end
174
166
 
175
167
  def stats
176
- @client.stats
177
- end
178
-
179
- def current_api
180
- apis[@current_api_id]
168
+ client.stats
181
169
  end
182
170
 
183
171
  private
184
172
 
185
- def downgrade?(response)
186
- return false unless apis.fallbacks.key?(@current_api_id)
187
-
188
- response.not_found? || response.unsupported?
189
- end
190
-
191
- def downgrade!
192
- downgrade_api_id = apis.fallbacks[@current_api_id]
193
- raise NoDowngradeAvailableError, @current_api_id if downgrade_api_id.nil?
194
-
195
- change_api!(downgrade_api_id)
196
- end
197
-
198
- def change_api!(api_id)
199
- raise UnknownApiVersionError, api_id unless apis.key?(api_id)
200
-
201
- @current_api_id = api_id
202
- @client = HTTP::Client.new(current_api, logger: logger)
203
- end
204
-
205
173
  # Queries the agent for native span events serialization support.
206
174
  # This changes how the serialization of span events performed.
207
175
  def native_events_supported?
@@ -221,36 +189,6 @@ module Datadog
221
189
  false
222
190
  end
223
191
  end
224
-
225
- # Raised when configured with an unknown API version
226
- class UnknownApiVersionError < StandardError
227
- attr_reader :version
228
-
229
- def initialize(version)
230
- super
231
-
232
- @version = version
233
- end
234
-
235
- def message
236
- "No matching transport API for version #{version}!"
237
- end
238
- end
239
-
240
- # Raised when configured with an unknown API version
241
- class NoDowngradeAvailableError < StandardError
242
- attr_reader :version
243
-
244
- def initialize(version)
245
- super
246
-
247
- @version = version
248
- end
249
-
250
- def message
251
- "No downgrade from transport API version #{version} is available!"
252
- end
253
- end
254
192
  end
255
193
  end
256
194
  end
@@ -21,6 +21,8 @@ module Datadog
21
21
  :transport,
22
22
  :agent_settings
23
23
 
24
+ # DEV-3.0: change to keyword arguments
25
+ #
24
26
  # rubocop:disable Lint/MissingSuper
25
27
  def initialize(options = {})
26
28
  @logger = options[:logger] || Datadog.logger
@@ -143,6 +145,9 @@ module Datadog
143
145
 
144
146
  # Are there more traces to be processed next?
145
147
  def work_pending?
148
+ # This is the same implementation as in Queue, but it was
149
+ # overwritten by IntervalLoop on its way to this worker class.
150
+ # See the comments in those two methods for more info.
146
151
  !buffer.empty?
147
152
  end
148
153
 
@@ -19,6 +19,7 @@ module Datadog
19
19
  :events,
20
20
  :agent_settings
21
21
 
22
+ # DEV-3.0: change to keyword arguments
22
23
  def initialize(options = {})
23
24
  @logger = options[:logger] || Datadog.logger
24
25
 
@@ -3,7 +3,7 @@
3
3
  module Datadog
4
4
  module VERSION
5
5
  MAJOR = 2
6
- MINOR = 22
6
+ MINOR = 24
7
7
  PATCH = 0
8
8
  PRE = nil
9
9
  BUILD = nil
@@ -21,6 +21,6 @@ module Datadog
21
21
  # To allow testing with the next unreleased version of Ruby, the version check is performed
22
22
  # as `< #{MAXIMUM_RUBY_VERSION}`, meaning prereleases of MAXIMUM_RUBY_VERSION are allowed
23
23
  # but not stable MAXIMUM_RUBY_VERSION releases.
24
- MAXIMUM_RUBY_VERSION = '3.5'
24
+ MAXIMUM_RUBY_VERSION = '4.1'
25
25
  end
26
26
  end
data/lib/datadog.rb CHANGED
@@ -8,6 +8,8 @@ require_relative 'datadog/tracing/contrib'
8
8
  require_relative 'datadog/profiling'
9
9
  require_relative 'datadog/appsec'
10
10
  require_relative 'datadog/di'
11
+ require_relative 'datadog/data_streams'
12
+ require_relative 'datadog/open_feature'
11
13
 
12
14
  # Line probes will not work on Ruby < 2.6 because of lack of :script_compiled
13
15
  # trace point. Activate DI automatically on supported Ruby versions but
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.22.0
4
+ version: 2.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-10-15 00:00:00.000000000 Z
11
+ date: 2026-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '3.4'
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 3.4.1
36
+ version: 3.4.2
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,35 +43,35 @@ dependencies:
43
43
  version: '3.4'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 3.4.1
46
+ version: 3.4.2
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: libddwaf
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 1.25.1.1.0
53
+ version: 1.30.0.0.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 1.25.1.1.0
60
+ version: 1.30.0.0.0
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: libdatadog
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 22.0.1.1.0
67
+ version: 24.0.1.1.0
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 22.0.1.1.0
74
+ version: 24.0.1.1.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: logger
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -86,6 +86,20 @@ dependencies:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: cgi
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
89
103
  description: |
90
104
  datadog is Datadog's client library for Ruby. It includes a suite of tools
91
105
  which provide visibility into the performance and security of Ruby applications,
@@ -125,6 +139,7 @@ files:
125
139
  - ext/datadog_profiling_native_extension/collectors_stack.h
126
140
  - ext/datadog_profiling_native_extension/collectors_thread_context.c
127
141
  - ext/datadog_profiling_native_extension/collectors_thread_context.h
142
+ - ext/datadog_profiling_native_extension/crashtracking_runtime_stacks.c
128
143
  - ext/datadog_profiling_native_extension/datadog_ruby_common.c
129
144
  - ext/datadog_profiling_native_extension/datadog_ruby_common.h
130
145
  - ext/datadog_profiling_native_extension/encoded_profile.c
@@ -158,6 +173,8 @@ files:
158
173
  - ext/libdatadog_api/datadog_ruby_common.h
159
174
  - ext/libdatadog_api/ddsketch.c
160
175
  - ext/libdatadog_api/extconf.rb
176
+ - ext/libdatadog_api/feature_flags.c
177
+ - ext/libdatadog_api/feature_flags.h
161
178
  - ext/libdatadog_api/init.c
162
179
  - ext/libdatadog_api/library_config.c
163
180
  - ext/libdatadog_api/library_config.h
@@ -175,7 +192,6 @@ files:
175
192
  - lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb
176
193
  - lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb
177
194
  - lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb
178
- - lib/datadog/appsec/api_security/lru_cache.rb
179
195
  - lib/datadog/appsec/api_security/route_extractor.rb
180
196
  - lib/datadog/appsec/api_security/sampler.rb
181
197
  - lib/datadog/appsec/assets.rb
@@ -319,6 +335,7 @@ files:
319
335
  - lib/datadog/core/environment/git.rb
320
336
  - lib/datadog/core/environment/identity.rb
321
337
  - lib/datadog/core/environment/platform.rb
338
+ - lib/datadog/core/environment/process.rb
322
339
  - lib/datadog/core/environment/socket.rb
323
340
  - lib/datadog/core/environment/thread_count.rb
324
341
  - lib/datadog/core/environment/variable_helpers.rb
@@ -326,6 +343,7 @@ files:
326
343
  - lib/datadog/core/environment/yjit.rb
327
344
  - lib/datadog/core/error.rb
328
345
  - lib/datadog/core/extensions.rb
346
+ - lib/datadog/core/feature_flags.rb
329
347
  - lib/datadog/core/git/ext.rb
330
348
  - lib/datadog/core/header_collection.rb
331
349
  - lib/datadog/core/logger.rb
@@ -357,8 +375,6 @@ files:
357
375
  - lib/datadog/core/remote/tie/tracing.rb
358
376
  - lib/datadog/core/remote/transport/config.rb
359
377
  - lib/datadog/core/remote/transport/http.rb
360
- - lib/datadog/core/remote/transport/http/api.rb
361
- - lib/datadog/core/remote/transport/http/client.rb
362
378
  - lib/datadog/core/remote/transport/http/config.rb
363
379
  - lib/datadog/core/remote/transport/http/negotiation.rb
364
380
  - lib/datadog/core/remote/transport/negotiation.rb
@@ -367,6 +383,7 @@ files:
367
383
  - lib/datadog/core/runtime/metrics.rb
368
384
  - lib/datadog/core/semaphore.rb
369
385
  - lib/datadog/core/tag_builder.rb
386
+ - lib/datadog/core/tag_normalizer.rb
370
387
  - lib/datadog/core/telemetry/component.rb
371
388
  - lib/datadog/core/telemetry/emitter.rb
372
389
  - lib/datadog/core/telemetry/event.rb
@@ -392,8 +409,6 @@ files:
392
409
  - lib/datadog/core/telemetry/metrics_manager.rb
393
410
  - lib/datadog/core/telemetry/request.rb
394
411
  - lib/datadog/core/telemetry/transport/http.rb
395
- - lib/datadog/core/telemetry/transport/http/api.rb
396
- - lib/datadog/core/telemetry/transport/http/client.rb
397
412
  - lib/datadog/core/telemetry/transport/http/telemetry.rb
398
413
  - lib/datadog/core/telemetry/transport/telemetry.rb
399
414
  - lib/datadog/core/telemetry/worker.rb
@@ -407,19 +422,22 @@ files:
407
422
  - lib/datadog/core/transport/http/api/fallbacks.rb
408
423
  - lib/datadog/core/transport/http/api/instance.rb
409
424
  - lib/datadog/core/transport/http/api/map.rb
410
- - lib/datadog/core/transport/http/api/spec.rb
411
425
  - lib/datadog/core/transport/http/builder.rb
426
+ - lib/datadog/core/transport/http/client.rb
412
427
  - lib/datadog/core/transport/http/env.rb
413
428
  - lib/datadog/core/transport/http/response.rb
414
429
  - lib/datadog/core/transport/parcel.rb
415
430
  - lib/datadog/core/transport/request.rb
416
431
  - lib/datadog/core/transport/response.rb
432
+ - lib/datadog/core/transport/transport.rb
417
433
  - lib/datadog/core/utils.rb
434
+ - lib/datadog/core/utils/array.rb
418
435
  - lib/datadog/core/utils/at_fork_monkey_patch.rb
419
436
  - lib/datadog/core/utils/base64.rb
420
437
  - lib/datadog/core/utils/duration.rb
421
438
  - lib/datadog/core/utils/forking.rb
422
439
  - lib/datadog/core/utils/hash.rb
440
+ - lib/datadog/core/utils/lru_cache.rb
423
441
  - lib/datadog/core/utils/network.rb
424
442
  - lib/datadog/core/utils/only_once.rb
425
443
  - lib/datadog/core/utils/only_once_successful.rb
@@ -442,6 +460,16 @@ files:
442
460
  - lib/datadog/core/workers/polling.rb
443
461
  - lib/datadog/core/workers/queue.rb
444
462
  - lib/datadog/core/workers/runtime_metrics.rb
463
+ - lib/datadog/data_streams.rb
464
+ - lib/datadog/data_streams/configuration.rb
465
+ - lib/datadog/data_streams/configuration/settings.rb
466
+ - lib/datadog/data_streams/ext.rb
467
+ - lib/datadog/data_streams/extensions.rb
468
+ - lib/datadog/data_streams/pathway_context.rb
469
+ - lib/datadog/data_streams/processor.rb
470
+ - lib/datadog/data_streams/transport/http.rb
471
+ - lib/datadog/data_streams/transport/http/stats.rb
472
+ - lib/datadog/data_streams/transport/stats.rb
445
473
  - lib/datadog/di.rb
446
474
  - lib/datadog/di/base.rb
447
475
  - lib/datadog/di/boot.rb
@@ -469,13 +497,12 @@ files:
469
497
  - lib/datadog/di/probe_manager.rb
470
498
  - lib/datadog/di/probe_notification_builder.rb
471
499
  - lib/datadog/di/probe_notifier_worker.rb
500
+ - lib/datadog/di/proc_responder.rb
472
501
  - lib/datadog/di/redactor.rb
473
502
  - lib/datadog/di/remote.rb
474
503
  - lib/datadog/di/serializer.rb
475
504
  - lib/datadog/di/transport/diagnostics.rb
476
505
  - lib/datadog/di/transport/http.rb
477
- - lib/datadog/di/transport/http/api.rb
478
- - lib/datadog/di/transport/http/client.rb
479
506
  - lib/datadog/di/transport/http/diagnostics.rb
480
507
  - lib/datadog/di/transport/http/input.rb
481
508
  - lib/datadog/di/transport/input.rb
@@ -493,13 +520,32 @@ files:
493
520
  - lib/datadog/kit/appsec/events/v2.rb
494
521
  - lib/datadog/kit/enable_core_dumps.rb
495
522
  - lib/datadog/kit/identity.rb
523
+ - lib/datadog/open_feature.rb
524
+ - lib/datadog/open_feature/component.rb
525
+ - lib/datadog/open_feature/configuration.rb
526
+ - lib/datadog/open_feature/evaluation_engine.rb
527
+ - lib/datadog/open_feature/exposures/batch_builder.rb
528
+ - lib/datadog/open_feature/exposures/buffer.rb
529
+ - lib/datadog/open_feature/exposures/deduplicator.rb
530
+ - lib/datadog/open_feature/exposures/event.rb
531
+ - lib/datadog/open_feature/exposures/reporter.rb
532
+ - lib/datadog/open_feature/exposures/worker.rb
533
+ - lib/datadog/open_feature/ext.rb
534
+ - lib/datadog/open_feature/native_evaluator.rb
535
+ - lib/datadog/open_feature/noop_evaluator.rb
536
+ - lib/datadog/open_feature/provider.rb
537
+ - lib/datadog/open_feature/remote.rb
538
+ - lib/datadog/open_feature/resolution_details.rb
539
+ - lib/datadog/open_feature/transport.rb
496
540
  - lib/datadog/opentelemetry.rb
497
541
  - lib/datadog/opentelemetry/api/baggage.rb
498
- - lib/datadog/opentelemetry/api/baggage.rbs
499
542
  - lib/datadog/opentelemetry/api/context.rb
500
543
  - lib/datadog/opentelemetry/api/trace/span.rb
544
+ - lib/datadog/opentelemetry/configuration/settings.rb
545
+ - lib/datadog/opentelemetry/metrics.rb
501
546
  - lib/datadog/opentelemetry/sdk/configurator.rb
502
547
  - lib/datadog/opentelemetry/sdk/id_generator.rb
548
+ - lib/datadog/opentelemetry/sdk/metrics_exporter.rb
503
549
  - lib/datadog/opentelemetry/sdk/propagator.rb
504
550
  - lib/datadog/opentelemetry/sdk/span_processor.rb
505
551
  - lib/datadog/opentelemetry/sdk/trace/span.rb
@@ -763,12 +809,15 @@ files:
763
809
  - lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb
764
810
  - lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb
765
811
  - lib/datadog/tracing/contrib/kafka/ext.rb
812
+ - lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb
813
+ - lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb
766
814
  - lib/datadog/tracing/contrib/kafka/integration.rb
767
815
  - lib/datadog/tracing/contrib/kafka/patcher.rb
768
816
  - lib/datadog/tracing/contrib/karafka.rb
769
817
  - lib/datadog/tracing/contrib/karafka/configuration/settings.rb
770
818
  - lib/datadog/tracing/contrib/karafka/distributed/propagation.rb
771
819
  - lib/datadog/tracing/contrib/karafka/ext.rb
820
+ - lib/datadog/tracing/contrib/karafka/framework.rb
772
821
  - lib/datadog/tracing/contrib/karafka/integration.rb
773
822
  - lib/datadog/tracing/contrib/karafka/monitor.rb
774
823
  - lib/datadog/tracing/contrib/karafka/patcher.rb
@@ -832,6 +881,7 @@ files:
832
881
  - lib/datadog/tracing/contrib/rack/middlewares.rb
833
882
  - lib/datadog/tracing/contrib/rack/patcher.rb
834
883
  - lib/datadog/tracing/contrib/rack/request_queue.rb
884
+ - lib/datadog/tracing/contrib/rack/route_inference.rb
835
885
  - lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb
836
886
  - lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb
837
887
  - lib/datadog/tracing/contrib/rails/configuration/settings.rb
@@ -943,6 +993,14 @@ files:
943
993
  - lib/datadog/tracing/contrib/utils/database.rb
944
994
  - lib/datadog/tracing/contrib/utils/quantization/hash.rb
945
995
  - lib/datadog/tracing/contrib/utils/quantization/http.rb
996
+ - lib/datadog/tracing/contrib/waterdrop.rb
997
+ - lib/datadog/tracing/contrib/waterdrop/configuration/settings.rb
998
+ - lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb
999
+ - lib/datadog/tracing/contrib/waterdrop/ext.rb
1000
+ - lib/datadog/tracing/contrib/waterdrop/integration.rb
1001
+ - lib/datadog/tracing/contrib/waterdrop/middleware.rb
1002
+ - lib/datadog/tracing/contrib/waterdrop/patcher.rb
1003
+ - lib/datadog/tracing/contrib/waterdrop/producer.rb
946
1004
  - lib/datadog/tracing/correlation.rb
947
1005
  - lib/datadog/tracing/diagnostics/environment_logger.rb
948
1006
  - lib/datadog/tracing/diagnostics/ext.rb
@@ -997,7 +1055,6 @@ files:
997
1055
  - lib/datadog/tracing/trace_segment.rb
998
1056
  - lib/datadog/tracing/tracer.rb
999
1057
  - lib/datadog/tracing/transport/http.rb
1000
- - lib/datadog/tracing/transport/http/api.rb
1001
1058
  - lib/datadog/tracing/transport/http/client.rb
1002
1059
  - lib/datadog/tracing/transport/http/statistics.rb
1003
1060
  - lib/datadog/tracing/transport/http/traces.rb
@@ -1020,8 +1077,8 @@ licenses:
1020
1077
  - Apache-2.0
1021
1078
  metadata:
1022
1079
  allowed_push_host: https://rubygems.org
1023
- changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.22.0/CHANGELOG.md
1024
- source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.22.0
1080
+ changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.24.0/CHANGELOG.md
1081
+ source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.24.0
1025
1082
  post_install_message:
1026
1083
  rdoc_options: []
1027
1084
  require_paths:
@@ -1033,7 +1090,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
1033
1090
  version: 2.5.0
1034
1091
  - - "<"
1035
1092
  - !ruby/object:Gem::Version
1036
- version: '3.5'
1093
+ version: '4.1'
1037
1094
  required_rubygems_version: !ruby/object:Gem::Requirement
1038
1095
  requirements:
1039
1096
  - - ">="
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../encoding'
4
- require_relative '../../../transport/http/api/map'
5
- require_relative '../../../transport/http/api/instance'
6
- require_relative '../../../transport/http/api/spec'
7
- require_relative 'negotiation'
8
- require_relative 'config'
9
-
10
- module Datadog
11
- module Core
12
- module Remote
13
- module Transport
14
- module HTTP
15
- # Namespace for API components
16
- module API
17
- # Default API versions
18
- ROOT = 'root'
19
- V7 = 'v0.7'
20
-
21
- module_function
22
-
23
- def defaults
24
- Core::Transport::HTTP::API::Map[
25
- ROOT => Spec.new do |s|
26
- s.info = Negotiation::API::Endpoint.new(
27
- '/info',
28
- )
29
- end,
30
- V7 => Spec.new do |s|
31
- s.config = Config::API::Endpoint.new(
32
- '/v0.7/config',
33
- Core::Encoding::JSONEncoder,
34
- )
35
- end,
36
- ]
37
- end
38
-
39
- class Instance < Core::Transport::HTTP::API::Instance
40
- include Config::API::Instance
41
- include Negotiation::API::Instance
42
- end
43
-
44
- class Spec < Core::Transport::HTTP::API::Spec
45
- include Config::API::Spec
46
- include Negotiation::API::Spec
47
- end
48
- end
49
- end
50
- end
51
- end
52
- end
53
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../../core/transport/http/env'
4
- require_relative '../../../../core/transport/http/response'
5
-
6
- # TODO: Decouple transport/http/client
7
- #
8
- # The standard one does `include Transport::HTTP::Statistics` and performs
9
- # stats updates, which may or may not be desirable in general.
10
-
11
- module Datadog
12
- module Core
13
- module Remote
14
- module Transport
15
- module HTTP
16
- # Routes, encodes, and sends tracer data to the trace agent via HTTP.
17
- class Client
18
- attr_reader :api, :logger
19
-
20
- def initialize(api, logger: Datadog.logger)
21
- @api = api
22
- @logger = logger
23
- end
24
-
25
- def send_request(request, &block)
26
- # Build request into env
27
- env = build_env(request)
28
-
29
- # Get responses from API
30
- yield(api, env)
31
- rescue => e
32
- message =
33
- "Internal error during #{self.class.name} request. Cause: #{e.class.name} #{e.message} " \
34
- "Location: #{Array(e.backtrace).first}"
35
-
36
- logger.debug(message)
37
-
38
- Datadog::Core::Transport::InternalErrorResponse.new(e)
39
- end
40
-
41
- def build_env(request)
42
- Datadog::Core::Transport::HTTP::Env.new(request)
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../encoding'
4
- require_relative '../../../transport/http/api/map'
5
- require_relative '../../../transport/http/api/instance'
6
- require_relative '../../../transport/http/api/spec'
7
- require_relative 'telemetry'
8
-
9
- module Datadog
10
- module Core
11
- module Telemetry
12
- module Transport
13
- module HTTP
14
- # Namespace for API components
15
- module API
16
- # Default API versions
17
- AGENT_TELEMETRY = 'agent_telemetry'
18
- AGENTLESS_TELEMETRY = 'agentless_telemetry'
19
-
20
- module_function
21
-
22
- def defaults
23
- Datadog::Core::Transport::HTTP::API::Map[
24
- AGENT_TELEMETRY => Telemetry::API::Spec.new do |s|
25
- s.telemetry = Telemetry::API::Endpoint.new(
26
- '/telemetry/proxy/api/v2/apmtelemetry',
27
- Core::Encoding::JSONEncoder,
28
- )
29
- end,
30
- AGENTLESS_TELEMETRY => Telemetry::API::Spec.new do |s|
31
- s.telemetry = Telemetry::API::Endpoint.new(
32
- '/api/v2/apmtelemetry',
33
- Core::Encoding::JSONEncoder,
34
- )
35
- end,
36
- ]
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../transport/http/env'
4
- require_relative '../../../transport/http/response'
5
-
6
- # TODO: Decouple transport/http/client
7
- #
8
- # The standard one does `include Transport::HTTP::Statistics` and performs
9
- # stats updates, which may or may not be desirable in general.
10
-
11
- module Datadog
12
- module Core
13
- module Telemetry
14
- module Transport
15
- module HTTP
16
- # Routes, encodes, and sends DI data to the trace agent via HTTP.
17
- class Client
18
- attr_reader :api, :logger
19
-
20
- def initialize(api, logger:)
21
- @api = api
22
- @logger = logger
23
- end
24
-
25
- def send_request(request, &block)
26
- # Build request into env
27
- env = build_env(request)
28
-
29
- # Get responses from API
30
- yield(api, env)
31
- rescue => e
32
- message =
33
- "Internal error during #{self.class.name} request. Cause: #{e.class.name} #{e.message} " \
34
- "Location: #{Array(e.backtrace).first}"
35
-
36
- logger.debug(message)
37
-
38
- Datadog::Core::Transport::InternalErrorResponse.new(e)
39
- end
40
-
41
- def build_env(request)
42
- Datadog::Core::Transport::HTTP::Env.new(request)
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end