ddtrace 1.2.0 → 1.10.1

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 (766) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +442 -2
  3. data/LICENSE-3rdparty.csv +4 -0
  4. data/README.md +2 -2
  5. data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +20 -4
  6. data/ext/ddtrace_profiling_loader/extconf.rb +21 -3
  7. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +46 -3
  8. data/ext/ddtrace_profiling_native_extension/clock_id.h +21 -0
  9. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +33 -2
  10. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +10 -1
  11. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +821 -0
  12. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c +142 -0
  13. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h +14 -0
  14. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +241 -0
  15. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
  16. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +186 -85
  17. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +13 -2
  18. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +978 -0
  19. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +14 -0
  20. data/ext/ddtrace_profiling_native_extension/extconf.rb +54 -34
  21. data/ext/ddtrace_profiling_native_extension/helpers.h +17 -0
  22. data/ext/ddtrace_profiling_native_extension/http_transport.c +127 -121
  23. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +25 -0
  24. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +82 -37
  25. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +189 -139
  26. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +15 -6
  27. data/ext/ddtrace_profiling_native_extension/profiling.c +221 -5
  28. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +110 -0
  29. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +57 -1
  30. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.c +115 -0
  31. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.h +11 -0
  32. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +489 -45
  33. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +12 -35
  34. data/ext/ddtrace_profiling_native_extension/time_helpers.c +17 -0
  35. data/ext/ddtrace_profiling_native_extension/time_helpers.h +10 -0
  36. data/lib/datadog/appsec/assets/blocked.html +98 -3
  37. data/lib/datadog/appsec/assets/blocked.json +1 -0
  38. data/lib/datadog/appsec/assets/blocked.text +5 -0
  39. data/lib/datadog/appsec/assets/waf_rules/recommended.json +1722 -636
  40. data/lib/datadog/appsec/assets/waf_rules/strict.json +366 -74
  41. data/lib/datadog/appsec/assets.rb +2 -4
  42. data/lib/datadog/appsec/autoload.rb +5 -10
  43. data/lib/datadog/appsec/component.rb +41 -0
  44. data/lib/datadog/appsec/configuration/settings.rb +46 -24
  45. data/lib/datadog/appsec/configuration.rb +12 -4
  46. data/lib/datadog/appsec/contrib/auto_instrument.rb +0 -4
  47. data/lib/datadog/appsec/contrib/configuration/settings.rb +1 -3
  48. data/lib/datadog/appsec/contrib/integration.rb +0 -2
  49. data/lib/datadog/appsec/contrib/patcher.rb +0 -2
  50. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +2 -4
  51. data/lib/datadog/appsec/contrib/rack/ext.rb +0 -2
  52. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +97 -0
  53. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
  54. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +117 -110
  55. data/lib/datadog/appsec/contrib/rack/integration.rb +5 -7
  56. data/lib/datadog/appsec/contrib/rack/patcher.rb +4 -4
  57. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +31 -38
  58. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +21 -22
  59. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +21 -22
  60. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +9 -7
  61. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +80 -39
  62. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +2 -4
  63. data/lib/datadog/appsec/contrib/rails/ext.rb +0 -2
  64. data/lib/datadog/appsec/contrib/rails/framework.rb +0 -2
  65. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
  66. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +45 -40
  67. data/lib/datadog/appsec/contrib/rails/integration.rb +5 -7
  68. data/lib/datadog/appsec/contrib/rails/patcher.rb +17 -16
  69. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +24 -23
  70. data/lib/datadog/appsec/contrib/rails/request.rb +3 -2
  71. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +0 -2
  72. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +2 -4
  73. data/lib/datadog/appsec/contrib/sinatra/ext.rb +1 -2
  74. data/lib/datadog/appsec/contrib/sinatra/framework.rb +0 -2
  75. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
  76. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
  77. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +82 -75
  78. data/lib/datadog/appsec/contrib/sinatra/integration.rb +4 -6
  79. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +33 -18
  80. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +21 -20
  81. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +0 -2
  82. data/lib/datadog/appsec/event.rb +8 -16
  83. data/lib/datadog/appsec/ext.rb +9 -0
  84. data/lib/datadog/appsec/extensions.rb +51 -23
  85. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +24 -0
  86. data/lib/datadog/appsec/instrumentation/gateway.rb +26 -6
  87. data/lib/datadog/appsec/instrumentation.rb +9 -0
  88. data/lib/datadog/appsec/monitor/gateway/watcher.rb +86 -0
  89. data/lib/datadog/appsec/monitor/reactive/set_user.rb +61 -0
  90. data/lib/datadog/appsec/monitor.rb +11 -0
  91. data/lib/datadog/appsec/processor.rb +110 -31
  92. data/lib/datadog/appsec/rate_limiter.rb +0 -2
  93. data/lib/datadog/appsec/reactive/address_hash.rb +6 -2
  94. data/lib/datadog/appsec/reactive/engine.rb +12 -9
  95. data/lib/datadog/appsec/reactive/operation.rb +22 -5
  96. data/lib/datadog/appsec/reactive/subscriber.rb +2 -1
  97. data/lib/datadog/appsec/response.rb +61 -0
  98. data/lib/datadog/appsec/utils/http/media_range.rb +199 -0
  99. data/lib/datadog/appsec/utils/http/media_type.rb +85 -0
  100. data/lib/datadog/appsec/utils/http.rb +9 -0
  101. data/lib/datadog/appsec/utils.rb +7 -0
  102. data/lib/datadog/appsec.rb +25 -7
  103. data/lib/datadog/ci/configuration/components.rb +1 -3
  104. data/lib/datadog/ci/configuration/settings.rb +1 -3
  105. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +2 -4
  106. data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -2
  107. data/lib/datadog/ci/contrib/cucumber/formatter.rb +5 -7
  108. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +1 -3
  109. data/lib/datadog/ci/contrib/cucumber/integration.rb +4 -6
  110. data/lib/datadog/ci/contrib/cucumber/patcher.rb +2 -4
  111. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +2 -4
  112. data/lib/datadog/ci/contrib/rspec/example.rb +5 -7
  113. data/lib/datadog/ci/contrib/rspec/ext.rb +0 -2
  114. data/lib/datadog/ci/contrib/rspec/integration.rb +4 -6
  115. data/lib/datadog/ci/contrib/rspec/patcher.rb +2 -4
  116. data/lib/datadog/ci/ext/app_types.rb +0 -2
  117. data/lib/datadog/ci/ext/environment.rb +77 -41
  118. data/lib/datadog/ci/ext/settings.rb +0 -2
  119. data/lib/datadog/ci/ext/test.rb +0 -2
  120. data/lib/datadog/ci/extensions.rb +4 -6
  121. data/lib/datadog/ci/flush.rb +2 -4
  122. data/lib/datadog/ci/test.rb +3 -5
  123. data/lib/datadog/ci.rb +6 -8
  124. data/lib/datadog/core/buffer/cruby.rb +1 -3
  125. data/lib/datadog/core/buffer/random.rb +0 -2
  126. data/lib/datadog/core/buffer/thread_safe.rb +1 -3
  127. data/lib/datadog/core/chunker.rb +0 -2
  128. data/lib/datadog/core/configuration/agent_settings_resolver.rb +8 -28
  129. data/lib/datadog/core/configuration/base.rb +14 -4
  130. data/lib/datadog/core/configuration/components.rb +31 -299
  131. data/lib/datadog/core/configuration/dependency_resolver.rb +0 -2
  132. data/lib/datadog/core/configuration/ext.rb +24 -0
  133. data/lib/datadog/core/configuration/option.rb +0 -2
  134. data/lib/datadog/core/configuration/option_definition.rb +12 -5
  135. data/lib/datadog/core/configuration/option_definition_set.rb +1 -3
  136. data/lib/datadog/core/configuration/option_set.rb +0 -2
  137. data/lib/datadog/core/configuration/options.rb +3 -5
  138. data/lib/datadog/core/configuration/settings.rb +87 -257
  139. data/lib/datadog/core/configuration.rb +9 -10
  140. data/lib/datadog/core/diagnostics/environment_logger.rb +10 -7
  141. data/lib/datadog/core/diagnostics/health.rb +4 -24
  142. data/lib/datadog/core/encoding.rb +0 -4
  143. data/lib/datadog/core/environment/cgroup.rb +1 -5
  144. data/lib/datadog/core/environment/class_count.rb +0 -2
  145. data/lib/datadog/core/environment/container.rb +1 -5
  146. data/lib/datadog/core/environment/ext.rb +1 -3
  147. data/lib/datadog/core/environment/gc.rb +0 -2
  148. data/lib/datadog/core/environment/identity.rb +2 -4
  149. data/lib/datadog/core/environment/platform.rb +1 -3
  150. data/lib/datadog/core/environment/socket.rb +1 -3
  151. data/lib/datadog/core/environment/thread_count.rb +0 -2
  152. data/lib/datadog/core/environment/variable_helpers.rb +58 -12
  153. data/lib/datadog/core/environment/vm_cache.rb +17 -2
  154. data/lib/datadog/core/error.rb +1 -3
  155. data/lib/datadog/core/extensions.rb +1 -3
  156. data/lib/datadog/core/git/ext.rb +0 -2
  157. data/lib/datadog/core/header_collection.rb +41 -0
  158. data/lib/datadog/core/logger.rb +0 -2
  159. data/lib/datadog/core/metrics/client.rb +10 -11
  160. data/lib/datadog/core/metrics/ext.rb +0 -4
  161. data/lib/datadog/core/metrics/helpers.rb +0 -2
  162. data/lib/datadog/core/metrics/logging.rb +0 -2
  163. data/lib/datadog/core/metrics/metric.rb +0 -2
  164. data/lib/datadog/core/metrics/options.rb +3 -5
  165. data/lib/datadog/core/pin.rb +0 -2
  166. data/lib/datadog/core/runtime/ext.rb +3 -3
  167. data/lib/datadog/core/runtime/metrics.rb +27 -13
  168. data/lib/datadog/core/telemetry/client.rb +77 -0
  169. data/lib/datadog/core/telemetry/collector.rb +231 -0
  170. data/lib/datadog/core/telemetry/emitter.rb +46 -0
  171. data/lib/datadog/core/telemetry/event.rb +67 -0
  172. data/lib/datadog/core/telemetry/ext.rb +9 -0
  173. data/lib/datadog/core/telemetry/heartbeat.rb +35 -0
  174. data/lib/datadog/core/telemetry/http/adapters/net.rb +111 -0
  175. data/lib/datadog/core/telemetry/http/env.rb +18 -0
  176. data/lib/datadog/core/telemetry/http/ext.rb +20 -0
  177. data/lib/datadog/core/telemetry/http/response.rb +64 -0
  178. data/lib/datadog/core/telemetry/http/transport.rb +51 -0
  179. data/lib/datadog/core/telemetry/v1/app_event.rb +50 -0
  180. data/lib/datadog/core/telemetry/v1/application.rb +86 -0
  181. data/lib/datadog/core/telemetry/v1/configuration.rb +25 -0
  182. data/lib/datadog/core/telemetry/v1/dependency.rb +36 -0
  183. data/lib/datadog/core/telemetry/v1/host.rb +51 -0
  184. data/lib/datadog/core/telemetry/v1/integration.rb +58 -0
  185. data/lib/datadog/core/telemetry/v1/product.rb +28 -0
  186. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +100 -0
  187. data/lib/datadog/core/utils/compression.rb +5 -3
  188. data/lib/datadog/core/utils/forking.rb +0 -2
  189. data/lib/datadog/core/utils/network.rb +140 -0
  190. data/lib/datadog/core/utils/object_set.rb +1 -3
  191. data/lib/datadog/core/utils/only_once.rb +0 -2
  192. data/lib/datadog/core/utils/safe_dup.rb +0 -2
  193. data/lib/datadog/core/utils/sequence.rb +5 -2
  194. data/lib/datadog/core/utils/string_table.rb +1 -3
  195. data/lib/datadog/core/utils/time.rb +3 -7
  196. data/lib/datadog/core/utils.rb +1 -24
  197. data/lib/datadog/core/vendor/ipaddr.rb +78 -0
  198. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -2
  199. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +2 -4
  200. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +0 -2
  201. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +0 -2
  202. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +0 -2
  203. data/lib/datadog/core/vendor/multipart-post/multipart.rb +0 -2
  204. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +3 -5
  205. data/lib/datadog/core/worker.rb +0 -2
  206. data/lib/datadog/core/workers/async.rb +1 -5
  207. data/lib/datadog/core/workers/interval_loop.rb +0 -2
  208. data/lib/datadog/core/workers/polling.rb +2 -4
  209. data/lib/datadog/core/workers/queue.rb +0 -2
  210. data/lib/datadog/core/workers/runtime_metrics.rb +4 -6
  211. data/lib/datadog/core.rb +21 -56
  212. data/lib/datadog/kit/appsec/events.rb +74 -0
  213. data/lib/datadog/kit/enable_core_dumps.rb +6 -6
  214. data/lib/datadog/kit/identity.rb +15 -8
  215. data/lib/datadog/kit.rb +1 -3
  216. data/lib/datadog/opentelemetry/api/context.rb +186 -0
  217. data/lib/datadog/opentelemetry/api/trace/span.rb +14 -0
  218. data/lib/datadog/opentelemetry/sdk/configurator.rb +37 -0
  219. data/lib/datadog/opentelemetry/sdk/id_generator.rb +26 -0
  220. data/lib/datadog/opentelemetry/sdk/propagator.rb +90 -0
  221. data/lib/datadog/opentelemetry/sdk/span_processor.rb +91 -0
  222. data/lib/datadog/opentelemetry.rb +47 -0
  223. data/lib/datadog/opentracer/binary_propagator.rb +0 -2
  224. data/lib/datadog/opentracer/carrier.rb +0 -2
  225. data/lib/datadog/opentracer/distributed_headers.rb +7 -11
  226. data/lib/datadog/opentracer/global_tracer.rb +0 -2
  227. data/lib/datadog/opentracer/propagator.rb +0 -2
  228. data/lib/datadog/opentracer/rack_propagator.rb +10 -11
  229. data/lib/datadog/opentracer/scope.rb +0 -2
  230. data/lib/datadog/opentracer/scope_manager.rb +0 -2
  231. data/lib/datadog/opentracer/span.rb +1 -3
  232. data/lib/datadog/opentracer/span_context.rb +0 -2
  233. data/lib/datadog/opentracer/span_context_factory.rb +0 -2
  234. data/lib/datadog/opentracer/text_map_propagator.rb +13 -14
  235. data/lib/datadog/opentracer/thread_local_scope.rb +0 -2
  236. data/lib/datadog/opentracer/thread_local_scope_manager.rb +1 -3
  237. data/lib/datadog/opentracer/tracer.rb +23 -23
  238. data/lib/datadog/opentracer.rb +16 -18
  239. data/lib/datadog/profiling/backtrace_location.rb +0 -2
  240. data/lib/datadog/profiling/buffer.rb +3 -5
  241. data/lib/datadog/profiling/collectors/code_provenance.rb +0 -2
  242. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +96 -0
  243. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +12 -0
  244. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +66 -0
  245. data/lib/datadog/profiling/collectors/old_stack.rb +16 -13
  246. data/lib/datadog/profiling/collectors/stack.rb +3 -10
  247. data/lib/datadog/profiling/collectors/thread_context.rb +46 -0
  248. data/lib/datadog/profiling/component.rb +161 -0
  249. data/lib/datadog/profiling/encoding/profile.rb +1 -3
  250. data/lib/datadog/profiling/event.rb +0 -2
  251. data/lib/datadog/profiling/events/stack.rb +1 -3
  252. data/lib/datadog/profiling/exporter.rb +23 -14
  253. data/lib/datadog/profiling/ext/forking.rb +36 -39
  254. data/lib/datadog/profiling/ext.rb +1 -2
  255. data/lib/datadog/profiling/flush.rb +0 -5
  256. data/lib/datadog/profiling/http_transport.rb +5 -6
  257. data/lib/datadog/profiling/load_native_extension.rb +0 -2
  258. data/lib/datadog/profiling/native_extension.rb +0 -2
  259. data/lib/datadog/profiling/old_recorder.rb +8 -7
  260. data/lib/datadog/profiling/pprof/builder.rb +4 -6
  261. data/lib/datadog/profiling/pprof/converter.rb +1 -3
  262. data/lib/datadog/profiling/pprof/message_set.rb +1 -3
  263. data/lib/datadog/profiling/pprof/payload.rb +0 -2
  264. data/lib/datadog/profiling/pprof/pprof_pb.rb +0 -2
  265. data/lib/datadog/profiling/pprof/stack_sample.rb +4 -6
  266. data/lib/datadog/profiling/pprof/string_table.rb +1 -3
  267. data/lib/datadog/profiling/pprof/template.rb +5 -7
  268. data/lib/datadog/profiling/preload.rb +1 -3
  269. data/lib/datadog/profiling/profiler.rb +7 -2
  270. data/lib/datadog/profiling/scheduler.rb +8 -12
  271. data/lib/datadog/profiling/stack_recorder.rb +49 -8
  272. data/lib/datadog/profiling/tag_builder.rb +5 -2
  273. data/lib/datadog/profiling/tasks/exec.rb +0 -2
  274. data/lib/datadog/profiling/tasks/help.rb +0 -2
  275. data/lib/datadog/profiling/tasks/setup.rb +2 -11
  276. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +2 -4
  277. data/lib/datadog/profiling/trace_identifiers/helper.rb +1 -3
  278. data/lib/datadog/profiling.rb +67 -27
  279. data/lib/datadog/tracing/analytics.rb +1 -3
  280. data/lib/datadog/tracing/buffer.rb +5 -9
  281. data/lib/datadog/tracing/client_ip.rb +61 -0
  282. data/lib/datadog/tracing/component.rb +176 -0
  283. data/lib/datadog/tracing/configuration/ext.rb +49 -6
  284. data/lib/datadog/tracing/configuration/settings.rb +451 -0
  285. data/lib/datadog/tracing/context.rb +1 -3
  286. data/lib/datadog/tracing/context_provider.rb +2 -4
  287. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +2 -4
  288. data/lib/datadog/tracing/contrib/action_cable/event.rb +4 -7
  289. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +4 -6
  290. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +3 -5
  291. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +4 -6
  292. data/lib/datadog/tracing/contrib/action_cable/events.rb +4 -6
  293. data/lib/datadog/tracing/contrib/action_cable/ext.rb +0 -2
  294. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +3 -6
  295. data/lib/datadog/tracing/contrib/action_cable/integration.rb +4 -6
  296. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +4 -6
  297. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +2 -4
  298. data/lib/datadog/tracing/contrib/action_mailer/event.rb +3 -5
  299. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +3 -5
  300. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +3 -5
  301. data/lib/datadog/tracing/contrib/action_mailer/events.rb +2 -4
  302. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +0 -2
  303. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +4 -6
  304. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +3 -5
  305. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +6 -8
  306. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +2 -4
  307. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +2 -4
  308. data/lib/datadog/tracing/contrib/action_pack/ext.rb +0 -2
  309. data/lib/datadog/tracing/contrib/action_pack/integration.rb +4 -6
  310. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +2 -4
  311. data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -3
  312. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +2 -4
  313. data/lib/datadog/tracing/contrib/action_view/event.rb +1 -3
  314. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +5 -7
  315. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +5 -7
  316. data/lib/datadog/tracing/contrib/action_view/events.rb +2 -4
  317. data/lib/datadog/tracing/contrib/action_view/ext.rb +0 -2
  318. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +2 -4
  319. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +2 -4
  320. data/lib/datadog/tracing/contrib/action_view/integration.rb +4 -6
  321. data/lib/datadog/tracing/contrib/action_view/patcher.rb +7 -9
  322. data/lib/datadog/tracing/contrib/action_view/utils.rb +1 -3
  323. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +3 -5
  324. data/lib/datadog/tracing/contrib/active_job/event.rb +3 -5
  325. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +4 -6
  326. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +4 -6
  327. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +4 -6
  328. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +4 -6
  329. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +4 -6
  330. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +4 -6
  331. data/lib/datadog/tracing/contrib/active_job/events.rb +6 -8
  332. data/lib/datadog/tracing/contrib/active_job/ext.rb +0 -2
  333. data/lib/datadog/tracing/contrib/active_job/integration.rb +4 -6
  334. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +0 -4
  335. data/lib/datadog/tracing/contrib/active_job/patcher.rb +4 -6
  336. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +2 -4
  337. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +4 -7
  338. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +3 -5
  339. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +2 -4
  340. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +2 -4
  341. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +0 -2
  342. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +3 -5
  343. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +3 -6
  344. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +0 -2
  345. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +2 -4
  346. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +3 -5
  347. data/lib/datadog/tracing/contrib/active_record/event.rb +1 -3
  348. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +4 -6
  349. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +6 -8
  350. data/lib/datadog/tracing/contrib/active_record/events.rb +2 -4
  351. data/lib/datadog/tracing/contrib/active_record/ext.rb +0 -2
  352. data/lib/datadog/tracing/contrib/active_record/integration.rb +6 -8
  353. data/lib/datadog/tracing/contrib/active_record/patcher.rb +2 -4
  354. data/lib/datadog/tracing/contrib/active_record/utils.rb +2 -4
  355. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +0 -2
  356. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +19 -11
  357. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +2 -4
  358. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +1 -3
  359. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +2 -4
  360. data/lib/datadog/tracing/contrib/active_support/ext.rb +0 -2
  361. data/lib/datadog/tracing/contrib/active_support/integration.rb +5 -7
  362. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -3
  363. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +1 -3
  364. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +0 -2
  365. data/lib/datadog/tracing/contrib/active_support/patcher.rb +2 -4
  366. data/lib/datadog/tracing/contrib/analytics.rb +1 -3
  367. data/lib/datadog/tracing/contrib/auto_instrument.rb +4 -6
  368. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +6 -5
  369. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -2
  370. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +5 -6
  371. data/lib/datadog/tracing/contrib/aws/integration.rb +3 -5
  372. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +0 -2
  373. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -7
  374. data/lib/datadog/tracing/contrib/aws/services.rb +0 -4
  375. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +2 -4
  376. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -2
  377. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +0 -2
  378. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -3
  379. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +3 -5
  380. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +2 -5
  381. data/lib/datadog/tracing/contrib/configurable.rb +2 -4
  382. data/lib/datadog/tracing/contrib/configuration/resolver.rb +0 -2
  383. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -3
  384. data/lib/datadog/tracing/contrib/configuration/settings.rb +2 -6
  385. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +6 -5
  386. data/lib/datadog/tracing/contrib/dalli/ext.rb +2 -2
  387. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +10 -7
  388. data/lib/datadog/tracing/contrib/dalli/integration.rb +3 -5
  389. data/lib/datadog/tracing/contrib/dalli/patcher.rb +3 -5
  390. data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -3
  391. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +3 -5
  392. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +2 -2
  393. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +3 -5
  394. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +8 -4
  395. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +11 -6
  396. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +32 -0
  397. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +7 -5
  398. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -2
  399. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +3 -5
  400. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +10 -9
  401. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -5
  402. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +8 -5
  403. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +6 -9
  404. data/lib/datadog/tracing/contrib/ethon/ext.rb +1 -2
  405. data/lib/datadog/tracing/contrib/ethon/integration.rb +4 -6
  406. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +5 -6
  407. data/lib/datadog/tracing/contrib/ethon/patcher.rb +3 -6
  408. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +7 -5
  409. data/lib/datadog/tracing/contrib/excon/ext.rb +1 -2
  410. data/lib/datadog/tracing/contrib/excon/integration.rb +4 -6
  411. data/lib/datadog/tracing/contrib/excon/middleware.rb +8 -9
  412. data/lib/datadog/tracing/contrib/excon/patcher.rb +2 -4
  413. data/lib/datadog/tracing/contrib/ext.rb +30 -0
  414. data/lib/datadog/tracing/contrib/extensions.rb +5 -5
  415. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +7 -5
  416. data/lib/datadog/tracing/contrib/faraday/connection.rb +0 -2
  417. data/lib/datadog/tracing/contrib/faraday/ext.rb +1 -2
  418. data/lib/datadog/tracing/contrib/faraday/integration.rb +4 -6
  419. data/lib/datadog/tracing/contrib/faraday/middleware.rb +8 -10
  420. data/lib/datadog/tracing/contrib/faraday/patcher.rb +5 -7
  421. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +0 -2
  422. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +3 -5
  423. data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -9
  424. data/lib/datadog/tracing/contrib/grape/ext.rb +0 -2
  425. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +0 -2
  426. data/lib/datadog/tracing/contrib/grape/integration.rb +3 -5
  427. data/lib/datadog/tracing/contrib/grape/patcher.rb +4 -6
  428. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +3 -5
  429. data/lib/datadog/tracing/contrib/graphql/ext.rb +0 -2
  430. data/lib/datadog/tracing/contrib/graphql/integration.rb +3 -5
  431. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -5
  432. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +9 -6
  433. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +20 -7
  434. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +17 -19
  435. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +3 -6
  436. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +26 -0
  437. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +42 -0
  438. data/lib/datadog/tracing/contrib/grpc/ext.rb +4 -2
  439. data/lib/datadog/tracing/contrib/grpc/integration.rb +11 -6
  440. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +0 -2
  441. data/lib/datadog/tracing/contrib/grpc/patcher.rb +3 -8
  442. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +45 -0
  443. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +20 -0
  444. data/lib/datadog/tracing/contrib/hanami/ext.rb +22 -0
  445. data/lib/datadog/tracing/contrib/hanami/integration.rb +42 -0
  446. data/lib/datadog/tracing/contrib/hanami/patcher.rb +31 -0
  447. data/lib/datadog/tracing/contrib/hanami/plugin.rb +21 -0
  448. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +39 -0
  449. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +42 -0
  450. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +1 -4
  451. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +13 -5
  452. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +38 -0
  453. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +37 -0
  454. data/lib/datadog/tracing/contrib/http/ext.rb +2 -2
  455. data/lib/datadog/tracing/contrib/http/instrumentation.rb +8 -12
  456. data/lib/datadog/tracing/contrib/http/integration.rb +6 -8
  457. data/lib/datadog/tracing/contrib/http/patcher.rb +3 -5
  458. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +0 -2
  459. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +13 -5
  460. data/lib/datadog/tracing/contrib/httpclient/ext.rb +2 -2
  461. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +9 -11
  462. data/lib/datadog/tracing/contrib/httpclient/integration.rb +4 -6
  463. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +3 -5
  464. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +13 -5
  465. data/lib/datadog/tracing/contrib/httprb/ext.rb +2 -2
  466. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +9 -11
  467. data/lib/datadog/tracing/contrib/httprb/integration.rb +4 -6
  468. data/lib/datadog/tracing/contrib/httprb/patcher.rb +3 -5
  469. data/lib/datadog/tracing/contrib/integration.rb +3 -5
  470. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +2 -4
  471. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +1 -2
  472. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +0 -2
  473. data/lib/datadog/tracing/contrib/kafka/event.rb +4 -5
  474. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +2 -4
  475. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +3 -5
  476. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +3 -5
  477. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +4 -6
  478. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +4 -6
  479. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +4 -6
  480. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +4 -6
  481. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +3 -4
  482. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +3 -4
  483. data/lib/datadog/tracing/contrib/kafka/events.rb +9 -11
  484. data/lib/datadog/tracing/contrib/kafka/ext.rb +1 -2
  485. data/lib/datadog/tracing/contrib/kafka/integration.rb +3 -5
  486. data/lib/datadog/tracing/contrib/kafka/patcher.rb +3 -5
  487. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +2 -4
  488. data/lib/datadog/tracing/contrib/lograge/ext.rb +0 -2
  489. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -4
  490. data/lib/datadog/tracing/contrib/lograge/integration.rb +3 -5
  491. data/lib/datadog/tracing/contrib/lograge/patcher.rb +2 -4
  492. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +7 -5
  493. data/lib/datadog/tracing/contrib/mongodb/ext.rb +8 -2
  494. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +3 -5
  495. data/lib/datadog/tracing/contrib/mongodb/integration.rb +4 -6
  496. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -3
  497. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +3 -5
  498. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +10 -6
  499. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +17 -4
  500. data/lib/datadog/tracing/contrib/mysql2/ext.rb +2 -2
  501. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +20 -7
  502. data/lib/datadog/tracing/contrib/mysql2/integration.rb +3 -5
  503. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +2 -4
  504. data/lib/datadog/tracing/contrib/patchable.rb +0 -2
  505. data/lib/datadog/tracing/contrib/patcher.rb +16 -6
  506. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +17 -4
  507. data/lib/datadog/tracing/contrib/pg/ext.rb +3 -3
  508. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +78 -41
  509. data/lib/datadog/tracing/contrib/pg/integration.rb +3 -5
  510. data/lib/datadog/tracing/contrib/pg/patcher.rb +2 -4
  511. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +6 -5
  512. data/lib/datadog/tracing/contrib/presto/ext.rb +2 -2
  513. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +5 -5
  514. data/lib/datadog/tracing/contrib/presto/integration.rb +3 -5
  515. data/lib/datadog/tracing/contrib/presto/patcher.rb +4 -6
  516. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +41 -0
  517. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +31 -0
  518. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +26 -0
  519. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +45 -0
  520. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +2 -4
  521. data/lib/datadog/tracing/contrib/qless/ext.rb +0 -2
  522. data/lib/datadog/tracing/contrib/qless/integration.rb +3 -5
  523. data/lib/datadog/tracing/contrib/qless/patcher.rb +1 -5
  524. data/lib/datadog/tracing/contrib/qless/qless_job.rb +5 -5
  525. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +0 -4
  526. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +3 -5
  527. data/lib/datadog/tracing/contrib/que/ext.rb +0 -2
  528. data/lib/datadog/tracing/contrib/que/integration.rb +4 -6
  529. data/lib/datadog/tracing/contrib/que/patcher.rb +1 -3
  530. data/lib/datadog/tracing/contrib/que/tracer.rb +5 -3
  531. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +2 -4
  532. data/lib/datadog/tracing/contrib/racecar/event.rb +5 -7
  533. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +6 -5
  534. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +2 -4
  535. data/lib/datadog/tracing/contrib/racecar/events/message.rb +6 -5
  536. data/lib/datadog/tracing/contrib/racecar/events.rb +3 -5
  537. data/lib/datadog/tracing/contrib/racecar/ext.rb +1 -2
  538. data/lib/datadog/tracing/contrib/racecar/integration.rb +3 -5
  539. data/lib/datadog/tracing/contrib/racecar/patcher.rb +3 -5
  540. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +2 -4
  541. data/lib/datadog/tracing/contrib/rack/ext.rb +5 -2
  542. data/lib/datadog/tracing/contrib/rack/header_collection.rb +35 -0
  543. data/lib/datadog/tracing/contrib/rack/integration.rb +4 -6
  544. data/lib/datadog/tracing/contrib/rack/middlewares.rb +170 -78
  545. data/lib/datadog/tracing/contrib/rack/patcher.rb +12 -4
  546. data/lib/datadog/tracing/contrib/rack/request_queue.rb +0 -2
  547. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +1 -3
  548. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -3
  549. data/lib/datadog/tracing/contrib/rails/ext.rb +0 -2
  550. data/lib/datadog/tracing/contrib/rails/framework.rb +16 -23
  551. data/lib/datadog/tracing/contrib/rails/integration.rb +4 -6
  552. data/lib/datadog/tracing/contrib/rails/log_injection.rb +0 -4
  553. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -4
  554. data/lib/datadog/tracing/contrib/rails/patcher.rb +7 -10
  555. data/lib/datadog/tracing/contrib/rails/railtie.rb +3 -5
  556. data/lib/datadog/tracing/contrib/rails/utils.rb +1 -3
  557. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +16 -3
  558. data/lib/datadog/tracing/contrib/rake/ext.rb +0 -2
  559. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +12 -9
  560. data/lib/datadog/tracing/contrib/rake/integration.rb +3 -5
  561. data/lib/datadog/tracing/contrib/rake/patcher.rb +3 -6
  562. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -3
  563. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +6 -5
  564. data/lib/datadog/tracing/contrib/redis/ext.rb +3 -2
  565. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +36 -28
  566. data/lib/datadog/tracing/contrib/redis/integration.rb +37 -6
  567. data/lib/datadog/tracing/contrib/redis/patcher.rb +56 -14
  568. data/lib/datadog/tracing/contrib/redis/quantize.rb +11 -10
  569. data/lib/datadog/tracing/contrib/redis/tags.rb +12 -12
  570. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +70 -0
  571. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +0 -2
  572. data/lib/datadog/tracing/contrib/registerable.rb +0 -2
  573. data/lib/datadog/tracing/contrib/registry.rb +0 -2
  574. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +3 -5
  575. data/lib/datadog/tracing/contrib/resque/ext.rb +0 -2
  576. data/lib/datadog/tracing/contrib/resque/integration.rb +3 -5
  577. data/lib/datadog/tracing/contrib/resque/patcher.rb +2 -4
  578. data/lib/datadog/tracing/contrib/resque/resque_job.rb +7 -6
  579. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +8 -5
  580. data/lib/datadog/tracing/contrib/rest_client/ext.rb +1 -2
  581. data/lib/datadog/tracing/contrib/rest_client/integration.rb +3 -5
  582. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +2 -5
  583. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +6 -7
  584. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +2 -4
  585. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +0 -2
  586. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -4
  587. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +3 -5
  588. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +2 -4
  589. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +2 -4
  590. data/lib/datadog/tracing/contrib/sequel/database.rb +4 -7
  591. data/lib/datadog/tracing/contrib/sequel/dataset.rb +4 -7
  592. data/lib/datadog/tracing/contrib/sequel/ext.rb +0 -2
  593. data/lib/datadog/tracing/contrib/sequel/integration.rb +3 -5
  594. data/lib/datadog/tracing/contrib/sequel/patcher.rb +3 -5
  595. data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -4
  596. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +3 -5
  597. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +1 -2
  598. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +4 -6
  599. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -3
  600. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +5 -3
  601. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +11 -7
  602. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +3 -5
  603. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +6 -2
  604. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +3 -5
  605. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +14 -9
  606. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +23 -3
  607. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +2 -2
  608. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/{scheduled_push.rb → redis_info.rb} +7 -8
  609. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +55 -0
  610. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +12 -8
  611. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +2 -4
  612. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +2 -4
  613. data/lib/datadog/tracing/contrib/sinatra/env.rb +14 -27
  614. data/lib/datadog/tracing/contrib/sinatra/ext.rb +7 -5
  615. data/lib/datadog/tracing/contrib/sinatra/framework.rb +0 -4
  616. data/lib/datadog/tracing/contrib/sinatra/headers.rb +1 -3
  617. data/lib/datadog/tracing/contrib/sinatra/integration.rb +3 -5
  618. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +6 -9
  619. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +15 -90
  620. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +20 -18
  621. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +2 -4
  622. data/lib/datadog/tracing/contrib/sneakers/ext.rb +1 -2
  623. data/lib/datadog/tracing/contrib/sneakers/integration.rb +4 -6
  624. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -4
  625. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +7 -5
  626. data/lib/datadog/tracing/contrib/status_code_matcher.rb +2 -4
  627. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +33 -0
  628. data/lib/datadog/tracing/contrib/stripe/ext.rb +26 -0
  629. data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
  630. data/lib/datadog/tracing/contrib/stripe/patcher.rb +28 -0
  631. data/lib/datadog/tracing/contrib/stripe/request.rb +67 -0
  632. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +2 -4
  633. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +0 -2
  634. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +0 -2
  635. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +3 -6
  636. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +3 -5
  637. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +4 -8
  638. data/lib/datadog/tracing/contrib/utils/database.rb +0 -2
  639. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +0 -2
  640. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +92 -14
  641. data/lib/datadog/tracing/contrib.rb +50 -50
  642. data/lib/datadog/tracing/correlation.rb +16 -4
  643. data/lib/datadog/{core → tracing}/diagnostics/ext.rb +1 -8
  644. data/lib/datadog/tracing/diagnostics/health.rb +38 -0
  645. data/lib/datadog/tracing/distributed/b3_multi.rb +72 -0
  646. data/lib/datadog/tracing/distributed/b3_single.rb +68 -0
  647. data/lib/datadog/tracing/distributed/datadog.rb +200 -0
  648. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +84 -0
  649. data/lib/datadog/tracing/distributed/fetcher.rb +21 -0
  650. data/lib/datadog/tracing/distributed/headers/ext.rb +19 -16
  651. data/lib/datadog/tracing/distributed/helpers.rb +27 -40
  652. data/lib/datadog/tracing/distributed/none.rb +18 -0
  653. data/lib/datadog/tracing/distributed/propagation.rb +126 -0
  654. data/lib/datadog/tracing/distributed/trace_context.rb +373 -0
  655. data/lib/datadog/tracing/event.rb +1 -3
  656. data/lib/datadog/tracing/flush.rb +57 -37
  657. data/lib/datadog/tracing/metadata/analytics.rb +2 -4
  658. data/lib/datadog/tracing/metadata/errors.rb +2 -4
  659. data/lib/datadog/tracing/metadata/ext.rb +18 -12
  660. data/lib/datadog/tracing/metadata/tagging.rb +17 -4
  661. data/lib/datadog/tracing/metadata.rb +3 -5
  662. data/lib/datadog/tracing/pipeline/span_filter.rb +10 -8
  663. data/lib/datadog/tracing/pipeline/span_processor.rb +0 -2
  664. data/lib/datadog/tracing/pipeline.rb +3 -5
  665. data/lib/datadog/tracing/propagation/http.rb +3 -100
  666. data/lib/datadog/tracing/runtime/metrics.rb +1 -3
  667. data/lib/datadog/tracing/sampling/all_sampler.rb +1 -3
  668. data/lib/datadog/tracing/sampling/ext.rb +30 -1
  669. data/lib/datadog/tracing/sampling/matcher.rb +0 -2
  670. data/lib/datadog/tracing/sampling/priority_sampler.rb +62 -11
  671. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +10 -13
  672. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +32 -10
  673. data/lib/datadog/tracing/sampling/rate_limiter.rb +4 -3
  674. data/lib/datadog/tracing/sampling/rate_sampler.rb +27 -12
  675. data/lib/datadog/tracing/sampling/rule.rb +3 -5
  676. data/lib/datadog/tracing/sampling/rule_sampler.rb +8 -9
  677. data/lib/datadog/tracing/sampling/sampler.rb +0 -2
  678. data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
  679. data/lib/datadog/tracing/sampling/span/matcher.rb +9 -0
  680. data/lib/datadog/tracing/sampling/span/rule.rb +82 -0
  681. data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
  682. data/lib/datadog/tracing/sampling/span/sampler.rb +75 -0
  683. data/lib/datadog/tracing/span.rb +6 -24
  684. data/lib/datadog/tracing/span_operation.rb +11 -14
  685. data/lib/datadog/tracing/sync_writer.rb +5 -7
  686. data/lib/datadog/tracing/trace_digest.rb +88 -4
  687. data/lib/datadog/tracing/trace_operation.rb +60 -17
  688. data/lib/datadog/tracing/trace_segment.rb +20 -10
  689. data/lib/datadog/tracing/tracer.rb +49 -23
  690. data/lib/datadog/tracing/utils.rb +81 -0
  691. data/lib/datadog/tracing/workers/trace_writer.rb +9 -11
  692. data/lib/datadog/tracing/workers.rb +3 -5
  693. data/lib/datadog/tracing/writer.rb +12 -7
  694. data/lib/datadog/tracing.rb +8 -10
  695. data/lib/ddtrace/auto_instrument.rb +9 -4
  696. data/lib/ddtrace/auto_instrument_base.rb +0 -2
  697. data/lib/ddtrace/profiling/preload.rb +0 -2
  698. data/lib/ddtrace/transport/ext.rb +7 -3
  699. data/lib/ddtrace/transport/http/adapters/net.rb +3 -4
  700. data/lib/ddtrace/transport/http/adapters/registry.rb +0 -2
  701. data/lib/ddtrace/transport/http/adapters/test.rb +1 -3
  702. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
  703. data/lib/ddtrace/transport/http/api/endpoint.rb +0 -2
  704. data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -2
  705. data/lib/ddtrace/transport/http/api/instance.rb +0 -2
  706. data/lib/ddtrace/transport/http/api/map.rb +1 -3
  707. data/lib/ddtrace/transport/http/api/spec.rb +0 -2
  708. data/lib/ddtrace/transport/http/api.rb +4 -6
  709. data/lib/ddtrace/transport/http/builder.rb +5 -7
  710. data/lib/ddtrace/transport/http/client.rb +2 -4
  711. data/lib/ddtrace/transport/http/env.rb +0 -2
  712. data/lib/ddtrace/transport/http/response.rb +1 -3
  713. data/lib/ddtrace/transport/http/statistics.rb +1 -3
  714. data/lib/ddtrace/transport/http/traces.rb +6 -8
  715. data/lib/ddtrace/transport/http.rb +11 -12
  716. data/lib/ddtrace/transport/io/client.rb +2 -4
  717. data/lib/ddtrace/transport/io/response.rb +1 -3
  718. data/lib/ddtrace/transport/io/traces.rb +3 -7
  719. data/lib/ddtrace/transport/io.rb +3 -5
  720. data/lib/ddtrace/transport/parcel.rb +0 -4
  721. data/lib/ddtrace/transport/request.rb +0 -2
  722. data/lib/ddtrace/transport/response.rb +0 -2
  723. data/lib/ddtrace/transport/serializable_trace.rb +9 -5
  724. data/lib/ddtrace/transport/statistics.rb +2 -4
  725. data/lib/ddtrace/transport/trace_formatter.rb +21 -12
  726. data/lib/ddtrace/transport/traces.rb +9 -9
  727. data/lib/ddtrace/version.rb +2 -4
  728. data/lib/ddtrace.rb +6 -10
  729. metadata +131 -50
  730. data/.editorconfig +0 -22
  731. data/.gitignore +0 -58
  732. data/CONTRIBUTING.md +0 -81
  733. data/ddtrace.gemspec +0 -71
  734. data/docs/0.x-trace.png +0 -0
  735. data/docs/1.0-trace.png +0 -0
  736. data/docs/AutoInstrumentation.md +0 -36
  737. data/docs/Deprecation.md +0 -8
  738. data/docs/DevelopmentGuide.md +0 -259
  739. data/docs/GettingStarted.md +0 -2712
  740. data/docs/ProfilingDevelopment.md +0 -109
  741. data/docs/PublicApi.md +0 -14
  742. data/docs/UpgradeGuide.md +0 -736
  743. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.c +0 -269
  744. data/ext/ddtrace_profiling_native_extension/libddprof_helpers.h +0 -13
  745. data/lib/datadog/appsec/assets/waf_rules/risky.json +0 -1499
  746. data/lib/datadog/appsec/contrib/rack/request.rb +0 -58
  747. data/lib/datadog/appsec/contrib/rack/response.rb +0 -24
  748. data/lib/datadog/profiling/collectors/cpu_and_wall_time.rb +0 -42
  749. data/lib/datadog/profiling/old_ext.rb +0 -42
  750. data/lib/datadog/profiling/transport/http/api/endpoint.rb +0 -85
  751. data/lib/datadog/profiling/transport/http/api/instance.rb +0 -38
  752. data/lib/datadog/profiling/transport/http/api/spec.rb +0 -42
  753. data/lib/datadog/profiling/transport/http/api.rb +0 -45
  754. data/lib/datadog/profiling/transport/http/builder.rb +0 -30
  755. data/lib/datadog/profiling/transport/http/client.rb +0 -37
  756. data/lib/datadog/profiling/transport/http/response.rb +0 -21
  757. data/lib/datadog/profiling/transport/http.rb +0 -112
  758. data/lib/datadog/tracing/distributed/headers/b3.rb +0 -55
  759. data/lib/datadog/tracing/distributed/headers/b3_single.rb +0 -67
  760. data/lib/datadog/tracing/distributed/headers/datadog.rb +0 -52
  761. data/lib/datadog/tracing/distributed/headers/parser.rb +0 -37
  762. data/lib/datadog/tracing/distributed/metadata/b3.rb +0 -55
  763. data/lib/datadog/tracing/distributed/metadata/b3_single.rb +0 -66
  764. data/lib/datadog/tracing/distributed/metadata/datadog.rb +0 -73
  765. data/lib/datadog/tracing/distributed/metadata/parser.rb +0 -34
  766. data/lib/datadog/tracing/propagation/grpc.rb +0 -98
@@ -1,21 +1,20 @@
1
- # typed: false
2
-
3
1
  require 'logger'
4
2
 
5
- require 'datadog/core/configuration/base'
6
- require 'datadog/core/environment/ext'
7
- require 'datadog/core/runtime/ext'
8
- require 'datadog/profiling/ext'
9
- require 'datadog/tracing/configuration/ext'
3
+ require_relative 'base'
4
+ require_relative 'ext'
5
+ require_relative '../environment/ext'
6
+ require_relative '../runtime/ext'
7
+ require_relative '../telemetry/ext'
8
+ require_relative '../../profiling/ext'
9
+
10
+ require_relative '../../tracing/configuration/settings'
10
11
 
11
12
  module Datadog
12
13
  module Core
13
14
  module Configuration
14
- # Global configuration settings for the trace library.
15
+ # Global configuration settings for the Datadog library.
15
16
  # @public_api
16
17
  # rubocop:disable Metrics/BlockLength
17
- # rubocop:disable Metrics/ClassLength
18
- # rubocop:disable Layout/LineLength
19
18
  class Settings
20
19
  include Base
21
20
 
@@ -99,7 +98,7 @@ module Datadog
99
98
  # @default `DD_TRACE_DEBUG` environment variable, otherwise `false`
100
99
  # @return [Boolean]
101
100
  option :debug do |o|
102
- o.default { env_to_bool(Datadog::Core::Diagnostics::Ext::DD_TRACE_DEBUG, false) }
101
+ o.default { env_to_bool(Datadog::Core::Configuration::Ext::Diagnostics::ENV_DEBUG_ENABLED, false) }
103
102
  o.lazy
104
103
  o.on_set do |enabled|
105
104
  # Enable rich debug print statements.
@@ -110,7 +109,6 @@ module Datadog
110
109
 
111
110
  # Internal {Datadog::Statsd} metrics collection.
112
111
  #
113
- # The list of metrics collected can be found in {Datadog::Core::Diagnostics::Ext::Health::Metrics}.
114
112
  # @public_api
115
113
  settings :health_metrics do
116
114
  # Enable health metrics collection.
@@ -118,7 +116,7 @@ module Datadog
118
116
  # @default `DD_HEALTH_METRICS_ENABLED` environment variable, otherwise `false`
119
117
  # @return [Boolean]
120
118
  option :enabled do |o|
121
- o.default { env_to_bool(Datadog::Core::Diagnostics::Ext::Health::Metrics::ENV_ENABLED, false) }
119
+ o.default { env_to_bool(Datadog::Core::Configuration::Ext::Diagnostics::ENV_HEALTH_METRICS_ENABLED, false) }
122
120
  o.lazy
123
121
  end
124
122
 
@@ -144,7 +142,7 @@ module Datadog
144
142
  # @return [Boolean,nil]
145
143
  option :enabled do |o|
146
144
  # Defaults to nil as we want to know when the default value is being used
147
- o.default { env_to_bool(Datadog::Core::Diagnostics::Ext::DD_TRACE_STARTUP_LOGS, nil) }
145
+ o.default { env_to_bool(Datadog::Core::Configuration::Ext::Diagnostics::ENV_STARTUP_LOGS_ENABLED, nil) }
148
146
  o.lazy
149
147
  end
150
148
  end
@@ -206,10 +204,13 @@ module Datadog
206
204
  # This should never be reduced, as it can cause the resulting profiles to become biased.
207
205
  # The current default should be enough for most services, allowing 16 threads to be sampled around 30 times
208
206
  # per second for a 60 second period.
207
+ # This setting is ignored when CPU Profiling 2.0 is in use.
209
208
  option :max_events, default: 32768
210
209
 
211
210
  # Controls the maximum number of frames for each thread sampled. Can be tuned to avoid omitted frames in the
212
211
  # produced profiles. Increasing this may increase the overhead of profiling.
212
+ #
213
+ # @default `DD_PROFILING_MAX_FRAMES` environment variable, otherwise 400
213
214
  option :max_frames do |o|
214
215
  o.default { env_to_int(Profiling::Ext::ENV_MAX_FRAMES, 400) }
215
216
  o.lazy
@@ -230,16 +231,63 @@ module Datadog
230
231
  end
231
232
  end
232
233
 
233
- # Disable gathering of names and versions of gems in use by the service, used to power grouping and
234
- # categorization of stack traces.
234
+ # Can be used to disable the gathering of names and versions of gems in use by the service, used to power
235
+ # grouping and categorization of stack traces.
235
236
  option :code_provenance_enabled, default: true
236
237
 
237
- # Use legacy transport code instead of HttpTransport. Temporarily added for migration to HttpTransport,
238
- # and will be removed soon. Do not use unless instructed to by support.
238
+ # No longer does anything, and will be removed on dd-trace-rb 2.0.
239
+ #
240
+ # This was added as a temporary support option in case of issues with the new `Profiling::HttpTransport` class
241
+ # but we're now confident it's working nicely so we've removed the old code path.
239
242
  option :legacy_transport_enabled do |o|
240
- o.default { env_to_bool('DD_PROFILING_LEGACY_TRANSPORT_ENABLED', false) }
243
+ o.on_set do
244
+ Datadog.logger.warn(
245
+ 'The profiling.advanced.legacy_transport_enabled setting has been deprecated for removal and no ' \
246
+ 'longer does anything. Please remove it from your Datadog.configure block.'
247
+ )
248
+ end
249
+ end
250
+
251
+ # Forces enabling the new CPU Profiling 2.0 profiler (see ddtrace release notes for more details).
252
+ #
253
+ # Note that setting this to "false" (or not setting it) will not prevent the new profiler from
254
+ # being automatically used in the future.
255
+ # This option will be deprecated for removal once the new profiler gets enabled by default for all customers.
256
+ option :force_enable_new_profiler do |o|
257
+ o.default { env_to_bool('DD_PROFILING_FORCE_ENABLE_NEW', false) }
258
+ o.lazy
259
+ end
260
+
261
+ # Forces enabling of profiling of time/resources spent in Garbage Collection.
262
+ #
263
+ # Note that setting this to "false" (or not setting it) will not prevent the feature from being
264
+ # being automatically enabled in the future.
265
+ #
266
+ # This toggle was added because, although this feature is safe and enabled by default on Ruby 2.x,
267
+ # on Ruby 3.x it can break in applications that make use of Ractors due to two Ruby VM bugs:
268
+ # https://bugs.ruby-lang.org/issues/19112 AND https://bugs.ruby-lang.org/issues/18464.
269
+ #
270
+ # If you use Ruby 3.x and your application does not use Ractors (or if your Ruby has been patched), the
271
+ # feature is fully safe to enable and this toggle can be used to do so.
272
+ #
273
+ # Furthermore, currently this feature can add a lot of overhead for GC-heavy workloads.
274
+ #
275
+ # We expect the once the above issues are overcome, we'll automatically enable the feature on fixed Ruby
276
+ # versions.
277
+ option :force_enable_gc_profiling do |o|
278
+ o.default { env_to_bool('DD_PROFILING_FORCE_ENABLE_GC', false) }
241
279
  o.lazy
242
280
  end
281
+
282
+ # Can be used to enable/disable the Datadog::Profiling.allocation_count feature.
283
+ #
284
+ # This feature is safe and enabled by default on Ruby 2.x, but
285
+ # on Ruby 3.x it can break in applications that make use of Ractors due to two Ruby VM bugs:
286
+ # https://bugs.ruby-lang.org/issues/19112 AND https://bugs.ruby-lang.org/issues/18464.
287
+ #
288
+ # If you use Ruby 3.x and your application does not use Ractors (or if your Ruby has been patched), the
289
+ # feature is fully safe to enable and this toggle can be used to do so.
290
+ option :allocation_counting_enabled, default: RUBY_VERSION.start_with?('2.')
243
291
  end
244
292
 
245
293
  # @public_api
@@ -313,8 +361,8 @@ module Datadog
313
361
 
314
362
  # Parse tags from environment
315
363
  env_to_list(Core::Environment::Ext::ENV_TAGS, comma_separated_only: false).each do |tag|
316
- pair = tag.split(':')
317
- tags[pair.first] = pair.last if pair.length == 2
364
+ key, value = tag.split(':', 2)
365
+ tags[key] = value if value && !value.empty?
318
366
  end
319
367
 
320
368
  # Override tags if defined
@@ -373,240 +421,6 @@ module Datadog
373
421
  end
374
422
  end
375
423
 
376
- # Tracer specific configurations.
377
- # @public_api
378
- settings :tracing do
379
- # Legacy [App Analytics](https://docs.datadoghq.com/tracing/legacy_app_analytics/) configuration.
380
- #
381
- # @configure_with {Datadog::Tracing}
382
- # @deprecated Use [Trace Retention and Ingestion](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/)
383
- # controls.
384
- # @public_api
385
- settings :analytics do
386
- # @default `DD_TRACE_ANALYTICS_ENABLED` environment variable, otherwise `nil`
387
- # @return [Boolean,nil]
388
- option :enabled do |o|
389
- o.default { env_to_bool(Tracing::Configuration::Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED, nil) }
390
- o.lazy
391
- end
392
- end
393
-
394
- # [Distributed Tracing](https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#distributed-tracing) propagation
395
- # style configuration.
396
- #
397
- # The supported formats are:
398
- # * `Datadog`: Datadog propagation format, described by [Distributed Tracing](https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#distributed-tracing).
399
- # * `B3`: B3 Propagation using multiple headers, described by [openzipkin/b3-propagation](https://github.com/openzipkin/b3-propagation#multiple-headers).
400
- # * `B3 single header`: B3 Propagation using a single header, described by [openzipkin/b3-propagation](https://github.com/openzipkin/b3-propagation#single-header).
401
- #
402
- # @public_api
403
- settings :distributed_tracing do
404
- # An ordered list of what data propagation styles the tracer will use to extract distributed tracing propagation
405
- # data from incoming requests and messages.
406
- #
407
- # The tracer will try to find distributed headers in the order they are present in the list provided to this option.
408
- # The first format to have valid data present will be used.
409
- #
410
- # @default `DD_PROPAGATION_STYLE_EXTRACT` environment variable (comma-separated list),
411
- # otherwise `['Datadog','B3','B3 single header']`.
412
- # @return [Array<String>]
413
- option :propagation_extract_style do |o|
414
- o.default do
415
- # Look for all headers by default
416
- env_to_list(
417
- Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT,
418
- [
419
- Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG,
420
- Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3,
421
- Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER
422
- ], comma_separated_only: true
423
- )
424
- end
425
-
426
- o.lazy
427
- end
428
-
429
- # The data propagation styles the tracer will use to inject distributed tracing propagation
430
- # data into outgoing requests and messages.
431
- #
432
- # The tracer will inject data from all styles specified in this option.
433
- #
434
- # @default `DD_PROPAGATION_STYLE_INJECT` environment variable (comma-separated list), otherwise `['Datadog']`.
435
- # @return [Array<String>]
436
- option :propagation_inject_style do |o|
437
- o.default do
438
- env_to_list(
439
- Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT,
440
- [Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG], comma_separated_only: true # Only inject Datadog headers by default
441
- )
442
- end
443
-
444
- o.lazy
445
- end
446
- end
447
-
448
- # Enable trace collection and span generation.
449
- #
450
- # You can use this option to disable tracing without having to
451
- # remove the library as a whole.
452
- #
453
- # @default `DD_TRACE_ENABLED` environment variable, otherwise `true`
454
- # @return [Boolean]
455
- option :enabled do |o|
456
- o.default { env_to_bool(Datadog::Core::Diagnostics::Ext::DD_TRACE_ENABLED, true) }
457
- o.lazy
458
- end
459
-
460
- # A custom tracer instance.
461
- #
462
- # It must respect the contract of {Datadog::Tracing::Tracer}.
463
- # It's recommended to delegate methods to {Datadog::Tracing::Tracer} to ease the implementation
464
- # of a custom tracer.
465
- #
466
- # This option will not return the live tracer instance: it only holds a custom tracing instance, if any.
467
- #
468
- # For internal use only.
469
- #
470
- # @default `nil`
471
- # @return [Object,nil]
472
- option :instance
473
-
474
- # Automatic correlation between tracing and logging.
475
- # @see https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#trace-correlation
476
- # @return [Boolean]
477
- option :log_injection do |o|
478
- o.default { env_to_bool(Tracing::Configuration::Ext::Correlation::ENV_LOGS_INJECTION_ENABLED, true) }
479
- o.lazy
480
- end
481
-
482
- # Configures an alternative trace transport behavior, where
483
- # traces can be sent to the agent and backend before all spans
484
- # have finished.
485
- #
486
- # This is useful for long-running jobs or very large traces.
487
- #
488
- # The trace flame graph will display the partial trace as it is received and constantly
489
- # update with new spans as they are flushed.
490
- # @public_api
491
- settings :partial_flush do
492
- # Enable partial trace flushing.
493
- #
494
- # @default `false`
495
- # @return [Boolean]
496
- option :enabled, default: false
497
-
498
- # Minimum number of finished spans required in a single unfinished trace before
499
- # the tracer will consider that trace for partial flushing.
500
- #
501
- # This option helps preserve a minimum amount of batching in the
502
- # flushing process, reducing network overhead.
503
- #
504
- # This threshold only applies to unfinished traces. Traces that have finished
505
- # are always flushed immediately.
506
- #
507
- # @default 500
508
- # @return [Integer]
509
- option :min_spans_threshold, default: 500
510
- end
511
-
512
- # Enables {https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/#datadog-intelligent-retention-filter
513
- # Datadog intelligent retention filter}.
514
- # @default `true`
515
- # @return [Boolean,nil]
516
- option :priority_sampling
517
-
518
- option :report_hostname do |o|
519
- o.default { env_to_bool(Tracing::Configuration::Ext::NET::ENV_REPORT_HOSTNAME, false) }
520
- o.lazy
521
- end
522
-
523
- # A custom sampler instance.
524
- # The object must respect the {Datadog::Tracing::Sampling::Sampler} interface.
525
- # @default `nil`
526
- # @return [Object,nil]
527
- option :sampler
528
-
529
- # Client-side sampling configuration.
530
- # @public_api
531
- settings :sampling do
532
- # Default sampling rate for the tracer.
533
- #
534
- # If `nil`, the trace uses an automatic sampling strategy that tries to ensure
535
- # the collection of traces that are considered important (e.g. traces with an error, traces
536
- # for resources not seen recently).
537
- #
538
- # @default `DD_TRACE_SAMPLE_RATE` environment variable, otherwise `nil`.
539
- # @return [Float,nil]
540
- option :default_rate do |o|
541
- o.default { env_to_float(Tracing::Configuration::Ext::Sampling::ENV_SAMPLE_RATE, nil) }
542
- o.lazy
543
- end
544
-
545
- # Rate limit for number of spans per second.
546
- #
547
- # Spans created above the limit will contribute to service metrics, but won't
548
- # have their payload stored.
549
- #
550
- # @default `DD_TRACE_RATE_LIMIT` environment variable, otherwise 100.
551
- # @return [Numeric,nil]
552
- option :rate_limit do |o|
553
- o.default { env_to_float(Tracing::Configuration::Ext::Sampling::ENV_RATE_LIMIT, 100) }
554
- o.lazy
555
- end
556
- end
557
-
558
- # [Continuous Integration Visibility](https://docs.datadoghq.com/continuous_integration/) configuration.
559
- # @public_api
560
- settings :test_mode do
561
- # Enable test mode. This allows the tracer to collect spans from test runs.
562
- #
563
- # It also prevents the tracer from collecting spans in a production environment. Only use in a test environment.
564
- #
565
- # @default `DD_TRACE_TEST_MODE_ENABLED` environment variable, otherwise `false`
566
- # @return [Boolean]
567
- option :enabled do |o|
568
- o.default { env_to_bool(Tracing::Configuration::Ext::Test::ENV_MODE_ENABLED, false) }
569
- o.lazy
570
- end
571
-
572
- option :trace_flush do |o|
573
- o.default { nil }
574
- o.lazy
575
- end
576
-
577
- option :writer_options do |o|
578
- o.default { {} }
579
- o.lazy
580
- end
581
- end
582
-
583
- # @see file:docs/GettingStarted.md#configuring-the-transport-layer Configuring the transport layer
584
- #
585
- # A {Proc} that configures a custom tracer transport.
586
- # @yield Receives a {Datadog::Transport::HTTP} that can be modified with custom adapters and settings.
587
- # @yieldparam [Datadog::Transport::HTTP] t transport to be configured.
588
- # @default `nil`
589
- # @return [Proc,nil]
590
- option :transport_options, default: nil
591
-
592
- # A custom writer instance.
593
- # The object must respect the {Datadog::Tracing::Writer} interface.
594
- #
595
- # This option is recommended for internal use only.
596
- #
597
- # @default `nil`
598
- # @return [Object,nil]
599
- option :writer
600
-
601
- # A custom {Hash} with keyword options to be passed to {Datadog::Tracing::Writer#initialize}.
602
- #
603
- # This option is recommended for internal use only.
604
- #
605
- # @default `{}`
606
- # @return [Hash,nil]
607
- option :writer_options, default: ->(_i) { {} }, lazy: true
608
- end
609
-
610
424
  # The `version` tag in Datadog. Use it to enable [Deployment Tracking](https://docs.datadoghq.com/tracing/deployment_tracking/).
611
425
  # @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging
612
426
  # @default `DD_VERSION` environment variable, otherwise `nils`
@@ -616,10 +430,26 @@ module Datadog
616
430
  o.default { ENV.fetch(Core::Environment::Ext::ENV_VERSION, nil) }
617
431
  o.lazy
618
432
  end
433
+
434
+ # Client-side telemetry configuration
435
+ # @public_api
436
+ settings :telemetry do
437
+ # Enable telemetry collection. This allows telemetry events to be emitted to the telemetry API.
438
+ #
439
+ # @default `DD_INSTRUMENTATION_TELEMETRY_ENABLED` environment variable, otherwise `false`. In a future release,
440
+ # this value will be changed to `true` by default as documented [here](https://docs.datadoghq.com/tracing/configure_data_security/#telemetry-collection).
441
+ # @return [Boolean]
442
+ option :enabled do |o|
443
+ o.default { env_to_bool(Core::Telemetry::Ext::ENV_ENABLED, false) }
444
+ o.lazy
445
+ end
446
+ end
447
+
448
+ # TODO: Tracing should manage its own settings.
449
+ # Keep this extension here for now to keep things working.
450
+ extend Datadog::Tracing::Configuration::Settings
619
451
  end
620
452
  # rubocop:enable Metrics/BlockLength
621
- # rubocop:enable Metrics/ClassLength
622
- # rubocop:enable Layout/LineLength
623
453
  end
624
454
  end
625
455
  end
@@ -1,16 +1,13 @@
1
- # typed: true
2
-
3
- require 'datadog/core/configuration/components'
4
- require 'datadog/core/configuration/settings'
5
- require 'datadog/core/logger'
6
- require 'datadog/core/pin'
1
+ require_relative 'configuration/components'
2
+ require_relative 'configuration/settings'
3
+ require_relative 'telemetry/emitter'
4
+ require_relative 'logger'
5
+ require_relative 'pin'
7
6
 
8
7
  module Datadog
9
8
  module Core
10
9
  # Configuration provides a unique access point for configurations
11
- module Configuration # rubocop:disable Metrics/ModuleLength
12
- include Kernel # Ensure that kernel methods are always available (https://sorbet.org/docs/error-reference#7003)
13
-
10
+ module Configuration
14
11
  # Used to ensure that @components initialization/reconfiguration is performed one-at-a-time, by a single thread.
15
12
  #
16
13
  # This is important because components can end up being accessed from multiple application threads (for instance on
@@ -89,7 +86,9 @@ module Datadog
89
86
  if components?
90
87
  replace_components!(configuration, @components)
91
88
  else
92
- build_components(configuration)
89
+ components = build_components(configuration)
90
+ components.telemetry.started!
91
+ components
93
92
  end
94
93
  )
95
94
  end
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require 'date'
4
2
  require 'json'
5
3
  require 'rbconfig'
@@ -106,10 +104,14 @@ module Datadog
106
104
  Datadog.configuration.version
107
105
  end
108
106
 
109
- # @return [String] target agent URL for trace flushing
107
+ # @return [String, nil] target agent URL for trace flushing
110
108
  def agent_url
111
109
  # Retrieve the effect agent URL, regardless of how it was configured
112
110
  transport = Tracing.send(:tracer).writer.transport
111
+
112
+ # return `nil` with IO transport
113
+ return unless transport.respond_to?(:client)
114
+
113
115
  adapter = transport.client.api.adapter
114
116
  adapter.url
115
117
  end
@@ -151,7 +153,7 @@ module Datadog
151
153
  def sampling_rules
152
154
  sampler = Datadog.configuration.tracing.sampler
153
155
  return nil unless sampler.is_a?(Tracing::Sampling::PrioritySampler) &&
154
- sampler.priority_sampler.is_a?(Tracing::Sampling::RuleSampler)
156
+ sampler.priority_sampler.is_a?(Tracing::Sampling::RuleSampler)
155
157
 
156
158
  sampler.priority_sampler.rules.map do |rule|
157
159
  next unless rule.is_a?(Tracing::Sampling::SimpleRule)
@@ -217,9 +219,9 @@ module Datadog
217
219
  !!Datadog.configuration.diagnostics.health_metrics.enabled
218
220
  end
219
221
 
220
- # TODO: Populate when profiling is implemented
221
- # def profiling_enabled
222
- # end
222
+ def profiling_enabled
223
+ !!Datadog.configuration.profiling.enabled
224
+ end
223
225
 
224
226
  # TODO: Populate when automatic log correlation is implemented
225
227
  # def logs_correlation_enabled
@@ -250,6 +252,7 @@ module Datadog
250
252
  partial_flushing_enabled: partial_flushing_enabled,
251
253
  priority_sampling_enabled: priority_sampling_enabled,
252
254
  health_metrics_enabled: health_metrics_enabled,
255
+ profiling_enabled: profiling_enabled,
253
256
  **instrumented_integrations_settings
254
257
  }
255
258
  end
@@ -1,7 +1,5 @@
1
- # typed: strict
2
-
3
- require 'datadog/core/diagnostics/ext'
4
- require 'datadog/core/metrics/client'
1
+ require_relative '../metrics/client'
2
+ require_relative '../../tracing/diagnostics/health'
5
3
 
6
4
  module Datadog
7
5
  module Core
@@ -10,26 +8,8 @@ module Datadog
10
8
  module Health
11
9
  # Health metrics for diagnostics
12
10
  class Metrics < Core::Metrics::Client
13
- count :api_errors, Ext::Health::Metrics::METRIC_API_ERRORS
14
- count :api_requests, Ext::Health::Metrics::METRIC_API_REQUESTS
15
- count :api_responses, Ext::Health::Metrics::METRIC_API_RESPONSES
16
- count :error_context_overflow, Ext::Health::Metrics::METRIC_ERROR_CONTEXT_OVERFLOW
17
- count :error_instrumentation_patch, Ext::Health::Metrics::METRIC_ERROR_INSTRUMENTATION_PATCH
18
- count :error_span_finish, Ext::Health::Metrics::METRIC_ERROR_SPAN_FINISH
19
- count :error_unfinished_spans, Ext::Health::Metrics::METRIC_ERROR_UNFINISHED_SPANS
20
- count :instrumentation_patched, Ext::Health::Metrics::METRIC_INSTRUMENTATION_PATCHED
21
- count :queue_accepted, Ext::Health::Metrics::METRIC_QUEUE_ACCEPTED
22
- count :queue_accepted_lengths, Ext::Health::Metrics::METRIC_QUEUE_ACCEPTED_LENGTHS
23
- count :queue_dropped, Ext::Health::Metrics::METRIC_QUEUE_DROPPED
24
- count :traces_filtered, Ext::Health::Metrics::METRIC_TRACES_FILTERED
25
- count :transport_trace_too_large, Ext::Health::Metrics::METRIC_TRANSPORT_TRACE_TOO_LARGE
26
- count :transport_chunked, Ext::Health::Metrics::METRIC_TRANSPORT_CHUNKED
27
- count :writer_cpu_time, Ext::Health::Metrics::METRIC_WRITER_CPU_TIME
28
-
29
- gauge :queue_length, Ext::Health::Metrics::METRIC_QUEUE_LENGTH
30
- gauge :queue_max_length, Ext::Health::Metrics::METRIC_QUEUE_MAX_LENGTH
31
- gauge :queue_spans, Ext::Health::Metrics::METRIC_QUEUE_SPANS
32
- gauge :sampling_service_cache_length, Ext::Health::Metrics::METRIC_SAMPLING_SERVICE_CACHE_LENGTH
11
+ # TODO: Don't reference this. Have tracing add its metrics behavior.
12
+ extend Tracing::Diagnostics::Health::Metrics
33
13
  end
34
14
  end
35
15
  end
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  require 'json'
4
2
  require 'msgpack'
5
3
 
@@ -10,8 +8,6 @@ module Datadog
10
8
  # Encoder interface that provides the logic to encode traces and service
11
9
  # @abstract
12
10
  module Encoder
13
- include Kernel # Ensure that kernel methods are always available (https://sorbet.org/docs/error-reference#7003)
14
-
15
11
  def content_type
16
12
  raise NotImplementedError
17
13
  end
@@ -1,6 +1,4 @@
1
- # typed: true
2
-
3
- require 'datadog/core/environment/ext'
1
+ require_relative 'ext'
4
2
 
5
3
  module Datadog
6
4
  module Core
@@ -10,8 +8,6 @@ module Datadog
10
8
  # about the current Linux container identity.
11
9
  # @see https://man7.org/linux/man-pages/man7/cgroups.7.html
12
10
  module Cgroup
13
- include Kernel # Ensure that kernel methods are always available (https://sorbet.org/docs/error-reference#7003)
14
-
15
11
  LINE_REGEX = /^(\d+):([^:]*):(.+)$/.freeze
16
12
 
17
13
  Descriptor = Struct.new(
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  module Datadog
4
2
  module Core
5
3
  module Environment
@@ -1,14 +1,10 @@
1
- # typed: true
2
-
3
- require 'datadog/core/environment/cgroup'
1
+ require_relative 'cgroup'
4
2
 
5
3
  module Datadog
6
4
  module Core
7
5
  module Environment
8
6
  # For container environments
9
7
  module Container
10
- include Kernel # Ensure that kernel methods are always available (https://sorbet.org/docs/error-reference#7003)
11
-
12
8
  UUID_PATTERN = '[0-9a-f]{8}[-_]?[0-9a-f]{4}[-_]?[0-9a-f]{4}[-_]?[0-9a-f]{4}[-_]?[0-9a-f]{12}'.freeze
13
9
  CONTAINER_PATTERN = '[0-9a-f]{64}'.freeze
14
10
 
@@ -1,6 +1,4 @@
1
- # typed: true
2
-
3
- require 'ddtrace/version'
1
+ require_relative '../../../ddtrace/version'
4
2
 
5
3
  module Datadog
6
4
  module Core
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  module Datadog
4
2
  module Core
5
3
  module Environment
@@ -1,9 +1,7 @@
1
- # typed: false
2
-
3
1
  require 'securerandom'
4
2
 
5
- require 'datadog/core/environment/ext'
6
- require 'datadog/core/utils/forking'
3
+ require_relative 'ext'
4
+ require_relative '../utils/forking'
7
5
 
8
6
  module Datadog
9
7
  module Core
@@ -1,8 +1,6 @@
1
- # typed: false
2
-
3
1
  require 'etc'
4
2
 
5
- require 'datadog/core/environment/identity'
3
+ require_relative 'identity'
6
4
 
7
5
  module Datadog
8
6
  module Core
@@ -1,7 +1,5 @@
1
- # typed: false
2
-
3
1
  require 'socket'
4
- require 'datadog/core/utils/forking'
2
+ require_relative '../utils/forking'
5
3
 
6
4
  module Datadog
7
5
  module Core
@@ -1,5 +1,3 @@
1
- # typed: true
2
-
3
1
  module Datadog
4
2
  module Core
5
3
  module Environment