datadog 2.12.0 → 2.22.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 (570) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +348 -1
  3. data/README.md +0 -1
  4. data/ext/LIBDATADOG_DEVELOPMENT.md +60 -0
  5. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +63 -56
  6. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -1
  7. data/ext/datadog_profiling_native_extension/collectors_stack.c +263 -76
  8. data/ext/datadog_profiling_native_extension/collectors_stack.h +20 -3
  9. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +78 -26
  10. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -0
  11. data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +1 -4
  12. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +10 -0
  13. data/ext/datadog_profiling_native_extension/encoded_profile.c +79 -0
  14. data/ext/datadog_profiling_native_extension/encoded_profile.h +8 -0
  15. data/ext/datadog_profiling_native_extension/extconf.rb +10 -0
  16. data/ext/datadog_profiling_native_extension/heap_recorder.c +247 -364
  17. data/ext/datadog_profiling_native_extension/heap_recorder.h +4 -6
  18. data/ext/datadog_profiling_native_extension/http_transport.c +60 -94
  19. data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +22 -0
  20. data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +8 -5
  21. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +41 -21
  22. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +6 -4
  23. data/ext/datadog_profiling_native_extension/profiling.c +2 -0
  24. data/ext/datadog_profiling_native_extension/ruby_helpers.c +1 -13
  25. data/ext/datadog_profiling_native_extension/ruby_helpers.h +3 -11
  26. data/ext/datadog_profiling_native_extension/stack_recorder.c +173 -76
  27. data/ext/libdatadog_api/crashtracker.c +11 -12
  28. data/ext/libdatadog_api/crashtracker.h +5 -0
  29. data/ext/libdatadog_api/datadog_ruby_common.c +1 -4
  30. data/ext/libdatadog_api/datadog_ruby_common.h +10 -0
  31. data/ext/libdatadog_api/ddsketch.c +106 -0
  32. data/ext/libdatadog_api/extconf.rb +5 -3
  33. data/ext/libdatadog_api/init.c +18 -0
  34. data/ext/libdatadog_api/library_config.c +172 -0
  35. data/ext/libdatadog_api/library_config.h +25 -0
  36. data/ext/libdatadog_api/process_discovery.c +118 -0
  37. data/ext/libdatadog_api/process_discovery.h +5 -0
  38. data/ext/libdatadog_extconf_helpers.rb +15 -5
  39. data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +89 -0
  40. data/lib/datadog/appsec/actions_handler.rb +24 -2
  41. data/lib/datadog/appsec/anonymizer.rb +16 -0
  42. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +26 -0
  43. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +59 -0
  44. data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +29 -0
  45. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +26 -0
  46. data/lib/datadog/appsec/api_security/endpoint_collection.rb +10 -0
  47. data/lib/datadog/appsec/api_security/lru_cache.rb +56 -0
  48. data/lib/datadog/appsec/api_security/route_extractor.rb +75 -0
  49. data/lib/datadog/appsec/api_security/sampler.rb +59 -0
  50. data/lib/datadog/appsec/api_security.rb +23 -0
  51. data/lib/datadog/appsec/assets/waf_rules/README.md +44 -5
  52. data/lib/datadog/appsec/assets/waf_rules/recommended.json +601 -74
  53. data/lib/datadog/appsec/assets/waf_rules/strict.json +48 -75
  54. data/lib/datadog/appsec/autoload.rb +2 -2
  55. data/lib/datadog/appsec/component.rb +46 -71
  56. data/lib/datadog/appsec/compressed_json.rb +40 -0
  57. data/lib/datadog/appsec/configuration/settings.rb +162 -30
  58. data/lib/datadog/appsec/context.rb +30 -7
  59. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +35 -18
  60. data/lib/datadog/appsec/contrib/active_record/integration.rb +2 -2
  61. data/lib/datadog/appsec/contrib/active_record/patcher.rb +62 -11
  62. data/lib/datadog/appsec/contrib/auto_instrument.rb +1 -1
  63. data/lib/datadog/appsec/contrib/devise/configuration.rb +7 -31
  64. data/lib/datadog/appsec/contrib/devise/data_extractor.rb +78 -0
  65. data/lib/datadog/appsec/contrib/devise/ext.rb +22 -0
  66. data/lib/datadog/appsec/contrib/devise/integration.rb +1 -2
  67. data/lib/datadog/appsec/contrib/devise/patcher.rb +34 -23
  68. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +103 -0
  69. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +70 -0
  70. data/lib/datadog/appsec/contrib/devise/{patcher/rememberable_patch.rb → patches/skip_signin_tracking_patch.rb} +2 -2
  71. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +106 -0
  72. data/lib/datadog/appsec/contrib/excon/integration.rb +1 -1
  73. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +11 -12
  74. data/lib/datadog/appsec/contrib/faraday/integration.rb +1 -1
  75. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +10 -10
  76. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +10 -9
  77. data/lib/datadog/appsec/contrib/graphql/integration.rb +1 -1
  78. data/lib/datadog/appsec/contrib/rack/ext.rb +34 -0
  79. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +53 -31
  80. data/lib/datadog/appsec/contrib/rack/integration.rb +1 -1
  81. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +52 -44
  82. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +35 -11
  83. data/lib/datadog/appsec/contrib/rails/integration.rb +1 -1
  84. data/lib/datadog/appsec/contrib/rails/patcher.rb +65 -47
  85. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +27 -0
  86. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
  87. data/lib/datadog/appsec/contrib/rest_client/integration.rb +1 -1
  88. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +12 -12
  89. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +45 -22
  90. data/lib/datadog/appsec/contrib/sinatra/integration.rb +1 -1
  91. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +8 -18
  92. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
  93. data/lib/datadog/appsec/event.rb +91 -147
  94. data/lib/datadog/appsec/ext.rb +4 -2
  95. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +23 -2
  96. data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +24 -0
  97. data/lib/datadog/appsec/instrumentation/gateway.rb +17 -22
  98. data/lib/datadog/appsec/metrics/collector.rb +23 -3
  99. data/lib/datadog/appsec/metrics/telemetry.rb +2 -2
  100. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +29 -0
  101. data/lib/datadog/appsec/metrics.rb +1 -0
  102. data/lib/datadog/appsec/monitor/gateway/watcher.rb +49 -14
  103. data/lib/datadog/appsec/processor/rule_loader.rb +30 -33
  104. data/lib/datadog/appsec/remote.rb +43 -59
  105. data/lib/datadog/appsec/response.rb +6 -6
  106. data/lib/datadog/appsec/security_engine/engine.rb +176 -0
  107. data/lib/datadog/appsec/security_engine/result.rb +44 -9
  108. data/lib/datadog/appsec/security_engine/runner.rb +44 -21
  109. data/lib/datadog/appsec/security_event.rb +37 -0
  110. data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
  111. data/lib/datadog/appsec/trace_keeper.rb +24 -0
  112. data/lib/datadog/appsec/utils/hash_coercion.rb +23 -0
  113. data/lib/datadog/appsec/utils.rb +0 -2
  114. data/lib/datadog/appsec.rb +5 -15
  115. data/lib/datadog/auto_instrument_base.rb +2 -1
  116. data/lib/datadog/core/buffer/random.rb +18 -2
  117. data/lib/datadog/core/configuration/agent_settings.rb +52 -0
  118. data/lib/datadog/core/configuration/agent_settings_resolver.rb +8 -50
  119. data/lib/datadog/core/configuration/agentless_settings_resolver.rb +176 -0
  120. data/lib/datadog/core/configuration/components.rb +69 -37
  121. data/lib/datadog/core/configuration/components_state.rb +23 -0
  122. data/lib/datadog/core/configuration/config_helper.rb +100 -0
  123. data/lib/datadog/core/configuration/deprecations.rb +36 -0
  124. data/lib/datadog/core/configuration/ext.rb +4 -1
  125. data/lib/datadog/core/configuration/option.rb +117 -77
  126. data/lib/datadog/core/configuration/option_definition.rb +5 -14
  127. data/lib/datadog/core/configuration/options.rb +15 -13
  128. data/lib/datadog/core/configuration/settings.rb +117 -48
  129. data/lib/datadog/core/configuration/stable_config.rb +32 -0
  130. data/lib/datadog/core/configuration/supported_configurations.rb +337 -0
  131. data/lib/datadog/core/configuration.rb +40 -16
  132. data/lib/datadog/core/crashtracking/component.rb +3 -10
  133. data/lib/datadog/core/crashtracking/tag_builder.rb +4 -22
  134. data/lib/datadog/core/ddsketch.rb +21 -0
  135. data/lib/datadog/core/deprecations.rb +2 -2
  136. data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
  137. data/lib/datadog/core/encoding.rb +1 -1
  138. data/lib/datadog/core/environment/agent_info.rb +4 -3
  139. data/lib/datadog/core/environment/cgroup.rb +10 -12
  140. data/lib/datadog/core/environment/container.rb +38 -40
  141. data/lib/datadog/core/environment/ext.rb +6 -8
  142. data/lib/datadog/core/environment/git.rb +3 -2
  143. data/lib/datadog/core/environment/identity.rb +3 -3
  144. data/lib/datadog/core/environment/platform.rb +3 -3
  145. data/lib/datadog/core/environment/variable_helpers.rb +4 -4
  146. data/lib/datadog/core/environment/yjit.rb +2 -1
  147. data/lib/datadog/core/error.rb +11 -9
  148. data/lib/datadog/core/logger.rb +2 -2
  149. data/lib/datadog/core/metrics/client.rb +29 -29
  150. data/lib/datadog/core/metrics/logging.rb +5 -5
  151. data/lib/datadog/core/pin.rb +4 -8
  152. data/lib/datadog/core/process_discovery/tracer_memfd.rb +13 -0
  153. data/lib/datadog/core/process_discovery.rb +61 -0
  154. data/lib/datadog/core/rate_limiter.rb +4 -2
  155. data/lib/datadog/core/remote/client.rb +44 -35
  156. data/lib/datadog/core/remote/component.rb +12 -17
  157. data/lib/datadog/core/remote/configuration/digest.rb +7 -7
  158. data/lib/datadog/core/remote/configuration/path.rb +1 -1
  159. data/lib/datadog/core/remote/configuration/repository.rb +14 -1
  160. data/lib/datadog/core/remote/negotiation.rb +9 -9
  161. data/lib/datadog/core/remote/transport/config.rb +4 -3
  162. data/lib/datadog/core/remote/transport/http/client.rb +5 -4
  163. data/lib/datadog/core/remote/transport/http/config.rb +27 -37
  164. data/lib/datadog/core/remote/transport/http/negotiation.rb +7 -33
  165. data/lib/datadog/core/remote/transport/http.rb +25 -89
  166. data/lib/datadog/core/remote/transport/negotiation.rb +4 -3
  167. data/lib/datadog/core/runtime/ext.rb +0 -1
  168. data/lib/datadog/core/runtime/metrics.rb +12 -5
  169. data/lib/datadog/core/tag_builder.rb +56 -0
  170. data/lib/datadog/core/telemetry/component.rb +92 -52
  171. data/lib/datadog/core/telemetry/emitter.rb +23 -11
  172. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +66 -0
  173. data/lib/datadog/core/telemetry/event/app_closing.rb +18 -0
  174. data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +33 -0
  175. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +30 -0
  176. data/lib/datadog/core/telemetry/event/app_heartbeat.rb +18 -0
  177. data/lib/datadog/core/telemetry/event/app_integrations_change.rb +58 -0
  178. data/lib/datadog/core/telemetry/event/app_started.rb +287 -0
  179. data/lib/datadog/core/telemetry/event/base.rb +40 -0
  180. data/lib/datadog/core/telemetry/event/distributions.rb +18 -0
  181. data/lib/datadog/core/telemetry/event/generate_metrics.rb +43 -0
  182. data/lib/datadog/core/telemetry/event/log.rb +76 -0
  183. data/lib/datadog/core/telemetry/event/message_batch.rb +42 -0
  184. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +43 -0
  185. data/lib/datadog/core/telemetry/event.rb +18 -472
  186. data/lib/datadog/core/telemetry/http/adapters/net.rb +12 -97
  187. data/lib/datadog/core/telemetry/logger.rb +5 -4
  188. data/lib/datadog/core/telemetry/logging.rb +11 -5
  189. data/lib/datadog/core/telemetry/metric.rb +8 -8
  190. data/lib/datadog/core/telemetry/request.rb +4 -4
  191. data/lib/datadog/core/telemetry/transport/http/api.rb +43 -0
  192. data/lib/datadog/core/telemetry/transport/http/client.rb +49 -0
  193. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +92 -0
  194. data/lib/datadog/core/telemetry/transport/http.rb +63 -0
  195. data/lib/datadog/core/telemetry/transport/telemetry.rb +51 -0
  196. data/lib/datadog/core/telemetry/worker.rb +90 -24
  197. data/lib/datadog/core/transport/http/adapters/net.rb +17 -2
  198. data/lib/datadog/core/transport/http/adapters/test.rb +2 -1
  199. data/lib/datadog/core/transport/http/api/instance.rb +17 -0
  200. data/lib/datadog/core/transport/http/api/spec.rb +17 -0
  201. data/lib/datadog/core/transport/http/builder.rb +19 -17
  202. data/lib/datadog/core/transport/http/env.rb +8 -0
  203. data/lib/datadog/core/transport/http.rb +75 -0
  204. data/lib/datadog/core/transport/response.rb +4 -1
  205. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +6 -6
  206. data/lib/datadog/core/utils/duration.rb +32 -32
  207. data/lib/datadog/core/utils/forking.rb +2 -2
  208. data/lib/datadog/core/utils/network.rb +25 -6
  209. data/lib/datadog/core/utils/only_once_successful.rb +16 -5
  210. data/lib/datadog/core/utils/time.rb +20 -0
  211. data/lib/datadog/core/utils/truncation.rb +21 -0
  212. data/lib/datadog/core/utils.rb +7 -0
  213. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -1
  214. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +8 -8
  215. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +7 -7
  216. data/lib/datadog/core/worker.rb +1 -1
  217. data/lib/datadog/core/workers/async.rb +29 -12
  218. data/lib/datadog/core/workers/interval_loop.rb +12 -1
  219. data/lib/datadog/core/workers/runtime_metrics.rb +2 -2
  220. data/lib/datadog/core.rb +10 -0
  221. data/lib/datadog/di/boot.rb +43 -0
  222. data/lib/datadog/di/component.rb +21 -2
  223. data/lib/datadog/di/context.rb +70 -0
  224. data/lib/datadog/di/el/compiler.rb +164 -0
  225. data/lib/datadog/di/el/evaluator.rb +159 -0
  226. data/lib/datadog/di/el/expression.rb +42 -0
  227. data/lib/datadog/di/el.rb +5 -0
  228. data/lib/datadog/di/error.rb +25 -0
  229. data/lib/datadog/di/instrumenter.rb +132 -20
  230. data/lib/datadog/di/probe.rb +35 -15
  231. data/lib/datadog/di/probe_builder.rb +39 -1
  232. data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
  233. data/lib/datadog/di/probe_file_loader.rb +82 -0
  234. data/lib/datadog/di/probe_manager.rb +3 -2
  235. data/lib/datadog/di/probe_notification_builder.rb +61 -67
  236. data/lib/datadog/di/probe_notifier_worker.rb +25 -17
  237. data/lib/datadog/di/remote.rb +5 -5
  238. data/lib/datadog/di/serializer.rb +160 -8
  239. data/lib/datadog/di/transport/diagnostics.rb +4 -3
  240. data/lib/datadog/di/transport/http/api.rb +2 -12
  241. data/lib/datadog/di/transport/http/client.rb +4 -3
  242. data/lib/datadog/di/transport/http/diagnostics.rb +7 -34
  243. data/lib/datadog/di/transport/http/input.rb +18 -35
  244. data/lib/datadog/di/transport/http.rb +15 -77
  245. data/lib/datadog/di/transport/input.rb +14 -5
  246. data/lib/datadog/di/utils.rb +5 -0
  247. data/lib/datadog/di.rb +0 -34
  248. data/lib/datadog/error_tracking/collector.rb +87 -0
  249. data/lib/datadog/error_tracking/component.rb +167 -0
  250. data/lib/datadog/error_tracking/configuration/settings.rb +63 -0
  251. data/lib/datadog/error_tracking/configuration.rb +11 -0
  252. data/lib/datadog/error_tracking/ext.rb +18 -0
  253. data/lib/datadog/error_tracking/extensions.rb +16 -0
  254. data/lib/datadog/error_tracking/filters.rb +77 -0
  255. data/lib/datadog/error_tracking.rb +18 -0
  256. data/lib/datadog/kit/appsec/events/v2.rb +196 -0
  257. data/lib/datadog/kit/appsec/events.rb +17 -4
  258. data/lib/datadog/kit/identity.rb +22 -12
  259. data/lib/datadog/opentelemetry/api/baggage.rb +90 -0
  260. data/lib/datadog/opentelemetry/api/baggage.rbs +26 -0
  261. data/lib/datadog/opentelemetry/api/context.rb +21 -6
  262. data/lib/datadog/opentelemetry/sdk/configurator.rb +1 -1
  263. data/lib/datadog/opentelemetry/sdk/propagator.rb +4 -4
  264. data/lib/datadog/opentelemetry/sdk/span_processor.rb +8 -8
  265. data/lib/datadog/opentelemetry/sdk/trace/span.rb +15 -11
  266. data/lib/datadog/opentelemetry/trace.rb +4 -4
  267. data/lib/datadog/opentelemetry.rb +2 -1
  268. data/lib/datadog/profiling/collectors/code_provenance.rb +18 -9
  269. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +6 -0
  270. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -0
  271. data/lib/datadog/profiling/collectors/info.rb +44 -0
  272. data/lib/datadog/profiling/collectors/thread_context.rb +17 -2
  273. data/lib/datadog/profiling/component.rb +8 -9
  274. data/lib/datadog/profiling/encoded_profile.rb +11 -0
  275. data/lib/datadog/profiling/exporter.rb +12 -7
  276. data/lib/datadog/profiling/ext.rb +2 -15
  277. data/lib/datadog/profiling/flush.rb +5 -8
  278. data/lib/datadog/profiling/http_transport.rb +8 -62
  279. data/lib/datadog/profiling/profiler.rb +2 -0
  280. data/lib/datadog/profiling/scheduler.rb +10 -2
  281. data/lib/datadog/profiling/sequence_tracker.rb +44 -0
  282. data/lib/datadog/profiling/stack_recorder.rb +9 -9
  283. data/lib/datadog/profiling/tag_builder.rb +7 -41
  284. data/lib/datadog/profiling/tasks/exec.rb +2 -2
  285. data/lib/datadog/profiling/tasks/setup.rb +2 -0
  286. data/lib/datadog/profiling.rb +13 -10
  287. data/lib/datadog/single_step_instrument.rb +9 -0
  288. data/lib/datadog/tracing/analytics.rb +1 -1
  289. data/lib/datadog/tracing/buffer.rb +7 -7
  290. data/lib/datadog/tracing/component.rb +21 -29
  291. data/lib/datadog/tracing/configuration/dynamic.rb +6 -8
  292. data/lib/datadog/tracing/configuration/ext.rb +8 -4
  293. data/lib/datadog/tracing/configuration/settings.rb +50 -12
  294. data/lib/datadog/tracing/context.rb +2 -2
  295. data/lib/datadog/tracing/context_provider.rb +1 -1
  296. data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
  297. data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -1
  298. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -1
  299. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +19 -4
  300. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +19 -12
  301. data/lib/datadog/tracing/contrib/action_pack/ext.rb +2 -0
  302. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
  303. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
  304. data/lib/datadog/tracing/contrib/active_job/event.rb +8 -8
  305. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
  306. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
  307. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
  308. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
  309. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
  310. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
  311. data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -1
  312. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
  313. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +3 -3
  314. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -2
  315. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
  316. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
  317. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +5 -5
  318. data/lib/datadog/tracing/contrib/active_record/integration.rb +2 -2
  319. data/lib/datadog/tracing/contrib/active_record/utils.rb +15 -15
  320. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +17 -8
  321. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +33 -0
  322. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +4 -0
  323. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +2 -4
  324. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +13 -0
  325. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
  326. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +2 -1
  327. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +7 -9
  328. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
  329. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +12 -2
  330. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +8 -2
  331. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -1
  332. data/lib/datadog/tracing/contrib/aws/service/base.rb +2 -1
  333. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +1 -1
  334. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +1 -1
  335. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +1 -1
  336. data/lib/datadog/tracing/contrib/aws/service/s3.rb +1 -1
  337. data/lib/datadog/tracing/contrib/aws/service/sns.rb +1 -1
  338. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +1 -1
  339. data/lib/datadog/tracing/contrib/aws/service/states.rb +1 -1
  340. data/lib/datadog/tracing/contrib/aws/services.rb +7 -7
  341. data/lib/datadog/tracing/contrib/component.rb +2 -2
  342. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  343. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  344. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  345. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -1
  346. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  347. data/lib/datadog/tracing/contrib/configurable.rb +6 -6
  348. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +4 -4
  349. data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -1
  350. data/lib/datadog/tracing/contrib/dalli/ext.rb +3 -2
  351. data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -1
  352. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -1
  353. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -2
  354. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +4 -4
  355. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +51 -53
  356. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +5 -5
  357. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +6 -7
  358. data/lib/datadog/tracing/contrib/ethon/ext.rb +3 -2
  359. data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -1
  360. data/lib/datadog/tracing/contrib/excon/ext.rb +3 -2
  361. data/lib/datadog/tracing/contrib/excon/integration.rb +1 -1
  362. data/lib/datadog/tracing/contrib/excon/middleware.rb +7 -5
  363. data/lib/datadog/tracing/contrib/ext.rb +4 -3
  364. data/lib/datadog/tracing/contrib/extensions.rb +9 -9
  365. data/lib/datadog/tracing/contrib/faraday/ext.rb +3 -2
  366. data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -1
  367. data/lib/datadog/tracing/contrib/faraday/middleware.rb +9 -5
  368. data/lib/datadog/tracing/contrib/grape/endpoint.rb +8 -8
  369. data/lib/datadog/tracing/contrib/grape/integration.rb +1 -1
  370. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +7 -0
  371. data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
  372. data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -1
  373. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -2
  374. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +84 -48
  375. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +15 -9
  376. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +3 -3
  377. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  378. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +3 -0
  379. data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -1
  380. data/lib/datadog/tracing/contrib/hanami/ext.rb +2 -2
  381. data/lib/datadog/tracing/contrib/hanami/integration.rb +1 -1
  382. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -1
  383. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +9 -11
  384. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +0 -15
  385. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +4 -4
  386. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +4 -1
  387. data/lib/datadog/tracing/contrib/http/ext.rb +3 -2
  388. data/lib/datadog/tracing/contrib/http/instrumentation.rb +11 -15
  389. data/lib/datadog/tracing/contrib/httpclient/ext.rb +3 -2
  390. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +9 -19
  391. data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -1
  392. data/lib/datadog/tracing/contrib/httprb/ext.rb +3 -2
  393. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +11 -19
  394. data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -1
  395. data/lib/datadog/tracing/contrib/kafka/event.rb +1 -1
  396. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -1
  397. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -1
  398. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -1
  399. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -1
  400. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -1
  401. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -1
  402. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -1
  403. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -1
  404. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -1
  405. data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -1
  406. data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +27 -0
  407. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +48 -0
  408. data/lib/datadog/tracing/contrib/karafka/ext.rb +27 -0
  409. data/lib/datadog/tracing/contrib/karafka/integration.rb +45 -0
  410. data/lib/datadog/tracing/contrib/karafka/monitor.rb +66 -0
  411. data/lib/datadog/tracing/contrib/karafka/patcher.rb +71 -0
  412. data/lib/datadog/tracing/contrib/karafka.rb +37 -0
  413. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -1
  414. data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -1
  415. data/lib/datadog/tracing/contrib/lograge/patcher.rb +4 -2
  416. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +9 -1
  417. data/lib/datadog/tracing/contrib/mongodb/ext.rb +2 -1
  418. data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -1
  419. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  420. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +23 -6
  421. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -1
  422. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +16 -6
  423. data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -1
  424. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +17 -0
  425. data/lib/datadog/tracing/contrib/opensearch/ext.rb +12 -2
  426. data/lib/datadog/tracing/contrib/opensearch/integration.rb +1 -2
  427. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +68 -66
  428. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +5 -5
  429. data/lib/datadog/tracing/contrib/patcher.rb +12 -11
  430. data/lib/datadog/tracing/contrib/pg/integration.rb +1 -1
  431. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -1
  432. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -3
  433. data/lib/datadog/tracing/contrib/presto/integration.rb +1 -1
  434. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +1 -1
  435. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  436. data/lib/datadog/tracing/contrib/que/integration.rb +1 -1
  437. data/lib/datadog/tracing/contrib/racecar/event.rb +1 -1
  438. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
  439. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -1
  440. data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
  441. data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -1
  442. data/lib/datadog/tracing/contrib/rack/header_collection.rb +1 -1
  443. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +32 -32
  444. data/lib/datadog/tracing/contrib/rack/integration.rb +1 -1
  445. data/lib/datadog/tracing/contrib/rack/middlewares.rb +21 -17
  446. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  447. data/lib/datadog/tracing/contrib/rack/request_queue.rb +4 -3
  448. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +7 -1
  449. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -1
  450. data/lib/datadog/tracing/contrib/rails/ext.rb +2 -1
  451. data/lib/datadog/tracing/contrib/rails/integration.rb +2 -2
  452. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  453. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  454. data/lib/datadog/tracing/contrib/rails/patcher.rb +4 -1
  455. data/lib/datadog/tracing/contrib/rails/runner.rb +62 -40
  456. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
  457. data/lib/datadog/tracing/contrib/rake/integration.rb +1 -1
  458. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
  459. data/lib/datadog/tracing/contrib/redis/ext.rb +3 -2
  460. data/lib/datadog/tracing/contrib/redis/integration.rb +2 -2
  461. data/lib/datadog/tracing/contrib/redis/patcher.rb +4 -4
  462. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
  463. data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
  464. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +4 -4
  465. data/lib/datadog/tracing/contrib/registry.rb +1 -1
  466. data/lib/datadog/tracing/contrib/resque/integration.rb +1 -1
  467. data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -1
  468. data/lib/datadog/tracing/contrib/rest_client/ext.rb +3 -2
  469. data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -1
  470. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +8 -6
  471. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +1 -1
  472. data/lib/datadog/tracing/contrib/roda/integration.rb +1 -1
  473. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -1
  474. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -1
  475. data/lib/datadog/tracing/contrib/sequel/database.rb +5 -5
  476. data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -1
  477. data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -1
  478. data/lib/datadog/tracing/contrib/sequel/utils.rb +1 -1
  479. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -1
  480. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +6 -1
  481. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +3 -0
  482. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
  483. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -1
  484. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +5 -2
  485. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
  486. data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -1
  487. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +38 -40
  488. data/lib/datadog/tracing/contrib/sneakers/integration.rb +1 -1
  489. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +1 -1
  490. data/lib/datadog/tracing/contrib/stripe/integration.rb +1 -1
  491. data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
  492. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -1
  493. data/lib/datadog/tracing/contrib/support.rb +28 -0
  494. data/lib/datadog/tracing/contrib/trilogy/ext.rb +1 -1
  495. data/lib/datadog/tracing/contrib/trilogy/integration.rb +1 -1
  496. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +11 -11
  497. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +6 -6
  498. data/lib/datadog/tracing/contrib.rb +1 -0
  499. data/lib/datadog/tracing/correlation.rb +9 -2
  500. data/lib/datadog/tracing/diagnostics/environment_logger.rb +8 -2
  501. data/lib/datadog/tracing/distributed/b3_multi.rb +1 -1
  502. data/lib/datadog/tracing/distributed/b3_single.rb +2 -2
  503. data/lib/datadog/tracing/distributed/baggage.rb +196 -0
  504. data/lib/datadog/tracing/distributed/datadog.rb +8 -7
  505. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +11 -13
  506. data/lib/datadog/tracing/distributed/helpers.rb +1 -1
  507. data/lib/datadog/tracing/distributed/none.rb +4 -2
  508. data/lib/datadog/tracing/distributed/propagation.rb +28 -4
  509. data/lib/datadog/tracing/distributed/propagation_policy.rb +42 -0
  510. data/lib/datadog/tracing/distributed/trace_context.rb +22 -16
  511. data/lib/datadog/tracing/event.rb +5 -7
  512. data/lib/datadog/tracing/flush.rb +1 -1
  513. data/lib/datadog/tracing/metadata/analytics.rb +1 -1
  514. data/lib/datadog/tracing/metadata/errors.rb +4 -4
  515. data/lib/datadog/tracing/metadata/ext.rb +13 -0
  516. data/lib/datadog/tracing/metadata/metastruct.rb +36 -0
  517. data/lib/datadog/tracing/metadata/metastruct_tagging.rb +42 -0
  518. data/lib/datadog/tracing/metadata/tagging.rb +4 -4
  519. data/lib/datadog/tracing/metadata.rb +2 -0
  520. data/lib/datadog/tracing/pipeline/span_filter.rb +3 -1
  521. data/lib/datadog/tracing/pipeline/span_processor.rb +3 -1
  522. data/lib/datadog/tracing/pipeline.rb +1 -1
  523. data/lib/datadog/tracing/sampling/ext.rb +0 -2
  524. data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -1
  525. data/lib/datadog/tracing/sampling/rule_sampler.rb +30 -30
  526. data/lib/datadog/tracing/sampling/span/rule.rb +0 -1
  527. data/lib/datadog/tracing/sampling/span/rule_parser.rb +1 -1
  528. data/lib/datadog/tracing/sampling/span/sampler.rb +0 -7
  529. data/lib/datadog/tracing/span.rb +11 -2
  530. data/lib/datadog/tracing/span_event.rb +11 -11
  531. data/lib/datadog/tracing/span_link.rb +12 -12
  532. data/lib/datadog/tracing/span_operation.rb +76 -26
  533. data/lib/datadog/tracing/sync_writer.rb +5 -4
  534. data/lib/datadog/tracing/trace_digest.rb +29 -24
  535. data/lib/datadog/tracing/trace_operation.rb +121 -97
  536. data/lib/datadog/tracing/trace_segment.rb +8 -6
  537. data/lib/datadog/tracing/tracer.rb +90 -43
  538. data/lib/datadog/tracing/transport/http/api.rb +2 -10
  539. data/lib/datadog/tracing/transport/http/client.rb +6 -5
  540. data/lib/datadog/tracing/transport/http/traces.rb +15 -43
  541. data/lib/datadog/tracing/transport/http.rb +13 -75
  542. data/lib/datadog/tracing/transport/io/client.rb +5 -5
  543. data/lib/datadog/tracing/transport/io/traces.rb +4 -4
  544. data/lib/datadog/tracing/transport/serializable_trace.rb +3 -1
  545. data/lib/datadog/tracing/transport/statistics.rb +1 -1
  546. data/lib/datadog/tracing/transport/trace_formatter.rb +7 -0
  547. data/lib/datadog/tracing/transport/traces.rb +31 -14
  548. data/lib/datadog/tracing/utils.rb +1 -1
  549. data/lib/datadog/tracing/workers/trace_writer.rb +16 -16
  550. data/lib/datadog/tracing/workers.rb +2 -2
  551. data/lib/datadog/tracing/writer.rb +4 -4
  552. data/lib/datadog/tracing.rb +16 -3
  553. data/lib/datadog/version.rb +1 -1
  554. data/lib/datadog.rb +8 -2
  555. metadata +115 -24
  556. data/ext/libdatadog_api/macos_development.md +0 -26
  557. data/lib/datadog/appsec/assets/waf_rules/processors.json +0 -92
  558. data/lib/datadog/appsec/assets/waf_rules/scanners.json +0 -114
  559. data/lib/datadog/appsec/contrib/devise/event.rb +0 -54
  560. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +0 -72
  561. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +0 -47
  562. data/lib/datadog/appsec/contrib/devise/resource.rb +0 -35
  563. data/lib/datadog/appsec/contrib/devise/tracking.rb +0 -57
  564. data/lib/datadog/appsec/processor/rule_merger.rb +0 -170
  565. data/lib/datadog/appsec/processor.rb +0 -107
  566. data/lib/datadog/appsec/utils/trace_operation.rb +0 -15
  567. data/lib/datadog/core/telemetry/http/env.rb +0 -20
  568. data/lib/datadog/core/telemetry/http/ext.rb +0 -28
  569. data/lib/datadog/core/telemetry/http/response.rb +0 -70
  570. data/lib/datadog/core/telemetry/http/transport.rb +0 -90
@@ -20,34 +20,16 @@ module Datadog
20
20
  [:agent, agent_settings.url].freeze
21
21
  end
22
22
 
23
- status, result = validate_exporter(exporter_configuration)
23
+ status, result = self.class._native_validate_exporter(exporter_configuration)
24
24
 
25
25
  raise(ArgumentError, "Failed to initialize transport: #{result}") if status == :error
26
26
  end
27
27
 
28
28
  def export(flush)
29
- status, result = do_export(
30
- exporter_configuration: exporter_configuration,
31
- upload_timeout_milliseconds: @upload_timeout_milliseconds,
32
-
33
- # why "timespec"?
34
- # libdatadog represents time using POSIX's struct timespec, see
35
- # https://www.gnu.org/software/libc/manual/html_node/Time-Types.html
36
- # aka it represents the seconds part separate from the nanoseconds part
37
- start_timespec_seconds: flush.start.tv_sec,
38
- start_timespec_nanoseconds: flush.start.tv_nsec,
39
- finish_timespec_seconds: flush.finish.tv_sec,
40
- finish_timespec_nanoseconds: flush.finish.tv_nsec,
41
-
42
- pprof_file_name: flush.pprof_file_name,
43
- pprof_data: flush.pprof_data,
44
- code_provenance_file_name: flush.code_provenance_file_name,
45
- code_provenance_data: flush.code_provenance_data,
46
-
47
- tags_as_array: flush.tags_as_array,
48
- internal_metadata_json: flush.internal_metadata_json,
49
-
50
- info_json: flush.info_json
29
+ status, result = self.class._native_do_export(
30
+ exporter_configuration,
31
+ @upload_timeout_milliseconds,
32
+ flush
51
33
  )
52
34
 
53
35
  if status == :ok
@@ -55,7 +37,7 @@ module Datadog
55
37
  Datadog.logger.debug("Successfully reported profiling data")
56
38
  true
57
39
  else
58
- Datadog.logger.error(
40
+ Datadog.logger.warn(
59
41
  "Failed to report profiling data (#{config_without_api_key}): " \
60
42
  "server returned unexpected HTTP #{result} status code"
61
43
  )
@@ -65,7 +47,7 @@ module Datadog
65
47
  false
66
48
  end
67
49
  else
68
- Datadog.logger.error("Failed to report profiling data (#{config_without_api_key}): #{result}")
50
+ Datadog.logger.warn("Failed to report profiling data (#{config_without_api_key}): #{result}")
69
51
  Datadog::Core::Telemetry::Logger.error("Failed to report profiling data")
70
52
  false
71
53
  end
@@ -74,43 +56,7 @@ module Datadog
74
56
  private
75
57
 
76
58
  def agentless?(site, api_key)
77
- site && api_key && Core::Environment::VariableHelpers.env_to_bool(Profiling::Ext::ENV_AGENTLESS, false)
78
- end
79
-
80
- def validate_exporter(exporter_configuration)
81
- self.class._native_validate_exporter(exporter_configuration)
82
- end
83
-
84
- def do_export(
85
- exporter_configuration:,
86
- upload_timeout_milliseconds:,
87
- start_timespec_seconds:,
88
- start_timespec_nanoseconds:,
89
- finish_timespec_seconds:,
90
- finish_timespec_nanoseconds:,
91
- pprof_file_name:,
92
- pprof_data:,
93
- code_provenance_file_name:,
94
- code_provenance_data:,
95
- tags_as_array:,
96
- internal_metadata_json:,
97
- info_json:
98
- )
99
- self.class._native_do_export(
100
- exporter_configuration,
101
- upload_timeout_milliseconds,
102
- start_timespec_seconds,
103
- start_timespec_nanoseconds,
104
- finish_timespec_seconds,
105
- finish_timespec_nanoseconds,
106
- pprof_file_name,
107
- pprof_data,
108
- code_provenance_file_name,
109
- code_provenance_data,
110
- tags_as_array,
111
- internal_metadata_json,
112
- info_json,
113
- )
59
+ site && api_key && %w[1 true].include?(ENV[Profiling::Ext::ENV_AGENTLESS] || '') # rubocop:disable CustomCops/EnvUsageCop
114
60
  end
115
61
 
116
62
  def config_without_api_key
@@ -50,6 +50,8 @@ module Datadog
50
50
  "Detected issue with profiler (#{failed_component} component), stopping profiling. " \
51
51
  "See previous log messages for details."
52
52
  )
53
+ Datadog::Core::Telemetry::Logger
54
+ .error("Detected issue with profiler (#{failed_component} component), stopping profiling")
53
55
 
54
56
  # We explicitly not stop the crash tracker in this situation, under the assumption that, if a component failed,
55
57
  # we're operating in a degraded state and crash tracking may still be helpful.
@@ -37,6 +37,7 @@ module Datadog
37
37
  @exporter = exporter
38
38
  @transport = transport
39
39
  @profiler_failed = false
40
+ @stop_requested = false
40
41
 
41
42
  # Workers::Async::Thread settings
42
43
  self.fork_policy = fork_policy
@@ -67,6 +68,7 @@ module Datadog
67
68
  "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}"
68
69
  )
69
70
  on_failure_proc&.call
71
+ Datadog::Core::Telemetry::Logger.report(e, description: "Profiling::Scheduler thread error")
70
72
  raise
71
73
  ensure
72
74
  Datadog.logger.debug("#flush was interrupted or failed before it could complete") if interrupted
@@ -88,7 +90,7 @@ module Datadog
88
90
  end
89
91
 
90
92
  def work_pending?
91
- !profiler_failed && exporter.can_flush?
93
+ !profiler_failed && exporter.can_flush? && (run_loop? || !stop_requested?)
92
94
  end
93
95
 
94
96
  def reset_after_fork
@@ -132,14 +134,20 @@ module Datadog
132
134
  begin
133
135
  transport.export(flush)
134
136
  rescue => e
135
- Datadog.logger.error(
137
+ Datadog.logger.warn(
136
138
  "Unable to report profile. Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}"
137
139
  )
138
140
  Datadog::Core::Telemetry::Logger.report(e, description: "Unable to report profile")
139
141
  end
140
142
 
143
+ @stop_requested = !run_loop?
144
+
141
145
  true
142
146
  end
147
+
148
+ def stop_requested?
149
+ @stop_requested
150
+ end
143
151
  end
144
152
  end
145
153
  end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../core/utils/forking'
4
+
5
+ module Datadog
6
+ module Profiling
7
+ # Used to generate the `profile_seq` tag, which effectively counts how many profiles we've attempted to report
8
+ # from a given runtime-id.
9
+ #
10
+ # Note that the above implies a few things:
11
+ # 1. The sequence number only gets incremented when we decide to report a profile and create a `Flush` for it
12
+ # 2. The `SequenceTracker` must live across profiler reconfigurations and resets, since no matter how many
13
+ # profiler instances get created due to reconfiguration, the runtime-id is still the same, so the sequence number
14
+ # should be kept and not restarted from 0
15
+ # 3. The `SequenceTracker` must be reset after a fork, since the runtime-id will change, and we want to start
16
+ # counting from 0 again
17
+ #
18
+ # This is why this module is implemented as a singleton that we reuse, not as an instance that we recreate.
19
+ #
20
+ # Note that this module is not thread-safe, so it's up to the callers to make sure
21
+ # it's only used by a single thread at a time (which is what the `Profiling::Exporter`)
22
+ # is doing.
23
+ module SequenceTracker
24
+ class << self
25
+ include Core::Utils::Forking
26
+
27
+ def get_next
28
+ reset! unless defined?(@sequence_number)
29
+ after_fork! { reset! }
30
+
31
+ next_seq = @sequence_number
32
+ @sequence_number += 1
33
+ next_seq
34
+ end
35
+
36
+ private
37
+
38
+ def reset!
39
+ @sequence_number = 0
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -23,7 +23,7 @@ module Datadog
23
23
  # This isn't something we expect to happen normally, but because it would break the assumptions of the
24
24
  # C-level mutexes (that there is a single serializer thread), we add it here as an extra safeguard against it
25
25
  # accidentally happening.
26
- @no_concurrent_synchronize_mutex = Mutex.new
26
+ @no_concurrent_serialize_mutex = Mutex.new
27
27
 
28
28
  self.class._native_initialize(
29
29
  self_instance: self,
@@ -60,31 +60,31 @@ module Datadog
60
60
  end
61
61
 
62
62
  def serialize
63
- status, result = @no_concurrent_synchronize_mutex.synchronize { self.class._native_serialize(self) }
63
+ status, result = @no_concurrent_serialize_mutex.synchronize { self.class._native_serialize(self) }
64
64
 
65
65
  if status == :ok
66
- start, finish, encoded_pprof, profile_stats = result
66
+ start, finish, encoded_profile, profile_stats = result
67
67
 
68
68
  Datadog.logger.debug { "Encoded profile covering #{start.iso8601} to #{finish.iso8601}" }
69
69
 
70
- [start, finish, encoded_pprof, profile_stats]
70
+ [start, finish, encoded_profile, profile_stats]
71
71
  else
72
72
  error_message = result
73
73
 
74
- Datadog.logger.error("Failed to serialize profiling data: #{error_message}")
75
- Datadog::Core::Telemetry::Logger.error("Failed to serialize profiling data")
74
+ Datadog.logger.warn("Failed to serialize profiling data: #{error_message}")
75
+ Datadog::Core::Telemetry::Logger.error("Failed to serialize profiling data (#{error_message})")
76
76
 
77
77
  nil
78
78
  end
79
79
  end
80
80
 
81
81
  def serialize!
82
- status, result = @no_concurrent_synchronize_mutex.synchronize { self.class._native_serialize(self) }
82
+ status, result = @no_concurrent_serialize_mutex.synchronize { self.class._native_serialize(self) }
83
83
 
84
84
  if status == :ok
85
- _start, _finish, encoded_pprof = result
85
+ _start, _finish, encoded_profile = result
86
86
 
87
- encoded_pprof
87
+ encoded_profile
88
88
  else
89
89
  error_message = result
90
90
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../core/tag_builder"
3
4
  require_relative "../core/utils"
4
- require_relative "../core/environment/git"
5
5
 
6
6
  module Datadog
7
7
  module Profiling
@@ -11,49 +11,15 @@ module Datadog
11
11
 
12
12
  def self.call(
13
13
  settings:,
14
- # Unified service tagging
15
- env: settings.env,
16
- service: settings.service,
17
- version: settings.version,
18
14
  # Other metadata
19
- host: Core::Environment::Socket.hostname,
20
- language: Core::Environment::Identity.lang,
21
- pid: Process.pid.to_s,
22
- # TODO: If profiling is extracted and its version diverges from the datadog gem, this is inaccurate.
23
- # Update if this ever occurs.
24
- profiler_version: Core::Environment::Identity.gem_datadog_version,
25
- runtime_engine: Core::Environment::Identity.lang_engine,
26
- runtime_id: Core::Environment::Identity.id,
27
- runtime_platform: Core::Environment::Identity.lang_platform,
28
- runtime_version: Core::Environment::Identity.lang_version,
29
- git_repository_url: Core::Environment::Git.git_repository_url,
30
- git_commit_sha: Core::Environment::Git.git_commit_sha,
31
- # User-provided tags
32
- user_tags: settings.tags
15
+ profile_seq:,
16
+ profiler_version: Core::Environment::Identity.gem_datadog_version
33
17
  )
34
- tags = {
35
- # When changing or adding these, make sure they are kept in sync with
36
- # https://docs.google.com/spreadsheets/d/1LOGMf4c4Avbtn36uZ2SWvhIGKRPLM1BoWkUP4JYj7hA/ (Datadog internal link)
37
- FORM_FIELD_TAG_HOST => host,
38
- FORM_FIELD_TAG_LANGUAGE => language,
39
- FORM_FIELD_TAG_PID => pid,
18
+ hash = Core::TagBuilder.tags(settings).merge(
40
19
  FORM_FIELD_TAG_PROFILER_VERSION => profiler_version,
41
- FORM_FIELD_TAG_RUNTIME => language, # This is known to be repeated from language, above
42
- FORM_FIELD_TAG_RUNTIME_ENGINE => runtime_engine,
43
- FORM_FIELD_TAG_RUNTIME_ID => runtime_id,
44
- FORM_FIELD_TAG_RUNTIME_PLATFORM => runtime_platform,
45
- FORM_FIELD_TAG_RUNTIME_VERSION => runtime_version,
46
- }
47
- tags[FORM_FIELD_TAG_ENV] = env if env
48
- tags[FORM_FIELD_TAG_SERVICE] = service if service
49
- tags[FORM_FIELD_TAG_VERSION] = version if version
50
- tags[TAG_GIT_REPOSITORY_URL] = git_repository_url if git_repository_url
51
- tags[TAG_GIT_COMMIT_SHA] = git_commit_sha if git_commit_sha
52
-
53
- # Make sure everything is an utf-8 string, to avoid encoding issues in native code/libddprof/further downstream
54
- user_tags.merge(tags).map do |key, value|
55
- [Datadog::Core::Utils.utf8_encode(key), Datadog::Core::Utils.utf8_encode(value)]
56
- end.to_h
20
+ 'profile_seq' => profile_seq.to_s,
21
+ )
22
+ Core::Utils.encode_tags(hash)
57
23
  end
58
24
  end
59
25
  end
@@ -25,9 +25,9 @@ module Datadog
25
25
  private
26
26
 
27
27
  def set_rubyopt!
28
- existing_rubyopt = ENV["RUBYOPT"]
28
+ existing_rubyopt = ENV["RUBYOPT"] # rubocop:disable CustomCops/EnvUsageCop
29
29
 
30
- ENV["RUBYOPT"] = existing_rubyopt ? "#{existing_rubyopt} #{rubyopts.join(" ")}" : rubyopts.join(" ")
30
+ ENV["RUBYOPT"] = existing_rubyopt ? "#{existing_rubyopt} #{rubyopts.join(" ")}" : rubyopts.join(" ") # rubocop:disable CustomCops/EnvUsageCop
31
31
  end
32
32
 
33
33
  # If there's an error here, rather than throwing a cryptic stack trace, let's instead have clearer messages, and
@@ -19,6 +19,7 @@ module Datadog
19
19
  "Profiler extensions unavailable. Cause: #{e.class.name} #{e.message} " \
20
20
  "Location: #{Array(e.backtrace).first}"
21
21
  end
22
+ Datadog::Core::Telemetry::Logger.report(e, description: "Profiler extensions unavailable")
22
23
  end
23
24
  end
24
25
 
@@ -33,6 +34,7 @@ module Datadog
33
34
  "Error during post-fork hooks. Cause: #{e.class.name} #{e.message} " \
34
35
  "Location: #{Array(e.backtrace).first}"
35
36
  end
37
+ Datadog::Core::Telemetry::Logger.report(e, description: "Error during post-fork hooks")
36
38
  end
37
39
  end
38
40
  end
@@ -78,8 +78,11 @@ module Datadog
78
78
  end
79
79
 
80
80
  private_class_method def self.replace_noop_allocation_count
81
- def self.allocation_count # rubocop:disable Lint/NestedMethodDefinition (On purpose!)
82
- Datadog::Profiling::Collectors::CpuAndWallTimeWorker._native_allocation_count
81
+ class << self
82
+ remove_method :allocation_count
83
+ def allocation_count
84
+ Datadog::Profiling::Collectors::CpuAndWallTimeWorker._native_allocation_count
85
+ end
83
86
  end
84
87
  end
85
88
 
@@ -118,15 +121,13 @@ module Datadog
118
121
  end
119
122
 
120
123
  private_class_method def self.try_loading_native_library
121
- begin
122
- require_relative 'profiling/load_native_extension'
124
+ require_relative 'profiling/load_native_extension'
123
125
 
124
- success =
125
- defined?(Profiling::NativeExtension) && Profiling::NativeExtension.send(:native_working?)
126
- [success, nil]
127
- rescue StandardError, LoadError => e
128
- [false, e]
129
- end
126
+ success =
127
+ defined?(Profiling::NativeExtension) && Profiling::NativeExtension.send(:native_working?)
128
+ [success, nil]
129
+ rescue StandardError, LoadError => e
130
+ [false, e]
130
131
  end
131
132
 
132
133
  # All requires for the profiler should be directly added here; and everything should be loaded eagerly.
@@ -146,6 +147,7 @@ module Datadog
146
147
  require_relative 'profiling/collectors/thread_context'
147
148
  require_relative 'profiling/stack_recorder'
148
149
  require_relative 'profiling/exporter'
150
+ require_relative 'profiling/encoded_profile'
149
151
  require_relative 'profiling/flush'
150
152
  require_relative 'profiling/scheduler'
151
153
  require_relative 'profiling/tasks/setup'
@@ -153,6 +155,7 @@ module Datadog
153
155
  require_relative 'profiling/native_extension'
154
156
  require_relative 'profiling/tag_builder'
155
157
  require_relative 'profiling/http_transport'
158
+ require_relative 'profiling/sequence_tracker'
156
159
 
157
160
  replace_noop_allocation_count
158
161
 
@@ -5,8 +5,17 @@
5
5
  #
6
6
  # This file's path is private. Do not reference this file.
7
7
  #
8
+
9
+ module Datadog
10
+ # This module handles conditional loading of single step auto-instrumentation,
11
+ # which enables Datadog tracing and profiling features when available.
12
+ module SingleStepInstrument
13
+ end
14
+ end
15
+
8
16
  begin
9
17
  require_relative 'auto_instrument'
18
+ Datadog::SingleStepInstrument::LOADED = true
10
19
  rescue StandardError, LoadError => e
11
20
  warn "Single step instrumentation failed: #{e.class}:#{e.message}\n\tSource:\n\t#{Array(e.backtrace).join("\n\t")}"
12
21
  end
@@ -16,7 +16,7 @@ module Datadog
16
16
  def set_measured(span_op, value = true)
17
17
  return if span_op.nil?
18
18
 
19
- value = value == true || value == 1 ? 1 : 0 # rubocop:disable Style/MultipleComparison
19
+ value = (value == true || value == 1) ? 1 : 0
20
20
  span_op.set_metric(Metadata::Ext::Analytics::TAG_MEASURED, value)
21
21
  end
22
22
  end
@@ -54,7 +54,7 @@ module Datadog
54
54
  @buffer_accepted_lengths += trace.length
55
55
 
56
56
  @buffer_spans += trace.length
57
- rescue StandardError => e
57
+ rescue => e
58
58
  Datadog.logger.debug(
59
59
  "Failed to measure queue accept. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
60
60
  )
@@ -64,7 +64,7 @@ module Datadog
64
64
  @buffer_dropped += 1
65
65
 
66
66
  @buffer_spans -= trace.length
67
- rescue StandardError => e
67
+ rescue => e
68
68
  Datadog.logger.debug(
69
69
  "Failed to measure queue drop. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
70
70
  )
@@ -89,7 +89,7 @@ module Datadog
89
89
  @buffer_accepted_lengths = 0
90
90
  @buffer_dropped = 0
91
91
  @buffer_spans = 0
92
- rescue StandardError => e
92
+ rescue => e
93
93
  Datadog.logger.debug(
94
94
  "Failed to measure queue. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
95
95
  )
@@ -121,9 +121,9 @@ module Datadog
121
121
  # TODO We should restructure this module, so that classes are not declared at top-level ::Datadog.
122
122
  # TODO Making such a change is potentially breaking for users manually configuring the tracer.
123
123
  TraceBuffer = if Core::Environment::Ext::RUBY_ENGINE == 'ruby'
124
- CRubyTraceBuffer
125
- else
126
- ThreadSafeTraceBuffer
127
- end
124
+ CRubyTraceBuffer
125
+ else
126
+ ThreadSafeTraceBuffer
127
+ end
128
128
  end
129
129
  end
@@ -6,21 +6,13 @@ require_relative 'sync_writer'
6
6
  require_relative 'sampling/span/rule_parser'
7
7
  require_relative 'sampling/span/sampler'
8
8
  require_relative 'diagnostics/environment_logger'
9
+ require_relative 'contrib/component'
9
10
 
10
11
  module Datadog
11
12
  module Tracing
12
13
  # Tracing component
13
14
  module Component
14
- # Methods that interact with component instance fields.
15
- module InstanceMethods
16
- # Hot-swaps with a new sampler.
17
- # This operation acquires the Components lock to ensure
18
- # there is no concurrent modification of the sampler.
19
- def reconfigure_live_sampler
20
- sampler = self.class.build_sampler(Datadog.configuration)
21
- Datadog.send(:safely_synchronize) { tracer.sampler.sampler = sampler }
22
- end
23
- end
15
+ module_function
24
16
 
25
17
  def build_tracer(settings, agent_settings, logger:)
26
18
  # If a custom tracer has been provided, use it instead.
@@ -74,18 +66,11 @@ module Datadog
74
66
  return sampler
75
67
  end
76
68
 
77
- # AppSec events are sent to the backend using traces.
78
- # Standalone ASM billing means that we don't want to charge clients for APM traces,
79
- # so we want to send the minimum amount of traces possible (idealy only traces that contains security events),
80
- # but for features such as API Security, we need to send at least one trace per minute,
81
- # to keep the service alive on the backend side.
82
- if settings.appsec.standalone.enabled
83
- post_sampler = Tracing::Sampling::RuleSampler.new(
84
- [Tracing::Sampling::SimpleRule.new(sample_rate: 1.0)],
85
- rate_limiter: Datadog::Core::TokenBucket.new(1.0 / 60, 1.0),
86
- default_sample_rate: 1.0 / 60
87
- )
88
- end
69
+ # APM Disablement means that we don't want to send traces that only contains APM data.
70
+ # Other products can then put the sampling priority to MANUAL_KEEP if they want to keep traces.
71
+ # (e.g.: AppSec will MANUAL_KEEP traces with AppSec events) and clients will be billed only for those traces.
72
+ # But to keep the service alive on the backend side, we need to send one trace per minute.
73
+ post_sampler = build_rate_limit_post_sampler(seconds: 60) unless settings.apm.tracing.enabled
89
74
 
90
75
  # Sampling rules are provided
91
76
  if (rules = settings.tracing.sampling.rules)
@@ -162,11 +147,6 @@ module Datadog
162
147
  Tracing::Sampling::Span::Sampler.new(rules || [])
163
148
  end
164
149
 
165
- # Configure non-privileged components.
166
- def configure_tracing(settings)
167
- Datadog::Tracing::Contrib::Component.configure(settings)
168
- end
169
-
170
150
  # Sampler wrapper component, to allow for hot-swapping
171
151
  # the sampler instance used by the tracer.
172
152
  # Swapping samplers happens during Dynamic Configuration.
@@ -188,8 +168,7 @@ module Datadog
188
168
  end
189
169
  end
190
170
 
191
- private
192
-
171
+ # @api private
193
172
  def build_tracer_tags(settings)
194
173
  settings.tags.dup.tap do |tags|
195
174
  tags[Core::Environment::Ext::TAG_ENV] = settings.env unless settings.env.nil?
@@ -197,11 +176,23 @@ module Datadog
197
176
  end
198
177
  end
199
178
 
179
+ # Build a post-sampler that limits the rate of traces to one per `seconds`.
180
+ # E.g.: `build_rate_limit_post_sampler(seconds: 60)` will limit the rate to one trace per minute.
181
+ # @api private
182
+ def build_rate_limit_post_sampler(seconds:)
183
+ Tracing::Sampling::RuleSampler.new(
184
+ rate_limiter: Datadog::Core::TokenBucket.new(1.0 / seconds, 1.0),
185
+ default_sample_rate: 1.0
186
+ )
187
+ end
188
+
189
+ # @api private
200
190
  def build_test_mode_trace_flush(settings)
201
191
  # If context flush behavior is provided, use it instead.
202
192
  settings.tracing.test_mode.trace_flush || build_trace_flush(settings)
203
193
  end
204
194
 
195
+ # @api private
205
196
  def build_test_mode_sampler
206
197
  # Do not sample any spans for tests; all must be preserved.
207
198
  # Set priority sampler to ensure the agent doesn't drop any traces.
@@ -211,6 +202,7 @@ module Datadog
211
202
  )
212
203
  end
213
204
 
205
+ # @api private
214
206
  def build_test_mode_writer(settings, agent_settings)
215
207
  writer_options = settings.tracing.test_mode.writer_options || {}
216
208
 
@@ -24,13 +24,11 @@ module Datadog
24
24
  def call(tracing_header_tags)
25
25
  # Modify the remote configuration value that it matches the
26
26
  # environment variable it configures.
27
- if tracing_header_tags
28
- tracing_header_tags.map! do |hash|
29
- "#{hash['header']}:#{hash['tag_name']}"
30
- end
27
+ tracing_header_tags&.map! do |hash|
28
+ "#{hash["header"]}:#{hash["tag_name"]}"
31
29
  end
32
30
 
33
- super(tracing_header_tags)
31
+ super
34
32
  end
35
33
  end
36
34
 
@@ -43,7 +41,7 @@ module Datadog
43
41
  # Ensures sampler is rebuilt and new configuration is applied
44
42
  def call(tracing_sampling_rate)
45
43
  super
46
- Datadog.send(:components).reconfigure_live_sampler
44
+ Datadog.send(:components).reconfigure_sampler
47
45
  end
48
46
 
49
47
  protected
@@ -80,8 +78,8 @@ module Datadog
80
78
  tracing_sampling_rules = tracing_sampling_rules.to_json
81
79
  end
82
80
 
83
- super(tracing_sampling_rules)
84
- Datadog.send(:components).reconfigure_live_sampler
81
+ super
82
+ Datadog.send(:components).reconfigure_sampler
85
83
  end
86
84
 
87
85
  protected
@@ -9,9 +9,10 @@ module Datadog
9
9
  # e.g. Env vars, default values, enums, etc...
10
10
  module Ext
11
11
  ENV_ENABLED = 'DD_TRACE_ENABLED'
12
- ENV_OTEL_TRACES_EXPORTER = 'OTEL_TRACES_EXPORTER'
13
12
  ENV_HEADER_TAGS = 'DD_TRACE_HEADER_TAGS'
13
+ ENV_BAGGAGE_TAG_KEYS = 'DD_TRACE_BAGGAGE_TAG_KEYS'
14
14
  ENV_TRACE_ID_128_BIT_GENERATION_ENABLED = 'DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED'
15
+ ENV_NATIVE_SPAN_EVENTS = 'DD_TRACE_NATIVE_SPAN_EVENTS'
15
16
 
16
17
  # @public_api
17
18
  module SpanAttributeSchema
@@ -41,14 +42,18 @@ module Datadog
41
42
  # W3C Trace Context
42
43
  PROPAGATION_STYLE_TRACE_CONTEXT = 'tracecontext'
43
44
 
45
+ # W3C Baggage
46
+ # @see https://www.w3.org/TR/baggage/
47
+ PROPAGATION_STYLE_BAGGAGE = 'baggage'
48
+
44
49
  PROPAGATION_STYLE_SUPPORTED = [PROPAGATION_STYLE_DATADOG, PROPAGATION_STYLE_B3_MULTI_HEADER,
45
- PROPAGATION_STYLE_B3_SINGLE_HEADER, PROPAGATION_STYLE_TRACE_CONTEXT].freeze
50
+ PROPAGATION_STYLE_B3_SINGLE_HEADER, PROPAGATION_STYLE_TRACE_CONTEXT,
51
+ PROPAGATION_STYLE_BAGGAGE].freeze
46
52
 
47
53
  # Sets both extract and inject propagation style tho the provided value.
48
54
  # Has lower precedence than `DD_TRACE_PROPAGATION_STYLE_INJECT` or
49
55
  # `DD_TRACE_PROPAGATION_STYLE_EXTRACT`.
50
56
  ENV_PROPAGATION_STYLE = 'DD_TRACE_PROPAGATION_STYLE'
51
- ENV_OTEL_PROPAGATION_STYLE = 'OTEL_PROPAGATORS'
52
57
 
53
58
  ENV_PROPAGATION_STYLE_INJECT = 'DD_TRACE_PROPAGATION_STYLE_INJECT'
54
59
 
@@ -74,7 +79,6 @@ module Datadog
74
79
  ENV_SAMPLE_RATE = 'DD_TRACE_SAMPLE_RATE'
75
80
  ENV_RATE_LIMIT = 'DD_TRACE_RATE_LIMIT'
76
81
  ENV_RULES = 'DD_TRACE_SAMPLING_RULES'
77
- ENV_OTEL_TRACES_SAMPLER = 'OTEL_TRACES_SAMPLER'
78
82
  OTEL_TRACES_SAMPLER_ARG = 'OTEL_TRACES_SAMPLER_ARG'
79
83
 
80
84
  # @public_api