datadog 2.37.0 → 2.39.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 (823) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +48 -1
  3. data/bin/ddprofrb +4 -4
  4. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +99 -15
  5. data/ext/datadog_profiling_native_extension/collectors_stack.c +19 -24
  6. data/ext/datadog_profiling_native_extension/collectors_stack.h +0 -1
  7. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +155 -141
  8. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -0
  9. data/ext/datadog_profiling_native_extension/extconf.rb +1 -4
  10. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +5 -0
  11. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +2 -0
  12. data/ext/datadog_profiling_native_extension/setup_signal_handler.c +2 -0
  13. data/ext/datadog_profiling_native_extension/time_helpers.h +12 -7
  14. data/ext/libdatadog_api/extconf.rb +24 -24
  15. data/ext/libdatadog_api/feature_flags.c +26 -0
  16. data/ext/libdatadog_extconf_helpers.rb +9 -9
  17. data/lib/datadog/ai_guard/api_client.rb +2 -2
  18. data/lib/datadog/ai_guard/component.rb +10 -10
  19. data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +16 -16
  20. data/lib/datadog/appsec/actions_handler.rb +6 -6
  21. data/lib/datadog/appsec/anonymizer.rb +1 -1
  22. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +1 -1
  23. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +6 -6
  24. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +1 -1
  25. data/lib/datadog/appsec/api_security/route_extractor.rb +11 -11
  26. data/lib/datadog/appsec/api_security/sampler.rb +5 -5
  27. data/lib/datadog/appsec/api_security.rb +1 -1
  28. data/lib/datadog/appsec/assets.rb +7 -7
  29. data/lib/datadog/appsec/autoload.rb +3 -3
  30. data/lib/datadog/appsec/component.rb +15 -15
  31. data/lib/datadog/appsec/compressed_json.rb +6 -6
  32. data/lib/datadog/appsec/configuration.rb +59 -59
  33. data/lib/datadog/appsec/context.rb +6 -6
  34. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +6 -6
  35. data/lib/datadog/appsec/contrib/active_record/integration.rb +4 -4
  36. data/lib/datadog/appsec/contrib/active_record/patcher.rb +4 -4
  37. data/lib/datadog/appsec/contrib/aws_lambda/gateway/watcher.rb +7 -7
  38. data/lib/datadog/appsec/contrib/aws_lambda/integration.rb +2 -2
  39. data/lib/datadog/appsec/contrib/aws_lambda/patcher.rb +2 -2
  40. data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +36 -34
  41. data/lib/datadog/appsec/contrib/devise/data_extractor.rb +3 -3
  42. data/lib/datadog/appsec/contrib/devise/ext.rb +20 -20
  43. data/lib/datadog/appsec/contrib/devise/integration.rb +4 -4
  44. data/lib/datadog/appsec/contrib/devise/patcher.rb +7 -7
  45. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +12 -12
  46. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +8 -8
  47. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +24 -9
  48. data/lib/datadog/appsec/contrib/excon/integration.rb +4 -4
  49. data/lib/datadog/appsec/contrib/excon/patcher.rb +1 -1
  50. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +26 -26
  51. data/lib/datadog/appsec/contrib/faraday/integration.rb +4 -4
  52. data/lib/datadog/appsec/contrib/faraday/patcher.rb +4 -4
  53. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +22 -22
  54. data/lib/datadog/appsec/contrib/graphql/appsec_trace.rb +4 -4
  55. data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +2 -2
  56. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +7 -7
  57. data/lib/datadog/appsec/contrib/graphql/integration.rb +9 -9
  58. data/lib/datadog/appsec/contrib/graphql/patcher.rb +3 -3
  59. data/lib/datadog/appsec/contrib/rack/buffered_input.rb +1 -1
  60. data/lib/datadog/appsec/contrib/rack/ext.rb +29 -29
  61. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +18 -17
  62. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +1 -1
  63. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +24 -24
  64. data/lib/datadog/appsec/contrib/rack/input_peeker.rb +6 -6
  65. data/lib/datadog/appsec/contrib/rack/integration.rb +6 -6
  66. data/lib/datadog/appsec/contrib/rack/patcher.rb +2 -2
  67. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +5 -5
  68. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +26 -26
  69. data/lib/datadog/appsec/contrib/rack/response_body.rb +1 -1
  70. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +14 -9
  71. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +10 -10
  72. data/lib/datadog/appsec/contrib/rails/integration.rb +5 -5
  73. data/lib/datadog/appsec/contrib/rails/patcher.rb +17 -17
  74. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +2 -2
  75. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +3 -3
  76. data/lib/datadog/appsec/contrib/rails/request.rb +3 -3
  77. data/lib/datadog/appsec/contrib/rest_client/integration.rb +5 -5
  78. data/lib/datadog/appsec/contrib/rest_client/patcher.rb +1 -1
  79. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +23 -23
  80. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +1 -1
  81. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +1 -1
  82. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +15 -15
  83. data/lib/datadog/appsec/contrib/sinatra/integration.rb +5 -5
  84. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +11 -11
  85. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +3 -3
  86. data/lib/datadog/appsec/counter_sampler.rb +1 -1
  87. data/lib/datadog/appsec/event.rb +14 -14
  88. data/lib/datadog/appsec/ext.rb +11 -11
  89. data/lib/datadog/appsec/extensions.rb +2 -2
  90. data/lib/datadog/appsec/instrumentation/gateway.rb +1 -1
  91. data/lib/datadog/appsec/metrics/exporter.rb +8 -8
  92. data/lib/datadog/appsec/metrics/telemetry.rb +7 -7
  93. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +4 -4
  94. data/lib/datadog/appsec/metrics.rb +4 -4
  95. data/lib/datadog/appsec/monitor/gateway/watcher.rb +16 -12
  96. data/lib/datadog/appsec/monitor.rb +1 -1
  97. data/lib/datadog/appsec/processor/rule_loader.rb +26 -26
  98. data/lib/datadog/appsec/rate_limiter.rb +1 -1
  99. data/lib/datadog/appsec/remote.rb +6 -6
  100. data/lib/datadog/appsec/response.rb +21 -21
  101. data/lib/datadog/appsec/route_normalizer/rails_route_pattern.rb +11 -11
  102. data/lib/datadog/appsec/route_normalizer/route_pattern.rb +15 -15
  103. data/lib/datadog/appsec/route_normalizer/route_text.rb +3 -3
  104. data/lib/datadog/appsec/route_normalizer.rb +15 -15
  105. data/lib/datadog/appsec/security_engine/engine.rb +37 -37
  106. data/lib/datadog/appsec/security_engine/runner.rb +2 -2
  107. data/lib/datadog/appsec/security_event.rb +2 -2
  108. data/lib/datadog/appsec/utils/http/body.rb +11 -8
  109. data/lib/datadog/appsec/utils/http/body_reader.rb +1 -1
  110. data/lib/datadog/appsec/utils/http/media_range.rb +15 -15
  111. data/lib/datadog/appsec/utils/http/media_type.rb +4 -4
  112. data/lib/datadog/appsec/utils/http/url_encoded.rb +80 -25
  113. data/lib/datadog/appsec.rb +16 -16
  114. data/lib/datadog/auto_instrument.rb +2 -2
  115. data/lib/datadog/core/buffer/cruby.rb +1 -1
  116. data/lib/datadog/core/buffer/thread_safe.rb +1 -1
  117. data/lib/datadog/core/configuration/agent_settings.rb +1 -1
  118. data/lib/datadog/core/configuration/agent_settings_resolver.rb +15 -15
  119. data/lib/datadog/core/configuration/agentless_settings_resolver.rb +2 -2
  120. data/lib/datadog/core/configuration/base.rb +2 -2
  121. data/lib/datadog/core/configuration/components.rb +33 -29
  122. data/lib/datadog/core/configuration/config_helper.rb +3 -3
  123. data/lib/datadog/core/configuration/deprecations.rb +6 -6
  124. data/lib/datadog/core/configuration/ext.rb +11 -11
  125. data/lib/datadog/core/configuration/option.rb +16 -16
  126. data/lib/datadog/core/configuration/option_definition.rb +4 -4
  127. data/lib/datadog/core/configuration/options.rb +1 -1
  128. data/lib/datadog/core/configuration/settings.rb +62 -62
  129. data/lib/datadog/core/configuration/stable_config.rb +1 -1
  130. data/lib/datadog/core/configuration/supported_configurations.rb +3 -1
  131. data/lib/datadog/core/configuration.rb +8 -8
  132. data/lib/datadog/core/contrib/rails/railtie.rb +3 -3
  133. data/lib/datadog/core/crashtracking/component.rb +9 -9
  134. data/lib/datadog/core/crashtracking/tag_builder.rb +5 -5
  135. data/lib/datadog/core/deprecations.rb +1 -1
  136. data/lib/datadog/core/diagnostics/environment_logger.rb +6 -6
  137. data/lib/datadog/core/diagnostics/health.rb +2 -2
  138. data/lib/datadog/core/encoding.rb +4 -4
  139. data/lib/datadog/core/environment/agent_info.rb +2 -2
  140. data/lib/datadog/core/environment/cgroup.rb +4 -4
  141. data/lib/datadog/core/environment/container.rb +9 -9
  142. data/lib/datadog/core/environment/execution.rb +3 -3
  143. data/lib/datadog/core/environment/ext.rb +18 -18
  144. data/lib/datadog/core/environment/git.rb +2 -2
  145. data/lib/datadog/core/environment/identity.rb +10 -10
  146. data/lib/datadog/core/environment/platform.rb +8 -8
  147. data/lib/datadog/core/environment/process.rb +3 -3
  148. data/lib/datadog/core/environment/socket.rb +2 -2
  149. data/lib/datadog/core/environment/variable_helpers.rb +1 -1
  150. data/lib/datadog/core/error.rb +5 -5
  151. data/lib/datadog/core/evp.rb +2 -2
  152. data/lib/datadog/core/extensions.rb +1 -1
  153. data/lib/datadog/core/feature_flags.rb +2 -2
  154. data/lib/datadog/core/git/ext.rb +4 -4
  155. data/lib/datadog/core/knuth_sampler.rb +3 -1
  156. data/lib/datadog/core/logger.rb +3 -3
  157. data/lib/datadog/core/logging/ext.rb +1 -1
  158. data/lib/datadog/core/metrics/client.rb +21 -21
  159. data/lib/datadog/core/metrics/ext.rb +5 -5
  160. data/lib/datadog/core/metrics/logging.rb +2 -2
  161. data/lib/datadog/core/metrics/options.rb +3 -3
  162. data/lib/datadog/core/pin.rb +1 -1
  163. data/lib/datadog/core/process_discovery.rb +8 -8
  164. data/lib/datadog/core/rate_limiter.rb +1 -1
  165. data/lib/datadog/core/remote/client/capabilities.rb +36 -20
  166. data/lib/datadog/core/remote/client.rb +16 -16
  167. data/lib/datadog/core/remote/component.rb +20 -12
  168. data/lib/datadog/core/remote/configuration/content.rb +3 -3
  169. data/lib/datadog/core/remote/configuration/digest.rb +1 -1
  170. data/lib/datadog/core/remote/configuration/path.rb +9 -9
  171. data/lib/datadog/core/remote/configuration/repository.rb +2 -2
  172. data/lib/datadog/core/remote/configuration/target.rb +9 -9
  173. data/lib/datadog/core/remote/configuration.rb +4 -4
  174. data/lib/datadog/core/remote/ext.rb +3 -3
  175. data/lib/datadog/core/remote/negotiation.rb +1 -1
  176. data/lib/datadog/core/remote/tie/tracing.rb +7 -7
  177. data/lib/datadog/core/remote/transport/config.rb +4 -4
  178. data/lib/datadog/core/remote/transport/http/config.rb +7 -7
  179. data/lib/datadog/core/remote/transport/http/negotiation.rb +4 -4
  180. data/lib/datadog/core/remote/transport/http.rb +10 -10
  181. data/lib/datadog/core/remote/transport/negotiation.rb +3 -3
  182. data/lib/datadog/core/remote/worker.rb +5 -5
  183. data/lib/datadog/core/runtime/ext.rb +22 -22
  184. data/lib/datadog/core/runtime/metrics.rb +9 -9
  185. data/lib/datadog/core/tag_builder.rb +18 -18
  186. data/lib/datadog/core/tag_normalizer.rb +7 -7
  187. data/lib/datadog/core/telemetry/component.rb +13 -13
  188. data/lib/datadog/core/telemetry/emitter.rb +4 -4
  189. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +5 -5
  190. data/lib/datadog/core/telemetry/event/app_closing.rb +2 -2
  191. data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +2 -2
  192. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +2 -2
  193. data/lib/datadog/core/telemetry/event/app_extended_heartbeat.rb +2 -2
  194. data/lib/datadog/core/telemetry/event/app_heartbeat.rb +2 -2
  195. data/lib/datadog/core/telemetry/event/app_integrations_change.rb +2 -2
  196. data/lib/datadog/core/telemetry/event/app_started.rb +33 -33
  197. data/lib/datadog/core/telemetry/event/base.rb +1 -1
  198. data/lib/datadog/core/telemetry/event/distributions.rb +2 -2
  199. data/lib/datadog/core/telemetry/event/generate_metrics.rb +2 -2
  200. data/lib/datadog/core/telemetry/event/log.rb +4 -4
  201. data/lib/datadog/core/telemetry/event/message_batch.rb +1 -1
  202. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +2 -2
  203. data/lib/datadog/core/telemetry/event.rb +16 -16
  204. data/lib/datadog/core/telemetry/ext.rb +11 -11
  205. data/lib/datadog/core/telemetry/logger.rb +1 -1
  206. data/lib/datadog/core/telemetry/logging.rb +5 -5
  207. data/lib/datadog/core/telemetry/metric.rb +7 -7
  208. data/lib/datadog/core/telemetry/metrics_collection.rb +2 -2
  209. data/lib/datadog/core/telemetry/metrics_manager.rb +1 -1
  210. data/lib/datadog/core/telemetry/request.rb +4 -4
  211. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +14 -14
  212. data/lib/datadog/core/telemetry/transport/http.rb +7 -7
  213. data/lib/datadog/core/telemetry/transport/telemetry.rb +3 -3
  214. data/lib/datadog/core/telemetry/worker.rb +6 -6
  215. data/lib/datadog/core/transport/ext.rb +14 -14
  216. data/lib/datadog/core/transport/http/adapters/net.rb +4 -4
  217. data/lib/datadog/core/transport/http/adapters/test.rb +1 -1
  218. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +4 -4
  219. data/lib/datadog/core/transport/http/api/endpoint.rb +1 -1
  220. data/lib/datadog/core/transport/http/api/map.rb +1 -1
  221. data/lib/datadog/core/transport/http/builder.rb +6 -6
  222. data/lib/datadog/core/transport/http/client.rb +2 -2
  223. data/lib/datadog/core/transport/http/response.rb +1 -1
  224. data/lib/datadog/core/transport/http.rb +8 -8
  225. data/lib/datadog/core/transport/transport.rb +1 -1
  226. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +3 -3
  227. data/lib/datadog/core/utils/base64_codec.rb +3 -3
  228. data/lib/datadog/core/utils/duration.rb +1 -1
  229. data/lib/datadog/core/utils/forking.rb +2 -2
  230. data/lib/datadog/core/utils/lru_cache.rb +3 -3
  231. data/lib/datadog/core/utils/network.rb +11 -11
  232. data/lib/datadog/core/utils/only_once_successful.rb +1 -1
  233. data/lib/datadog/core/utils/safe_dup.rb +2 -1
  234. data/lib/datadog/core/utils/spawn_monkey_patch.rb +2 -2
  235. data/lib/datadog/core/utils/time.rb +5 -1
  236. data/lib/datadog/core/utils/url.rb +1 -1
  237. data/lib/datadog/core/utils.rb +4 -4
  238. data/lib/datadog/core/workers/async.rb +1 -1
  239. data/lib/datadog/core/workers/polling.rb +2 -2
  240. data/lib/datadog/core/workers/runtime_metrics.rb +4 -4
  241. data/lib/datadog/core.rb +4 -4
  242. data/lib/datadog/data_streams/configuration.rb +3 -3
  243. data/lib/datadog/data_streams/ext.rb +1 -1
  244. data/lib/datadog/data_streams/extensions.rb +2 -2
  245. data/lib/datadog/data_streams/pathway_context.rb +5 -5
  246. data/lib/datadog/data_streams/processor.rb +52 -52
  247. data/lib/datadog/data_streams/transport/http/stats.rb +5 -5
  248. data/lib/datadog/data_streams/transport/http.rb +5 -5
  249. data/lib/datadog/data_streams/transport/stats.rb +7 -7
  250. data/lib/datadog/data_streams.rb +5 -5
  251. data/lib/datadog/di/base.rb +4 -4
  252. data/lib/datadog/di/boot.rb +25 -22
  253. data/lib/datadog/di/capture_expression.rb +21 -0
  254. data/lib/datadog/di/capture_expression_evaluator.rb +71 -0
  255. data/lib/datadog/di/capture_limits.rb +41 -0
  256. data/lib/datadog/di/code_tracker.rb +6 -6
  257. data/lib/datadog/di/component.rb +13 -5
  258. data/lib/datadog/di/configuration.rb +7 -1
  259. data/lib/datadog/di/context.rb +9 -3
  260. data/lib/datadog/di/contrib/railtie.rb +1 -1
  261. data/lib/datadog/di/contrib.rb +5 -5
  262. data/lib/datadog/di/el/compiler.rb +26 -26
  263. data/lib/datadog/di/el.rb +3 -3
  264. data/lib/datadog/di/instrumenter.rb +52 -11
  265. data/lib/datadog/di/logger.rb +1 -1
  266. data/lib/datadog/di/preload.rb +1 -1
  267. data/lib/datadog/di/probe.rb +47 -2
  268. data/lib/datadog/di/probe_builder.rb +94 -12
  269. data/lib/datadog/di/probe_file_loader/railtie.rb +1 -1
  270. data/lib/datadog/di/probe_file_loader.rb +5 -5
  271. data/lib/datadog/di/probe_manager.rb +1 -1
  272. data/lib/datadog/di/probe_notification_builder.rb +63 -22
  273. data/lib/datadog/di/probe_notifier_worker.rb +6 -6
  274. data/lib/datadog/di/probe_repository.rb +1 -1
  275. data/lib/datadog/di/remote.rb +4 -4
  276. data/lib/datadog/di/serializer.rb +35 -23
  277. data/lib/datadog/di/transport/diagnostics.rb +5 -5
  278. data/lib/datadog/di/transport/http/diagnostics.rb +3 -3
  279. data/lib/datadog/di/transport/http/input.rb +2 -2
  280. data/lib/datadog/di/transport/http.rb +10 -10
  281. data/lib/datadog/di/transport/input.rb +9 -9
  282. data/lib/datadog/di/utils.rb +4 -4
  283. data/lib/datadog/di.rb +5 -5
  284. data/lib/datadog/error_tracking/collector.rb +2 -2
  285. data/lib/datadog/error_tracking/component.rb +12 -12
  286. data/lib/datadog/error_tracking/configuration.rb +2 -2
  287. data/lib/datadog/error_tracking/ext.rb +7 -7
  288. data/lib/datadog/error_tracking/extensions.rb +2 -2
  289. data/lib/datadog/error_tracking/filters.rb +4 -4
  290. data/lib/datadog/error_tracking.rb +6 -6
  291. data/lib/datadog/kit/appsec/events/v2.rb +39 -39
  292. data/lib/datadog/kit/appsec/events.rb +25 -25
  293. data/lib/datadog/kit/enable_core_dumps.rb +2 -2
  294. data/lib/datadog/kit/identity.rb +18 -18
  295. data/lib/datadog/kit/tracing/method_tracer.rb +7 -7
  296. data/lib/datadog/kit.rb +1 -1
  297. data/lib/datadog/open_feature/component.rb +31 -22
  298. data/lib/datadog/open_feature/configuration.rb +15 -2
  299. data/lib/datadog/open_feature/evaluation_engine.rb +7 -7
  300. data/lib/datadog/open_feature/exposures/buffer.rb +1 -1
  301. data/lib/datadog/open_feature/exposures/deduplicator.rb +1 -1
  302. data/lib/datadog/open_feature/exposures/event.rb +2 -2
  303. data/lib/datadog/open_feature/exposures/reporter.rb +3 -3
  304. data/lib/datadog/open_feature/exposures/worker.rb +6 -6
  305. data/lib/datadog/open_feature/ext.rb +13 -8
  306. data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +8 -8
  307. data/lib/datadog/open_feature/flag_evaluation/writer.rb +36 -36
  308. data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +5 -4
  309. data/lib/datadog/open_feature/hooks/flag_eval_metrics_hook.rb +3 -1
  310. data/lib/datadog/open_feature/hooks/span_enrichment_hook/codec.rb +58 -0
  311. data/lib/datadog/open_feature/hooks/span_enrichment_hook/span_enrichment_state.rb +96 -0
  312. data/lib/datadog/open_feature/hooks/span_enrichment_hook/span_enrichment_state_store.rb +49 -0
  313. data/lib/datadog/open_feature/hooks/span_enrichment_hook.rb +184 -0
  314. data/lib/datadog/open_feature/metrics/flag_eval_metrics.rb +24 -24
  315. data/lib/datadog/open_feature/native_evaluator.rb +4 -4
  316. data/lib/datadog/open_feature/noop_evaluator.rb +3 -3
  317. data/lib/datadog/open_feature/provider.rb +45 -10
  318. data/lib/datadog/open_feature/remote.rb +2 -2
  319. data/lib/datadog/open_feature/resolution_details.rb +4 -2
  320. data/lib/datadog/open_feature/transport.rb +14 -14
  321. data/lib/datadog/open_feature.rb +2 -2
  322. data/lib/datadog/opentelemetry/api/baggage.rb +3 -3
  323. data/lib/datadog/opentelemetry/api/context.rb +4 -4
  324. data/lib/datadog/opentelemetry/configuration/settings.rb +41 -41
  325. data/lib/datadog/opentelemetry/ext.rb +1 -1
  326. data/lib/datadog/opentelemetry/logs.rb +5 -5
  327. data/lib/datadog/opentelemetry/metrics.rb +7 -7
  328. data/lib/datadog/opentelemetry/sdk/configurator.rb +8 -8
  329. data/lib/datadog/opentelemetry/sdk/id_generator.rb +2 -2
  330. data/lib/datadog/opentelemetry/sdk/logs_exporter.rb +6 -6
  331. data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +5 -5
  332. data/lib/datadog/opentelemetry/sdk/propagator.rb +7 -7
  333. data/lib/datadog/opentelemetry/sdk/span_processor.rb +15 -15
  334. data/lib/datadog/opentelemetry/sdk/trace/span.rb +32 -32
  335. data/lib/datadog/opentelemetry/sdk.rb +2 -2
  336. data/lib/datadog/opentelemetry/signal_configuration.rb +11 -11
  337. data/lib/datadog/opentelemetry/trace.rb +1 -1
  338. data/lib/datadog/opentelemetry.rb +8 -8
  339. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +5 -0
  340. data/lib/datadog/profiling/collectors/thread_context.rb +9 -1
  341. data/lib/datadog/profiling/component.rb +17 -0
  342. data/lib/datadog/profiling/exporter.rb +1 -1
  343. data/lib/datadog/profiling/http_transport.rb +1 -1
  344. data/lib/datadog/profiling/sequence_tracker.rb +1 -1
  345. data/lib/datadog/profiling/tag_builder.rb +19 -19
  346. data/lib/datadog/profiling.rb +27 -27
  347. data/lib/datadog/single_step_instrument.rb +1 -1
  348. data/lib/datadog/symbol_database/component.rb +15 -15
  349. data/lib/datadog/symbol_database/configuration.rb +3 -3
  350. data/lib/datadog/symbol_database/extensions.rb +2 -2
  351. data/lib/datadog/symbol_database/extractor.rb +53 -53
  352. data/lib/datadog/symbol_database/file_hash.rb +3 -3
  353. data/lib/datadog/symbol_database/logger.rb +1 -1
  354. data/lib/datadog/symbol_database/remote.rb +21 -6
  355. data/lib/datadog/symbol_database/scope.rb +2 -2
  356. data/lib/datadog/symbol_database/scope_batcher.rb +2 -2
  357. data/lib/datadog/symbol_database/service_version.rb +4 -4
  358. data/lib/datadog/symbol_database/symbol.rb +1 -1
  359. data/lib/datadog/symbol_database/transport/http/endpoint.rb +1 -1
  360. data/lib/datadog/symbol_database/transport/http.rb +6 -6
  361. data/lib/datadog/symbol_database/transport.rb +4 -4
  362. data/lib/datadog/symbol_database/uploader.rb +22 -22
  363. data/lib/datadog/symbol_database.rb +2 -2
  364. data/lib/datadog/tracing/analytics.rb +1 -1
  365. data/lib/datadog/tracing/buffer.rb +5 -5
  366. data/lib/datadog/tracing/client_ip.rb +4 -4
  367. data/lib/datadog/tracing/component.rb +7 -7
  368. data/lib/datadog/tracing/configuration/dynamic.rb +8 -8
  369. data/lib/datadog/tracing/configuration/ext.rb +42 -42
  370. data/lib/datadog/tracing/configuration/http.rb +2 -2
  371. data/lib/datadog/tracing/configuration/settings.rb +16 -16
  372. data/lib/datadog/tracing/context.rb +1 -1
  373. data/lib/datadog/tracing/context_provider.rb +2 -2
  374. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +2 -2
  375. data/lib/datadog/tracing/contrib/action_cable/event.rb +4 -4
  376. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +5 -5
  377. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +4 -4
  378. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +5 -5
  379. data/lib/datadog/tracing/contrib/action_cable/events.rb +4 -4
  380. data/lib/datadog/tracing/contrib/action_cable/ext.rb +18 -18
  381. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +4 -4
  382. data/lib/datadog/tracing/contrib/action_cable/integration.rb +7 -7
  383. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +4 -4
  384. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +2 -2
  385. data/lib/datadog/tracing/contrib/action_mailer/event.rb +3 -3
  386. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +8 -8
  387. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +4 -4
  388. data/lib/datadog/tracing/contrib/action_mailer/events.rb +2 -2
  389. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +18 -18
  390. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +7 -7
  391. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +3 -3
  392. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +8 -8
  393. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +2 -2
  394. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +4 -4
  395. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb +4 -4
  396. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +3 -3
  397. data/lib/datadog/tracing/contrib/action_pack/ext.rb +10 -10
  398. data/lib/datadog/tracing/contrib/action_pack/integration.rb +7 -7
  399. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +3 -3
  400. data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -1
  401. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +3 -3
  402. data/lib/datadog/tracing/contrib/action_view/event.rb +1 -1
  403. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +6 -6
  404. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +6 -6
  405. data/lib/datadog/tracing/contrib/action_view/events.rb +2 -2
  406. data/lib/datadog/tracing/contrib/action_view/ext.rb +10 -10
  407. data/lib/datadog/tracing/contrib/action_view/integration.rb +11 -11
  408. data/lib/datadog/tracing/contrib/action_view/patcher.rb +5 -5
  409. data/lib/datadog/tracing/contrib/action_view/utils.rb +2 -2
  410. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +2 -2
  411. data/lib/datadog/tracing/contrib/active_job/data_streams.rb +62 -0
  412. data/lib/datadog/tracing/contrib/active_job/event.rb +3 -3
  413. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +5 -5
  414. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +5 -5
  415. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +5 -5
  416. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +5 -5
  417. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +5 -5
  418. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +5 -5
  419. data/lib/datadog/tracing/contrib/active_job/events.rb +6 -6
  420. data/lib/datadog/tracing/contrib/active_job/ext.rb +23 -23
  421. data/lib/datadog/tracing/contrib/active_job/integration.rb +7 -7
  422. data/lib/datadog/tracing/contrib/active_job/patcher.rb +17 -5
  423. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +2 -2
  424. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +4 -4
  425. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +6 -6
  426. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +7 -8
  427. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +2 -2
  428. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +10 -10
  429. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +5 -5
  430. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +3 -3
  431. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +1 -1
  432. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +6 -6
  433. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +4 -4
  434. data/lib/datadog/tracing/contrib/active_record/event.rb +1 -1
  435. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +8 -8
  436. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +9 -9
  437. data/lib/datadog/tracing/contrib/active_record/events.rb +2 -2
  438. data/lib/datadog/tracing/contrib/active_record/ext.rb +15 -15
  439. data/lib/datadog/tracing/contrib/active_record/integration.rb +11 -11
  440. data/lib/datadog/tracing/contrib/active_record/patcher.rb +2 -2
  441. data/lib/datadog/tracing/contrib/active_record/utils.rb +3 -3
  442. data/lib/datadog/tracing/contrib/active_support/cache/event.rb +1 -1
  443. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +11 -11
  444. data/lib/datadog/tracing/contrib/active_support/cache/events.rb +1 -1
  445. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +4 -4
  446. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +5 -5
  447. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +4 -4
  448. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +3 -3
  449. data/lib/datadog/tracing/contrib/active_support/ext.rb +16 -16
  450. data/lib/datadog/tracing/contrib/active_support/integration.rb +8 -8
  451. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -1
  452. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +2 -2
  453. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +1 -1
  454. data/lib/datadog/tracing/contrib/active_support/patcher.rb +2 -2
  455. data/lib/datadog/tracing/contrib/analytics.rb +1 -1
  456. data/lib/datadog/tracing/contrib/auto_instrument.rb +4 -4
  457. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +3 -3
  458. data/lib/datadog/tracing/contrib/aws/ext.rb +25 -25
  459. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +5 -5
  460. data/lib/datadog/tracing/contrib/aws/integration.rb +9 -9
  461. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +1 -1
  462. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -5
  463. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +2 -2
  464. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +2 -2
  465. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +4 -4
  466. data/lib/datadog/tracing/contrib/aws/service/s3.rb +2 -2
  467. data/lib/datadog/tracing/contrib/aws/service/sns.rb +3 -3
  468. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +3 -3
  469. data/lib/datadog/tracing/contrib/aws/service/states.rb +5 -5
  470. data/lib/datadog/tracing/contrib/aws/services.rb +14 -14
  471. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  472. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +2 -2
  473. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  474. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +2 -2
  475. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  476. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +6 -6
  477. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +4 -4
  478. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  479. data/lib/datadog/tracing/contrib/configurable.rb +2 -2
  480. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -1
  481. data/lib/datadog/tracing/contrib/configuration/settings.rb +2 -2
  482. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +2 -2
  483. data/lib/datadog/tracing/contrib/dalli/ext.rb +13 -13
  484. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +5 -5
  485. data/lib/datadog/tracing/contrib/dalli/integration.rb +7 -7
  486. data/lib/datadog/tracing/contrib/dalli/patcher.rb +3 -3
  487. data/lib/datadog/tracing/contrib/dalli/quantize.rb +2 -2
  488. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +2 -2
  489. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +14 -14
  490. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +5 -5
  491. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +3 -3
  492. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +5 -5
  493. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +2 -2
  494. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +15 -15
  495. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +6 -6
  496. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +10 -10
  497. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +2 -2
  498. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +2 -2
  499. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +8 -8
  500. data/lib/datadog/tracing/contrib/ethon/ext.rb +13 -13
  501. data/lib/datadog/tracing/contrib/ethon/integration.rb +6 -6
  502. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +3 -3
  503. data/lib/datadog/tracing/contrib/ethon/patcher.rb +3 -3
  504. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +5 -5
  505. data/lib/datadog/tracing/contrib/excon/ext.rb +11 -11
  506. data/lib/datadog/tracing/contrib/excon/integration.rb +6 -6
  507. data/lib/datadog/tracing/contrib/excon/middleware.rb +8 -8
  508. data/lib/datadog/tracing/contrib/excon/patcher.rb +2 -2
  509. data/lib/datadog/tracing/contrib/ext.rb +15 -15
  510. data/lib/datadog/tracing/contrib/extensions.rb +2 -2
  511. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +4 -4
  512. data/lib/datadog/tracing/contrib/faraday/ext.rb +11 -11
  513. data/lib/datadog/tracing/contrib/faraday/integration.rb +6 -6
  514. data/lib/datadog/tracing/contrib/faraday/middleware.rb +8 -8
  515. data/lib/datadog/tracing/contrib/faraday/patcher.rb +6 -6
  516. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +4 -4
  517. data/lib/datadog/tracing/contrib/grape/endpoint.rb +20 -20
  518. data/lib/datadog/tracing/contrib/grape/ext.rb +15 -15
  519. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +3 -3
  520. data/lib/datadog/tracing/contrib/grape/integration.rb +5 -5
  521. data/lib/datadog/tracing/contrib/grape/patcher.rb +5 -5
  522. data/lib/datadog/tracing/contrib/graphql/configuration/error_extension_env_parser.rb +1 -1
  523. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +3 -3
  524. data/lib/datadog/tracing/contrib/graphql/ext.rb +9 -9
  525. data/lib/datadog/tracing/contrib/graphql/integration.rb +9 -9
  526. data/lib/datadog/tracing/contrib/graphql/patcher.rb +7 -7
  527. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +37 -37
  528. data/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb +2 -2
  529. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +2 -2
  530. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +7 -7
  531. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +7 -7
  532. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +6 -6
  533. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  534. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +8 -8
  535. data/lib/datadog/tracing/contrib/grpc/ext.rb +14 -14
  536. data/lib/datadog/tracing/contrib/grpc/formatting.rb +7 -7
  537. data/lib/datadog/tracing/contrib/grpc/integration.rb +5 -5
  538. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +1 -1
  539. data/lib/datadog/tracing/contrib/grpc/patcher.rb +3 -3
  540. data/lib/datadog/tracing/contrib/grpc.rb +6 -6
  541. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +3 -3
  542. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +2 -2
  543. data/lib/datadog/tracing/contrib/hanami/ext.rb +8 -8
  544. data/lib/datadog/tracing/contrib/hanami/integration.rb +6 -6
  545. data/lib/datadog/tracing/contrib/hanami/patcher.rb +5 -5
  546. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +3 -3
  547. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +3 -3
  548. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +1 -1
  549. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +4 -4
  550. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +3 -3
  551. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +8 -8
  552. data/lib/datadog/tracing/contrib/http/ext.rb +11 -11
  553. data/lib/datadog/tracing/contrib/http/instrumentation.rb +6 -6
  554. data/lib/datadog/tracing/contrib/http/integration.rb +7 -7
  555. data/lib/datadog/tracing/contrib/http/patcher.rb +3 -3
  556. data/lib/datadog/tracing/contrib/http.rb +6 -6
  557. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +4 -4
  558. data/lib/datadog/tracing/contrib/httpclient/ext.rb +11 -11
  559. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +5 -5
  560. data/lib/datadog/tracing/contrib/httpclient/integration.rb +6 -6
  561. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +3 -3
  562. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +4 -4
  563. data/lib/datadog/tracing/contrib/httprb/ext.rb +11 -11
  564. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +6 -6
  565. data/lib/datadog/tracing/contrib/httprb/integration.rb +7 -7
  566. data/lib/datadog/tracing/contrib/httprb/patcher.rb +3 -3
  567. data/lib/datadog/tracing/contrib/integration.rb +3 -3
  568. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +2 -2
  569. data/lib/datadog/tracing/contrib/kafka/event.rb +3 -3
  570. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +3 -3
  571. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +4 -4
  572. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +4 -4
  573. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +5 -5
  574. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +5 -5
  575. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +5 -5
  576. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +5 -5
  577. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +3 -3
  578. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +3 -3
  579. data/lib/datadog/tracing/contrib/kafka/events.rb +9 -9
  580. data/lib/datadog/tracing/contrib/kafka/ext.rb +40 -40
  581. data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +2 -2
  582. data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +4 -4
  583. data/lib/datadog/tracing/contrib/kafka/integration.rb +6 -6
  584. data/lib/datadog/tracing/contrib/kafka/patcher.rb +5 -5
  585. data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +2 -2
  586. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +8 -8
  587. data/lib/datadog/tracing/contrib/karafka/ext.rb +13 -13
  588. data/lib/datadog/tracing/contrib/karafka/integration.rb +5 -5
  589. data/lib/datadog/tracing/contrib/karafka/monitor.rb +14 -14
  590. data/lib/datadog/tracing/contrib/karafka/patcher.rb +8 -8
  591. data/lib/datadog/tracing/contrib/karafka.rb +6 -6
  592. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +2 -2
  593. data/lib/datadog/tracing/contrib/lograge/ext.rb +1 -1
  594. data/lib/datadog/tracing/contrib/lograge/integration.rb +5 -5
  595. data/lib/datadog/tracing/contrib/lograge/patcher.rb +9 -9
  596. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +2 -2
  597. data/lib/datadog/tracing/contrib/mongodb/ext.rb +18 -18
  598. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +3 -3
  599. data/lib/datadog/tracing/contrib/mongodb/integration.rb +7 -7
  600. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +5 -5
  601. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +3 -3
  602. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +13 -13
  603. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +3 -3
  604. data/lib/datadog/tracing/contrib/mysql2/ext.rb +11 -11
  605. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +6 -6
  606. data/lib/datadog/tracing/contrib/mysql2/integration.rb +5 -5
  607. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +2 -2
  608. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +2 -2
  609. data/lib/datadog/tracing/contrib/opensearch/ext.rb +22 -22
  610. data/lib/datadog/tracing/contrib/opensearch/integration.rb +6 -6
  611. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +13 -13
  612. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +3 -3
  613. data/lib/datadog/tracing/contrib/patcher.rb +2 -2
  614. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +3 -3
  615. data/lib/datadog/tracing/contrib/pg/ext.rb +19 -19
  616. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +18 -18
  617. data/lib/datadog/tracing/contrib/pg/integration.rb +5 -5
  618. data/lib/datadog/tracing/contrib/pg/patcher.rb +2 -2
  619. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +2 -2
  620. data/lib/datadog/tracing/contrib/presto/ext.rb +21 -21
  621. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +2 -2
  622. data/lib/datadog/tracing/contrib/presto/integration.rb +6 -6
  623. data/lib/datadog/tracing/contrib/presto/patcher.rb +4 -4
  624. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +2 -2
  625. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +17 -17
  626. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +1 -1
  627. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +5 -5
  628. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +2 -2
  629. data/lib/datadog/tracing/contrib/que/ext.rb +19 -19
  630. data/lib/datadog/tracing/contrib/que/integration.rb +6 -6
  631. data/lib/datadog/tracing/contrib/que/patcher.rb +1 -1
  632. data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
  633. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +3 -3
  634. data/lib/datadog/tracing/contrib/racecar/event.rb +4 -4
  635. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +3 -3
  636. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +3 -3
  637. data/lib/datadog/tracing/contrib/racecar/events/message.rb +3 -3
  638. data/lib/datadog/tracing/contrib/racecar/events.rb +3 -3
  639. data/lib/datadog/tracing/contrib/racecar/ext.rb +18 -18
  640. data/lib/datadog/tracing/contrib/racecar/integration.rb +5 -5
  641. data/lib/datadog/tracing/contrib/racecar/patcher.rb +3 -3
  642. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +2 -2
  643. data/lib/datadog/tracing/contrib/rack/ext.rb +33 -33
  644. data/lib/datadog/tracing/contrib/rack/header_collection.rb +3 -3
  645. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +4 -4
  646. data/lib/datadog/tracing/contrib/rack/integration.rb +6 -6
  647. data/lib/datadog/tracing/contrib/rack/middlewares.rb +24 -24
  648. data/lib/datadog/tracing/contrib/rack/patcher.rb +3 -3
  649. data/lib/datadog/tracing/contrib/rack/request_queue.rb +3 -3
  650. data/lib/datadog/tracing/contrib/rack/route_inference.rb +11 -11
  651. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +15 -15
  652. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +1 -1
  653. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +3 -3
  654. data/lib/datadog/tracing/contrib/rails/ext.rb +15 -15
  655. data/lib/datadog/tracing/contrib/rails/framework.rb +11 -11
  656. data/lib/datadog/tracing/contrib/rails/integration.rb +5 -5
  657. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  658. data/lib/datadog/tracing/contrib/rails/patcher.rb +8 -8
  659. data/lib/datadog/tracing/contrib/rails/railtie.rb +4 -4
  660. data/lib/datadog/tracing/contrib/rails/runner.rb +1 -1
  661. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +3 -3
  662. data/lib/datadog/tracing/contrib/rake/ext.rb +12 -12
  663. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
  664. data/lib/datadog/tracing/contrib/rake/integration.rb +5 -5
  665. data/lib/datadog/tracing/contrib/rake/patcher.rb +3 -3
  666. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
  667. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +2 -2
  668. data/lib/datadog/tracing/contrib/redis/ext.rb +16 -16
  669. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +6 -6
  670. data/lib/datadog/tracing/contrib/redis/integration.rb +7 -7
  671. data/lib/datadog/tracing/contrib/redis/patcher.rb +10 -10
  672. data/lib/datadog/tracing/contrib/redis/quantize.rb +4 -4
  673. data/lib/datadog/tracing/contrib/redis/tags.rb +5 -5
  674. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +5 -5
  675. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +2 -2
  676. data/lib/datadog/tracing/contrib/resque/ext.rb +7 -7
  677. data/lib/datadog/tracing/contrib/resque/integration.rb +5 -5
  678. data/lib/datadog/tracing/contrib/resque/patcher.rb +3 -3
  679. data/lib/datadog/tracing/contrib/resque/resque_job.rb +5 -5
  680. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +2 -2
  681. data/lib/datadog/tracing/contrib/rest_client/ext.rb +10 -10
  682. data/lib/datadog/tracing/contrib/rest_client/integration.rb +6 -6
  683. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +2 -2
  684. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -5
  685. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +2 -2
  686. data/lib/datadog/tracing/contrib/roda/ext.rb +6 -6
  687. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +4 -4
  688. data/lib/datadog/tracing/contrib/roda/integration.rb +6 -6
  689. data/lib/datadog/tracing/contrib/roda/patcher.rb +3 -3
  690. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +2 -2
  691. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +1 -1
  692. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +5 -5
  693. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +2 -2
  694. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +2 -2
  695. data/lib/datadog/tracing/contrib/sequel/database.rb +6 -6
  696. data/lib/datadog/tracing/contrib/sequel/dataset.rb +5 -5
  697. data/lib/datadog/tracing/contrib/sequel/ext.rb +12 -8
  698. data/lib/datadog/tracing/contrib/sequel/integration.rb +5 -5
  699. data/lib/datadog/tracing/contrib/sequel/patcher.rb +3 -3
  700. data/lib/datadog/tracing/contrib/sequel/utils.rb +115 -10
  701. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +2 -2
  702. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +12 -12
  703. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +6 -6
  704. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -1
  705. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +2 -2
  706. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +8 -8
  707. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +2 -2
  708. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +9 -9
  709. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +30 -30
  710. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +7 -7
  711. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +8 -8
  712. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +14 -14
  713. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +9 -9
  714. data/lib/datadog/tracing/contrib/sidekiq.rb +6 -6
  715. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +2 -2
  716. data/lib/datadog/tracing/contrib/sinatra/env.rb +6 -6
  717. data/lib/datadog/tracing/contrib/sinatra/ext.rb +17 -17
  718. data/lib/datadog/tracing/contrib/sinatra/framework.rb +2 -2
  719. data/lib/datadog/tracing/contrib/sinatra/integration.rb +5 -5
  720. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +5 -5
  721. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +10 -10
  722. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +8 -8
  723. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +1 -1
  724. data/lib/datadog/tracing/contrib/sneakers/ext.rb +12 -12
  725. data/lib/datadog/tracing/contrib/sneakers/integration.rb +7 -7
  726. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -2
  727. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +3 -3
  728. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +2 -2
  729. data/lib/datadog/tracing/contrib/status_range_env_parser.rb +2 -2
  730. data/lib/datadog/tracing/contrib/status_range_matcher.rb +1 -1
  731. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +2 -2
  732. data/lib/datadog/tracing/contrib/stripe/ext.rb +12 -12
  733. data/lib/datadog/tracing/contrib/stripe/integration.rb +5 -5
  734. data/lib/datadog/tracing/contrib/stripe/patcher.rb +2 -2
  735. data/lib/datadog/tracing/contrib/stripe/request.rb +3 -3
  736. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +2 -2
  737. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +1 -1
  738. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +13 -13
  739. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +4 -4
  740. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +5 -5
  741. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +4 -4
  742. data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +3 -3
  743. data/lib/datadog/tracing/contrib/trilogy/ext.rb +11 -11
  744. data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +6 -6
  745. data/lib/datadog/tracing/contrib/trilogy/integration.rb +5 -5
  746. data/lib/datadog/tracing/contrib/trilogy/patcher.rb +2 -2
  747. data/lib/datadog/tracing/contrib/utils/database.rb +5 -5
  748. data/lib/datadog/tracing/contrib/utils/quantization/hash_formatter.rb +1 -1
  749. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +10 -10
  750. data/lib/datadog/tracing/contrib/waterdrop/configuration/settings.rb +2 -2
  751. data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +8 -8
  752. data/lib/datadog/tracing/contrib/waterdrop/ext.rb +4 -4
  753. data/lib/datadog/tracing/contrib/waterdrop/integration.rb +5 -5
  754. data/lib/datadog/tracing/contrib/waterdrop/middleware.rb +2 -2
  755. data/lib/datadog/tracing/contrib/waterdrop/patcher.rb +7 -7
  756. data/lib/datadog/tracing/contrib/waterdrop/producer.rb +3 -3
  757. data/lib/datadog/tracing/contrib/waterdrop.rb +6 -6
  758. data/lib/datadog/tracing/contrib.rb +54 -54
  759. data/lib/datadog/tracing/correlation.rb +10 -10
  760. data/lib/datadog/tracing/diagnostics/environment_logger.rb +9 -9
  761. data/lib/datadog/tracing/diagnostics/ext.rb +19 -19
  762. data/lib/datadog/tracing/diagnostics/health.rb +1 -1
  763. data/lib/datadog/tracing/distributed/b3_multi.rb +8 -8
  764. data/lib/datadog/tracing/distributed/b3_single.rb +4 -4
  765. data/lib/datadog/tracing/distributed/baggage.rb +27 -27
  766. data/lib/datadog/tracing/distributed/datadog.rb +21 -21
  767. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +3 -3
  768. data/lib/datadog/tracing/distributed/fetcher.rb +1 -1
  769. data/lib/datadog/tracing/distributed/helpers.rb +3 -3
  770. data/lib/datadog/tracing/distributed/propagation.rb +12 -12
  771. data/lib/datadog/tracing/distributed/trace_context.rb +33 -33
  772. data/lib/datadog/tracing/event.rb +1 -1
  773. data/lib/datadog/tracing/ext.rb +1 -1
  774. data/lib/datadog/tracing/metadata/analytics.rb +2 -2
  775. data/lib/datadog/tracing/metadata/errors.rb +4 -4
  776. data/lib/datadog/tracing/metadata/ext.rb +69 -69
  777. data/lib/datadog/tracing/metadata/metastruct.rb +1 -1
  778. data/lib/datadog/tracing/metadata/metastruct_tagging.rb +1 -1
  779. data/lib/datadog/tracing/metadata/tagging.rb +2 -2
  780. data/lib/datadog/tracing/metadata.rb +4 -4
  781. data/lib/datadog/tracing/pipeline/span_filter.rb +2 -2
  782. data/lib/datadog/tracing/pipeline.rb +2 -2
  783. data/lib/datadog/tracing/remote.rb +23 -16
  784. data/lib/datadog/tracing/sampling/all_sampler.rb +1 -1
  785. data/lib/datadog/tracing/sampling/ext.rb +8 -8
  786. data/lib/datadog/tracing/sampling/matcher.rb +4 -4
  787. data/lib/datadog/tracing/sampling/priority_sampler.rb +4 -4
  788. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +3 -3
  789. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +2 -2
  790. data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -2
  791. data/lib/datadog/tracing/sampling/rule.rb +4 -4
  792. data/lib/datadog/tracing/sampling/rule_sampler.rb +12 -12
  793. data/lib/datadog/tracing/sampling/sampler.rb +2 -2
  794. data/lib/datadog/tracing/sampling/span/ext.rb +3 -3
  795. data/lib/datadog/tracing/sampling/span/matcher.rb +2 -2
  796. data/lib/datadog/tracing/sampling/span/rule.rb +1 -1
  797. data/lib/datadog/tracing/sampling/span/rule_parser.rb +8 -8
  798. data/lib/datadog/tracing/span.rb +8 -8
  799. data/lib/datadog/tracing/span_event.rb +5 -5
  800. data/lib/datadog/tracing/span_operation.rb +21 -21
  801. data/lib/datadog/tracing/sync_writer.rb +4 -4
  802. data/lib/datadog/tracing/trace_operation.rb +11 -11
  803. data/lib/datadog/tracing/trace_segment.rb +10 -10
  804. data/lib/datadog/tracing/tracer.rb +15 -15
  805. data/lib/datadog/tracing/transport/http/client.rb +4 -4
  806. data/lib/datadog/tracing/transport/http/statistics.rb +2 -2
  807. data/lib/datadog/tracing/transport/http/traces.rb +8 -8
  808. data/lib/datadog/tracing/transport/http.rb +10 -10
  809. data/lib/datadog/tracing/transport/io/client.rb +2 -2
  810. data/lib/datadog/tracing/transport/io/response.rb +1 -1
  811. data/lib/datadog/tracing/transport/io/traces.rb +4 -4
  812. data/lib/datadog/tracing/transport/io.rb +3 -3
  813. data/lib/datadog/tracing/transport/serializable_trace.rb +19 -19
  814. data/lib/datadog/tracing/transport/statistics.rb +2 -2
  815. data/lib/datadog/tracing/transport/trace_formatter.rb +9 -9
  816. data/lib/datadog/tracing/transport/traces.rb +8 -8
  817. data/lib/datadog/tracing/utils.rb +2 -2
  818. data/lib/datadog/tracing/workers.rb +2 -2
  819. data/lib/datadog/tracing/writer.rb +5 -5
  820. data/lib/datadog/tracing.rb +3 -3
  821. data/lib/datadog/version.rb +4 -4
  822. data/lib/datadog.rb +13 -13
  823. metadata +13 -5
@@ -1,36 +1,36 @@
1
1
  # rubocop:disable Style/StderrPuts
2
2
  # rubocop:disable Style/GlobalVars
3
3
 
4
- require 'rubygems'
5
- require_relative '../libdatadog_extconf_helpers'
4
+ require "rubygems"
5
+ require_relative "../libdatadog_extconf_helpers"
6
6
 
7
7
  def skip_building_extension!(reason)
8
8
  $stderr.puts(
9
9
  "WARN: Skipping build of libdatadog_api (#{reason}). Some functionality will not be available."
10
10
  )
11
11
 
12
- fail_install_if_missing_extension = ENV['DD_FAIL_INSTALL_IF_MISSING_EXTENSION'].to_s.strip.downcase == 'true'
12
+ fail_install_if_missing_extension = ENV["DD_FAIL_INSTALL_IF_MISSING_EXTENSION"].to_s.strip.downcase == "true"
13
13
 
14
14
  if fail_install_if_missing_extension
15
- require 'mkmf'
15
+ require "mkmf"
16
16
  Logging.message("[datadog] Failure cause: #{reason}")
17
17
  else
18
- File.write('Makefile', 'all install clean: # dummy makefile that does nothing')
18
+ File.write("Makefile", "all install clean: # dummy makefile that does nothing")
19
19
  end
20
20
 
21
21
  exit
22
22
  end
23
23
 
24
- if ENV['DD_NO_EXTENSION'].to_s.strip.downcase == 'true'
25
- skip_building_extension!('the `DD_NO_EXTENSION` environment variable is/was set to `true` during installation')
24
+ if ENV["DD_NO_EXTENSION"].to_s.strip.downcase == "true"
25
+ skip_building_extension!("the `DD_NO_EXTENSION` environment variable is/was set to `true` during installation")
26
26
  end
27
- skip_building_extension!('current Ruby VM is not supported') if RUBY_ENGINE != 'ruby'
28
- skip_building_extension!('Microsoft Windows is not supported') if Gem.win_platform?
27
+ skip_building_extension!("current Ruby VM is not supported") if RUBY_ENGINE != "ruby"
28
+ skip_building_extension!("Microsoft Windows is not supported") if Gem.win_platform?
29
29
 
30
30
  libdatadog_issue = Datadog::LibdatadogExtconfHelpers.load_libdatadog_or_get_issue
31
31
  skip_building_extension!("issue setting up `libdatadog` gem: #{libdatadog_issue}") if libdatadog_issue
32
32
 
33
- require 'mkmf'
33
+ require "mkmf"
34
34
  Datadog::LibdatadogExtconfHelpers.dump_mkmf_log_on_failure!
35
35
 
36
36
  # We must *never* `append_cflags "-Wall"` or `append_cflags "-Wextra"`, because those add the flag at the end,
@@ -39,30 +39,30 @@ Datadog::LibdatadogExtconfHelpers.dump_mkmf_log_on_failure!
39
39
 
40
40
  # Because we can't control what compiler versions our customers use, shipping with -Werror by default is a no-go.
41
41
  # But we can enable it in CI, so that we quickly spot any new warnings that just got introduced.
42
- append_cflags '-Werror' if ENV['DATADOG_GEM_CI'] == 'true'
42
+ append_cflags "-Werror" if ENV["DATADOG_GEM_CI"] == "true"
43
43
 
44
44
  # TEMPORARY STOPGAP: libdatadog v36's vendored `common.h` ships duplicate typedefs
45
45
  # (a header-dedup regression), which `-Werror` turns into fatal
46
46
  # `-Wtypedef-redefinition` errors under C11/gnu11. Keep it a warning until a fixed
47
47
  # header lands upstream in libdatadog/libdatadog-rb. Remove this once that ships.
48
- append_cflags '-Wno-error=typedef-redefinition' if ENV['DATADOG_GEM_CI'] == 'true'
48
+ append_cflags "-Wno-error=typedef-redefinition" if ENV["DATADOG_GEM_CI"] == "true"
49
49
 
50
50
  # Older gcc releases may not default to C99 and we need to ask for this. This is also used:
51
51
  # * by upstream Ruby -- search for gnu99 in the codebase
52
52
  # * by msgpack, another datadog gem dependency
53
53
  # (https://github.com/msgpack/msgpack-ruby/blob/18ce08f6d612fe973843c366ac9a0b74c4e50599/ext/msgpack/extconf.rb#L8)
54
54
  # @ivoanjo: We could probably start using C11/gnu11 for non macOS-too but it's somewhat hard to validate so I chickened out for now
55
- append_cflags RUBY_PLATFORM.include?('darwin') ? '-std=gnu11' : '-std=gnu99'
55
+ append_cflags RUBY_PLATFORM.include?("darwin") ? "-std=gnu11" : "-std=gnu99"
56
56
 
57
57
  # Allow defining variables at any point in a function
58
- append_cflags '-Wno-declaration-after-statement'
58
+ append_cflags "-Wno-declaration-after-statement"
59
59
 
60
60
  # If we forget to include a Ruby header, the function call may still appear to work, but then
61
61
  # cause a segfault later. Let's ensure that never happens.
62
- append_cflags '-Werror-implicit-function-declaration'
62
+ append_cflags "-Werror-implicit-function-declaration"
63
63
 
64
64
  # Warn on unused parameters to functions. Use `DDTRACE_UNUSED` to mark things as known-to-not-be-used.
65
- append_cflags '-Wunused-parameter'
65
+ append_cflags "-Wunused-parameter"
66
66
 
67
67
  # The native extension is not intended to expose any symbols/functions for other native libraries to use;
68
68
  # the sole exception being `Init_libdatadog_api` which needs to be visible for Ruby to call it when
@@ -70,22 +70,22 @@ append_cflags '-Wunused-parameter'
70
70
  #
71
71
  # By setting this compiler flag, we tell it to assume that everything is private unless explicitly stated.
72
72
  # For more details see https://gcc.gnu.org/wiki/Visibility
73
- append_cflags '-fvisibility=hidden'
73
+ append_cflags "-fvisibility=hidden"
74
74
 
75
75
  # Avoid legacy C definitions
76
- append_cflags '-Wold-style-definition'
76
+ append_cflags "-Wold-style-definition"
77
77
 
78
- if ENV['DDTRACE_DEBUG'] == 'true'
79
- $defs << '-DDD_DEBUG'
80
- CONFIG['optflags'] = '-O0'
81
- CONFIG['debugflags'] = '-ggdb3'
78
+ if ENV["DDTRACE_DEBUG"] == "true"
79
+ $defs << "-DDD_DEBUG"
80
+ CONFIG["optflags"] = "-O0"
81
+ CONFIG["debugflags"] = "-ggdb3"
82
82
  end
83
83
 
84
84
  # If we got here, libdatadog is available and loaded
85
85
  $stderr.puts("Using libdatadog #{Libdatadog::VERSION} from #{Libdatadog.pkgconfig_folder}")
86
86
 
87
87
  unless Datadog::LibdatadogExtconfHelpers.configure_libdatadog(extconf_folder: __dir__)
88
- skip_building_extension!('there was a problem in setting up the `libdatadog` dependency')
88
+ skip_building_extension!("there was a problem in setting up the `libdatadog` dependency")
89
89
  end
90
90
 
91
91
  Datadog::LibdatadogExtconfHelpers.add_libdatadog_version_define
@@ -96,7 +96,7 @@ Datadog::LibdatadogExtconfHelpers.add_libdatadog_version_define
96
96
  # When requiring, we need to use the exact same string, including the version and the platform.
97
97
  EXTENSION_NAME = "libdatadog_api.#{RUBY_VERSION[/\d+.\d+/]}_#{RUBY_PLATFORM}".freeze
98
98
 
99
- have_func('rb_iseq_type')
99
+ have_func("rb_iseq_type")
100
100
 
101
101
  create_makefile(EXTENSION_NAME)
102
102
 
@@ -21,6 +21,7 @@ static VALUE resolution_details_get_raw_value(VALUE self);
21
21
  static VALUE resolution_details_get_flag_type(VALUE self);
22
22
  static VALUE resolution_details_get_variant(VALUE self);
23
23
  static VALUE resolution_details_get_allocation_key(VALUE self);
24
+ static VALUE resolution_details_get_serial_id(VALUE self);
24
25
  static VALUE resolution_details_get_reason(VALUE self);
25
26
  static VALUE resolution_details_get_error_code(VALUE self);
26
27
  static VALUE resolution_details_get_error_message(VALUE self);
@@ -101,6 +102,7 @@ void feature_flags_init(VALUE core_module) {
101
102
  rb_define_method(resolution_details_class, "flag_type", resolution_details_get_flag_type, 0);
102
103
  rb_define_method(resolution_details_class, "variant", resolution_details_get_variant, 0);
103
104
  rb_define_method(resolution_details_class, "allocation_key", resolution_details_get_allocation_key, 0);
105
+ rb_define_method(resolution_details_class, "serial_id", resolution_details_get_serial_id, 0);
104
106
  rb_define_method(resolution_details_class, "reason", resolution_details_get_reason, 0);
105
107
  rb_define_method(resolution_details_class, "error_code", resolution_details_get_error_code, 0);
106
108
  rb_define_method(resolution_details_class, "error_message", resolution_details_get_error_message, 0);
@@ -421,6 +423,30 @@ static VALUE resolution_details_get_allocation_key(VALUE self) {
421
423
  return str_from_borrow(allocation_key);
422
424
  }
423
425
 
426
+ /*
427
+ * call-seq:
428
+ * resolution_details.serial_id() -> Integer or nil
429
+ *
430
+ * Get the split serial id assigned for this evaluation.
431
+ *
432
+ * libdatadog returns an optional 32-bit integer (`ddog_Option_I32`, a tagged
433
+ * union). When the assignment carries a serial id the tag is
434
+ * DDOG_OPTION_I32_SOME_I32 and the value is in the `.some` field; otherwise the
435
+ * tag is DDOG_OPTION_I32_NONE_I32 and we return nil. This is consumed by the
436
+ * APM span-enrichment hook as `__dd_split_serial_id`.
437
+ *
438
+ * @return [Integer, nil] The split serial id or nil when absent
439
+ */
440
+ static VALUE resolution_details_get_serial_id(VALUE self) {
441
+ ddog_ffe_Handle_ResolutionDetails resolution_details =
442
+ (ddog_ffe_Handle_ResolutionDetails)rb_check_typeddata(self, &resolution_details_typed_data);
443
+ struct ddog_Option_I32 serial_id = ddog_ffe_assignment_get_serial_id(resolution_details);
444
+ if (serial_id.tag == DDOG_OPTION_I32_SOME_I32) {
445
+ return INT2NUM(serial_id.some);
446
+ }
447
+ return Qnil;
448
+ }
449
+
424
450
  /*
425
451
  * call-seq:
426
452
  * resolution_details.reason() -> String
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rubygems'
4
- require 'pathname'
3
+ require "rubygems"
4
+ require "pathname"
5
5
 
6
6
  module Datadog
7
7
  # Contains a bunch of shared helpers that get used during building of extensions that link to libdatadog
@@ -10,7 +10,7 @@ module Datadog
10
10
  module LibdatadogExtconfHelpers
11
11
  # Used to make sure the correct gem version gets loaded, as extconf.rb does not get run with "bundle exec" and thus
12
12
  # may see multiple libdatadog versions. See https://github.com/DataDog/dd-trace-rb/pull/2531 for the horror story.
13
- LIBDATADOG_VERSION = '~> 36.0.0.1.0'
13
+ LIBDATADOG_VERSION = "~> 36.0.0.1.0"
14
14
 
15
15
  # Used as an workaround for a limitation with how dynamic linking works in environments where the datadog gem and
16
16
  # libdatadog are moved after the extension gets compiled.
@@ -151,8 +151,8 @@ module Datadog
151
151
  # rubocop:enable Style/GlobalVars
152
152
 
153
153
  def self.try_loading_libdatadog
154
- gem 'libdatadog', LIBDATADOG_VERSION
155
- require 'libdatadog'
154
+ gem "libdatadog", LIBDATADOG_VERSION
155
+ require "libdatadog"
156
156
  nil
157
157
  rescue Exception => e # rubocop:disable Lint/RescueException
158
158
  if block_given?
@@ -175,7 +175,7 @@ module Datadog
175
175
  # prints the failure.
176
176
  def self.dump_mkmf_log_on_failure!
177
177
  # Doesn't work on 2.5/2.6 and not worth extra complexity to support
178
- return if RUBY_VERSION < '2.7'
178
+ return if RUBY_VERSION < "2.7"
179
179
 
180
180
  MakeMakefile.prepend(DumpMkmfLogOnFailure)
181
181
  end
@@ -184,12 +184,12 @@ module Datadog
184
184
  # See `dump_mkmf_log_on_failure!` for details.
185
185
  module DumpMkmfLogOnFailure
186
186
  def mkmf_failed(path)
187
- unless $makefile_created || File.exist?('Makefile')
188
- log_path = File.expand_path('mkmf.log')
187
+ unless $makefile_created || File.exist?("Makefile")
188
+ log_path = File.expand_path("mkmf.log")
189
189
  if File.exist?(log_path)
190
190
  # The full log is very verbose so let's grab only the last check which should be the one that failed
191
191
  entries = File.read(log_path).split(/^-{20}$\n?/)
192
- last_entry = entries.reverse.find { |e| !e.strip.empty? } || ''
192
+ last_entry = entries.reverse.find { |e| !e.strip.empty? } || ""
193
193
 
194
194
  $stderr.puts(
195
195
  "+------------------------------------------------------------------------------+\n" \
@@ -61,7 +61,7 @@ module Datadog
61
61
  else
62
62
  error_message = begin
63
63
  parsed_body = JSON.parse(response.body)
64
- Array(parsed_body.fetch('errors')).join(', ')
64
+ Array(parsed_body.fetch("errors")).join(", ")
65
65
  rescue JSON::ParserError, KeyError
66
66
  response.body
67
67
  end
@@ -77,7 +77,7 @@ module Datadog
77
77
  end
78
78
 
79
79
  def use_ssl?
80
- @endpoint_uri.scheme == 'https'
80
+ @endpoint_uri.scheme == "https"
81
81
  end
82
82
  end
83
83
  end
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'api_client'
4
- require_relative 'evaluation'
5
- require_relative 'evaluation/request'
6
- require_relative 'evaluation/result'
7
- require_relative 'evaluation/no_op_result'
8
- require_relative 'evaluation/message'
9
- require_relative 'evaluation/tool_call'
10
- require_relative 'evaluation/content_part'
11
- require_relative 'evaluation/content_builder'
12
- require_relative 'ext'
3
+ require_relative "api_client"
4
+ require_relative "evaluation"
5
+ require_relative "evaluation/request"
6
+ require_relative "evaluation/result"
7
+ require_relative "evaluation/no_op_result"
8
+ require_relative "evaluation/message"
9
+ require_relative "evaluation/tool_call"
10
+ require_relative "evaluation/content_part"
11
+ require_relative "evaluation/content_builder"
12
+ require_relative "ext"
13
13
 
14
14
  module Datadog
15
15
  module AIGuard
@@ -24,39 +24,39 @@ module Datadog
24
24
 
25
25
  packer.write_map_header(3)
26
26
 
27
- packer.write('id')
28
- packer.write(@stack_id.encode('UTF-8'))
27
+ packer.write("id")
28
+ packer.write(@stack_id.encode("UTF-8"))
29
29
 
30
- packer.write('language')
31
- packer.write('ruby'.encode('UTF-8'))
30
+ packer.write("language")
31
+ packer.write("ruby".encode("UTF-8"))
32
32
 
33
33
  serializable_locations_map = build_serializable_locations_map
34
34
 
35
- packer.write('frames')
35
+ packer.write("frames")
36
36
  packer.write_array_header(serializable_locations_map.size)
37
37
 
38
38
  serializable_locations_map.each do |frame_id, location|
39
39
  packer.write_map_header(6)
40
40
 
41
- packer.write('id')
41
+ packer.write("id")
42
42
  packer.write(frame_id)
43
43
 
44
- packer.write('text')
45
- packer.write(location.to_s.encode('UTF-8'))
44
+ packer.write("text")
45
+ packer.write(location.to_s.encode("UTF-8"))
46
46
 
47
- packer.write('file')
48
- packer.write(location.path&.encode('UTF-8'))
47
+ packer.write("file")
48
+ packer.write(location.path&.encode("UTF-8"))
49
49
 
50
- packer.write('line')
50
+ packer.write("line")
51
51
  packer.write(location.lineno)
52
52
 
53
53
  class_name, function_name = location.label&.match(CLASS_AND_FUNCTION_NAME_REGEX)&.captures
54
54
 
55
- packer.write('class_name')
56
- packer.write(class_name&.encode('UTF-8'))
55
+ packer.write("class_name")
56
+ packer.write(class_name&.encode("UTF-8"))
57
57
 
58
- packer.write('function')
59
- packer.write(function_name&.encode('UTF-8'))
58
+ packer.write("function")
59
+ packer.write(function_name&.encode("UTF-8"))
60
60
  end
61
61
 
62
62
  packer
@@ -74,7 +74,7 @@ module Datadog
74
74
  frame_idx = -1
75
75
  @locations.each_with_object({}) do |location, map|
76
76
  # we are dropping frames from library code without increasing frame index
77
- next if location.path&.include?('lib/datadog')
77
+ next if location.path&.include?("lib/datadog")
78
78
 
79
79
  frame_idx += 1
80
80
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'actions_handler/serializable_backtrace'
3
+ require_relative "actions_handler/serializable_backtrace"
4
4
 
5
5
  module Datadog
6
6
  module AppSec
@@ -11,10 +11,10 @@ module Datadog
11
11
  def handle(actions_hash)
12
12
  # handle actions according their precedence
13
13
  # stack and schema generation should be done before we throw an interrupt signal
14
- generate_stack(actions_hash['generate_stack']) if actions_hash.key?('generate_stack')
15
- generate_schema(actions_hash['generate_schema']) if actions_hash.key?('generate_schema')
16
- interrupt_execution(actions_hash['redirect_request']) if actions_hash.key?('redirect_request')
17
- interrupt_execution(actions_hash['block_request']) if actions_hash.key?('block_request')
14
+ generate_stack(actions_hash["generate_stack"]) if actions_hash.key?("generate_stack")
15
+ generate_schema(actions_hash["generate_schema"]) if actions_hash.key?("generate_schema")
16
+ interrupt_execution(actions_hash["redirect_request"]) if actions_hash.key?("redirect_request")
17
+ interrupt_execution(actions_hash["block_request"]) if actions_hash.key?("block_request")
18
18
  end
19
19
 
20
20
  def interrupt_execution(action_params)
@@ -24,7 +24,7 @@ module Datadog
24
24
  def generate_stack(action_params)
25
25
  return unless Datadog.configuration.appsec.stack_trace.enabled
26
26
 
27
- stack_id = action_params['stack_id']
27
+ stack_id = action_params["stack_id"]
28
28
  return unless stack_id
29
29
 
30
30
  active_span = AppSec.active_context&.span
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'digest/sha2'
3
+ require "digest/sha2"
4
4
 
5
5
  module Datadog
6
6
  module AppSec
@@ -8,7 +8,7 @@ module Datadog
8
8
  module GrapeRouteSerializer
9
9
  module_function
10
10
 
11
- def serialize(route, path_prefix: '')
11
+ def serialize(route, path_prefix: "")
12
12
  path = path_prefix + route.pattern.origin
13
13
 
14
14
  {
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'rails_route_serializer'
4
- require_relative 'grape_route_serializer'
5
- require_relative 'sinatra_route_serializer'
3
+ require_relative "rails_route_serializer"
4
+ require_relative "grape_route_serializer"
5
+ require_relative "sinatra_route_serializer"
6
6
 
7
7
  module Datadog
8
8
  module AppSec
@@ -19,9 +19,9 @@ module Datadog
19
19
  Enumerator.new do |yielder|
20
20
  @routes.each do |route|
21
21
  if route.dispatcher?
22
- if route.verb.include?('|')
22
+ if route.verb.include?("|")
23
23
  # report separate route for each method for multi-method routes
24
- route.verb.split('|').each do |method|
24
+ route.verb.split("|").each do |method|
25
25
  yielder.yield RailsRouteSerializer.serialize(route, method_override: method)
26
26
  end
27
27
  else
@@ -33,7 +33,7 @@ module Datadog
33
33
  end
34
34
  elsif mounted_sinatra_app?(route.app.rack_app)
35
35
  route.app.rack_app.routes.each do |method, sinatra_routes|
36
- next if method == 'HEAD'
36
+ next if method == "HEAD"
37
37
 
38
38
  sinatra_routes.each do |sinatra_route, _, _|
39
39
  yielder.yield SinatraRouteSerializer.serialize(
@@ -8,7 +8,7 @@ module Datadog
8
8
  module SinatraRouteSerializer
9
9
  module_function
10
10
 
11
- def serialize(route, method:, path_prefix: '')
11
+ def serialize(route, method:, path_prefix: "")
12
12
  path = path_prefix + route.safe_string
13
13
 
14
14
  {
@@ -1,21 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../../tracing/contrib/rack/route_inference'
3
+ require_relative "../../tracing/contrib/rack/route_inference"
4
4
 
5
5
  module Datadog
6
6
  module AppSec
7
7
  module APISecurity
8
8
  # This is a helper module to extract the route pattern from the Rack::Request.
9
9
  module RouteExtractor
10
- SINATRA_ROUTE_KEY = 'sinatra.route'
11
- SINATRA_ROUTE_SEPARATOR = ' '
12
- GRAPE_ROUTE_KEY = 'grape.routing_args'
13
- RAILS_ROUTE_URI_PATTERN_KEY = 'action_dispatch.route_uri_pattern'
14
- RAILS_ROUTE_KEY = 'action_dispatch.route' # Rails 8.1.1+
15
- RAILS_ROUTES_KEY = 'action_dispatch.routes'
16
- RAILS_PATH_PARAMS_KEY = 'action_dispatch.request.path_parameters'
17
- RAILS_FORMAT_SUFFIX = '(.:format)'
18
- DATADOG_RAILS_ROUTE_KEY = 'datadog.action_dispatch.route'
10
+ SINATRA_ROUTE_KEY = "sinatra.route"
11
+ SINATRA_ROUTE_SEPARATOR = " "
12
+ GRAPE_ROUTE_KEY = "grape.routing_args"
13
+ RAILS_ROUTE_URI_PATTERN_KEY = "action_dispatch.route_uri_pattern"
14
+ RAILS_ROUTE_KEY = "action_dispatch.route" # Rails 8.1.1+
15
+ RAILS_ROUTES_KEY = "action_dispatch.routes"
16
+ RAILS_PATH_PARAMS_KEY = "action_dispatch.request.path_parameters"
17
+ RAILS_FORMAT_SUFFIX = "(.:format)"
18
+ DATADOG_RAILS_ROUTE_KEY = "datadog.action_dispatch.route"
19
19
 
20
20
  # HACK: We rely on the fact that each contrib will modify `request.env`
21
21
  # and store information sufficient to compute the canonical
@@ -94,7 +94,7 @@ module Datadog
94
94
  Tracing::Contrib::Rack::RouteInference.read_or_infer(request.env)
95
95
  end
96
96
  rescue => e
97
- AppSec.telemetry&.report(e, description: 'AppSec: Could not extract route pattern')
97
+ AppSec.telemetry&.report(e, description: "AppSec: Could not extract route pattern")
98
98
 
99
99
  nil
100
100
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'zlib'
4
- require_relative 'route_extractor'
5
- require_relative '../../core/utils/time'
6
- require_relative '../../core/utils/lru_cache'
3
+ require "zlib"
4
+ require_relative "route_extractor"
5
+ require_relative "../../core/utils/time"
6
+ require_relative "../../core/utils/lru_cache"
7
7
 
8
8
  module Datadog
9
9
  module AppSec
@@ -35,7 +35,7 @@ module Datadog
35
35
  end
36
36
 
37
37
  def initialize(sample_delay)
38
- raise ArgumentError, 'sample_delay must be an Integer' unless sample_delay.is_a?(Integer)
38
+ raise ArgumentError, "sample_delay must be an Integer" unless sample_delay.is_a?(Integer)
39
39
 
40
40
  @cache = Core::Utils::LRUCache.new(MAX_CACHE_SIZE)
41
41
  @sample_delay_seconds = sample_delay
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'api_security/sampler'
3
+ require_relative "api_security/sampler"
4
4
 
5
5
  module Datadog
6
6
  module AppSec
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'pathname'
3
+ require "pathname"
4
4
 
5
5
  module Datadog
6
6
  module AppSec
@@ -13,11 +13,11 @@ module Datadog
13
13
  end
14
14
 
15
15
  def waf_processors
16
- read('waf_rules/processors.json')
16
+ read("waf_rules/processors.json")
17
17
  end
18
18
 
19
19
  def waf_scanners
20
- read('waf_rules/scanners.json')
20
+ read("waf_rules/scanners.json")
21
21
  end
22
22
 
23
23
  def blocked(format: :html)
@@ -25,21 +25,21 @@ module Datadog
25
25
  end
26
26
 
27
27
  def path
28
- Pathname.new(dir).join('assets')
28
+ Pathname.new(dir).join("assets")
29
29
  end
30
30
 
31
31
  def filepath(filename)
32
32
  path.join(filename)
33
33
  end
34
34
 
35
- def read(filename, mode = 'rb')
36
- File.open(filepath(filename), mode) { |f| f.read || raise('Unexpected nil IO object') }
35
+ def read(filename, mode = "rb")
36
+ File.open(filepath(filename), mode) { |f| f.read || raise("Unexpected nil IO object") }
37
37
  end
38
38
 
39
39
  def dir
40
40
  # Happens only if this file is evaluated standalone, which should not happen
41
41
  # Necessary to make type-checker happy with a non-nilable return value
42
- __dir__ || raise('Unexpected file eval')
42
+ __dir__ || raise("Unexpected file eval")
43
43
  end
44
44
  end
45
45
  end
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if %w[1 true].include?((Datadog::DATADOG_ENV['DD_APPSEC_ENABLED'] || '').downcase)
3
+ if %w[1 true].include?((Datadog::DATADOG_ENV["DD_APPSEC_ENABLED"] || "").downcase)
4
4
  begin
5
- require_relative 'contrib/auto_instrument'
5
+ require_relative "contrib/auto_instrument"
6
6
  Datadog::AppSec::Contrib::AutoInstrument.patch_all
7
7
  rescue => e
8
8
  Kernel.warn(
9
- '[datadog] AppSec failed to instrument. No security check will be performed. error: ' \
9
+ "[datadog] AppSec failed to instrument. No security check will be performed. error: " \
10
10
  " #{e.class}: #{e.message}"
11
11
  )
12
12
  end
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'security_engine/engine'
4
- require_relative 'security_engine/runner'
5
- require_relative 'processor/rule_loader'
6
- require_relative 'actions_handler'
7
- require_relative 'thread_safe_ref'
3
+ require_relative "security_engine/engine"
4
+ require_relative "security_engine/runner"
5
+ require_relative "processor/rule_loader"
6
+ require_relative "actions_handler"
7
+ require_relative "thread_safe_ref"
8
8
 
9
9
  module Datadog
10
10
  module AppSec
@@ -14,21 +14,21 @@ module Datadog
14
14
  def build_appsec_component(settings, telemetry:)
15
15
  return if !settings.respond_to?(:appsec) || !settings.appsec.enabled
16
16
 
17
- ffi_version = Gem.loaded_specs['ffi']&.version
17
+ ffi_version = Gem.loaded_specs["ffi"]&.version
18
18
  unless ffi_version
19
- Datadog.logger.warn('FFI gem is not loaded, AppSec will be disabled.')
20
- telemetry.error('AppSec: Component not loaded, due to missing FFI gem')
19
+ Datadog.logger.warn("FFI gem is not loaded, AppSec will be disabled.")
20
+ telemetry.error("AppSec: Component not loaded, due to missing FFI gem")
21
21
 
22
22
  return
23
23
  end
24
24
 
25
- if RubyVersion.is?('>= 3.3') && ffi_version < Gem::Version.new('1.16.0')
25
+ if RubyVersion.is?(">= 3.3") && ffi_version < Gem::Version.new("1.16.0")
26
26
  Datadog.logger.warn(
27
- 'AppSec is not supported in Ruby versions above 3.3.0 when using `ffi` versions older than 1.16.0, ' \
28
- 'and will be forcibly disabled due to a memory leak in `ffi`. ' \
29
- 'Please upgrade your `ffi` version to 1.16.0 or higher.'
27
+ "AppSec is not supported in Ruby versions above 3.3.0 when using `ffi` versions older than 1.16.0, " \
28
+ "and will be forcibly disabled due to a memory leak in `ffi`. " \
29
+ "Please upgrade your `ffi` version to 1.16.0 or higher."
30
30
  )
31
- telemetry.error('AppSec: Component not loaded, ffi version is leaky with ruby > 3.3.0')
31
+ telemetry.error("AppSec: Component not loaded, ffi version is leaky with ruby > 3.3.0")
32
32
 
33
33
  return
34
34
  end
@@ -63,9 +63,9 @@ module Datadog
63
63
  private
64
64
 
65
65
  def require_libddwaf(telemetry:)
66
- require('libddwaf')
66
+ require("libddwaf")
67
67
  rescue LoadError => e
68
- libddwaf_platform = Gem.loaded_specs['libddwaf']&.platform || 'unknown'
68
+ libddwaf_platform = Gem.loaded_specs["libddwaf"]&.platform || "unknown"
69
69
  ruby_platforms = Gem.platforms.map(&:to_s)
70
70
 
71
71
  error_message = "libddwaf failed to load - installed platform: #{libddwaf_platform}, " \