ddtrace 1.2.0 → 1.10.1

Sign up to get free protection for your applications and to get access to all the features.
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
data/docs/UpgradeGuide.md DELETED
@@ -1,736 +0,0 @@
1
- # Upgrading ddtrace
2
-
3
- # From 0.x to 1.0
4
-
5
- Upgrading `ddtrace` from 0.x to 1.x introduces some breaking changes which are outlined below.
6
-
7
- **How to upgrade basic usage**
8
-
9
- For users with a basic implementation (configuration file + out-of-the-box instrumentation), only minor changes to your configuration file are required: most applications take just minutes to update. Check out the following sections for a step-by-step guide.
10
-
11
- - [Configuration](#1.0-configuration)
12
- - [`require` paths have changed](#1.0-configuration-requires)
13
- - [Settings have been renamed](#1.0-configuration-settings)
14
- - [Activating instrumentation](#1.0-configuration-instrumentation)
15
- - [Instrumentation](#1.0-instrumentation)
16
- - [Service naming](#1.0-instrumentation-service-naming)
17
-
18
- **Additional upgrades for advanced usage**
19
-
20
- For users with an advanced implementation of `ddtrace` (custom instrumentation, sampling or processing behavior, etc), some additional namespace and behavioral changes may be required. See the following sections for details about what features changed and how to use them.
21
-
22
- - [Namespacing](#1.0-namespacing)
23
- - [Trace API](#1.0-trace-api)
24
- - [Removed `Datadog.tracer`](#1.0-trace-api-removed-tracer)
25
- - [Removed access to `Datadog::Context`](#1.0-trace-api-removed-context)
26
- - [Manual tracing & trace model](#1.0-trace-api-manual-tracing)
27
- - [Accessing trace state](#1.0-trace-api-trace-state)
28
- - [Distributed tracing](#1.0-trace-api-distributed)
29
- - [Over HTTP](#1.0-trace-api-distributed-http)
30
- - [Over gRPC](#1.0-trace-api-distributed-grpc)
31
- - [Between threads](#1.0-trace-api-distributed-threads)
32
- - [Sampling](#1.0-trace-api-sampling)
33
- - [Processing pipeline](#1.0-trace-api-pipeline)
34
-
35
- **Appendix**
36
-
37
- For a comprehensive list of everything that changed, the appendix hosts some helpful and detailed tables with recommendations.
38
-
39
- - [Namespace mappings](#1.0-appendix-namespace)
40
- - [Constants](#1.0-appendix-namespace-constants)
41
- - [Breaking changes](#1.0-appendix-breaking-changes)
42
-
43
- <h1 id="1.0-basic-upgrade">Upgrading basic usage</h1>
44
-
45
- <h2 id="1.0-configuration">Configuration</h2>
46
-
47
- <h3 id="1.0-configuration-requires">`require` paths have changed</h3>
48
-
49
- If you `require` any of the following paths, update them accordingly:
50
-
51
- | 0.x `require` path | 1.0 `require` path |
52
- |-----------------------------|-----------------------------|
53
- | `ddtrace/opentelemetry` | Removed |
54
- | `ddtrace/opentracer` | `datadog/opentracer` |
55
- | `ddtrace/profiling/preload` | `datadog/profiling/preload` |
56
-
57
- Using `require 'ddtrace'` will load all features by default. To load individual features, you may use the following paths instead:
58
-
59
- | Feature | 1.0 `require` path |
60
- |-------------|----------------------|
61
- | AppSec | `datadog/appsec` |
62
- | CI | `datadog/ci` |
63
- | OpenTracing | `datadog/opentracer` |
64
- | Profiling | `datadog/profiling` |
65
- | Tracing | `datadog/tracing` |
66
-
67
- <h3 id="1.0-configuration-settings">Settings have been renamed</h3>
68
-
69
- Configuration settings have been sorted into smaller configuration groups, by feature.
70
-
71
- - `Datadog.configure { |c| c.* }`: Datadog configuration settings
72
- - `Datadog.configure { |c| c.tracing.* }`: Tracing configuration settings
73
- - `Datadog.configure { |c| c.profiling.* }`: Profiling configuration settings
74
- - `Datadog.configure { |c| c.ci.* }`: CI configuration settings
75
-
76
- For existing applications, configuration files should be updated accordingly. For example:
77
-
78
- ```ruby
79
- # config/initializers/datadog.rb
80
- require 'ddtrace'
81
-
82
- ### Old 0.x ###
83
- Datadog.configure do |c|
84
- # Global settings
85
- c.tracer.hostname = '127.0.0.1'
86
- c.tracer.port = 8126
87
- c.runtime_metrics_enabled = true
88
- c.service = 'billing-api'
89
-
90
- # Tracing settings
91
- c.analytics.enabled = true
92
- c.tracer.partial_flush.enabled = true
93
-
94
- # CI settings
95
- c.ci_mode = (ENV['DD_ENV'] == 'ci')
96
-
97
- # Instrumentation
98
- c.use :rails
99
- c.use :redis, service_name: 'billing-redis'
100
- c.use :rspec
101
- end
102
-
103
-
104
- ### New 1.0 ###
105
- Datadog.configure do |c|
106
- # Global settings
107
- c.agent.host = '127.0.0.1'
108
- c.agent.port = 8126
109
- c.runtime_metrics.enabled = true
110
- c.service = 'billing-api'
111
-
112
- # Tracing settings
113
- c.tracing.analytics.enabled = true
114
- c.tracing.partial_flush.enabled = true
115
-
116
- # CI settings
117
- c.ci.enabled = (ENV['DD_ENV'] == 'ci')
118
-
119
- # Instrumentation
120
- c.tracing.instrument :rails
121
- c.tracing.instrument :redis, service_name: 'billing-redis'
122
- c.ci.instrument :rspec
123
- end
124
- ```
125
-
126
- Check out the table below for a list of common mappings:
127
-
128
- | 0.x setting | 1.0 setting |
129
- |----------------------------------------|---------------------------------|
130
- | `analytics.enabled` | `tracing.analytics.enabled` |
131
- | `ci_mode.context_flush` | `ci.context_flush` |
132
- | `ci_mode.enabled` | `ci.enabled` |
133
- | `ci_mode.writer_options` | `ci.writer_options` |
134
- | `distributed_tracing` | `tracing.distributed_tracing` |
135
- | `logger=` | `logger.instance=` |
136
- | `profiling.exporter.transport_options` | Removed |
137
- | `report_hostname` | `tracing.report_hostname` |
138
- | `runtime_metrics_enabled` | `runtime_metrics.enabled` |
139
- | `runtime_metrics(options)` | Removed |
140
- | `sampling` | `tracing.sampling` |
141
- | `test_mode` | `tracing.test_mode` |
142
- | `tracer=` | Removed |
143
- | `tracer.debug` | `diagnostics.debug` |
144
- | `tracer.enabled` | `tracing.enabled` |
145
- | `tracer.env` | `env` |
146
- | `tracer.hostname` | `agent.host` |
147
- | `tracer.instance` | `tracing.instance` |
148
- | `tracer.log` | `logger.instance` |
149
- | `tracer.partial_flush` | `tracing.partial_flush.enabled` |
150
- | `tracer.port` | `agent.port` |
151
- | `tracer.sampler` | `tracing.sampler` |
152
- | `tracer.tags` | `tags` |
153
- | `tracer.transport_options` | `tracing.transport_options` |
154
- | `tracer.transport_options(options)` | Removed |
155
- | `tracer.writer` | `tracing.writer` |
156
- | `tracer.writer_options` | `tracing.writer_options` |
157
- | `use` | `tracing.instrument` |
158
-
159
- <h3 id="1.0-configuration-instrumentation">Activating instrumentation</h3>
160
-
161
- - The `use` function has been renamed to `instrument`.
162
- - `instrument` has been namespaced within the feature to which it belongs.
163
-
164
- As an example:
165
-
166
- ```ruby
167
- ### Old 0.x ###
168
- Datadog.configure do |c|
169
- # Tracing instrumentation
170
- c.use :rails
171
-
172
- # CI instrumentation
173
- c.use :cucumber
174
- end
175
-
176
-
177
- ### New 1.0 ###
178
- Datadog.configure do |c|
179
- # Tracing instrumentation
180
- c.tracing.instrument :rails
181
-
182
- # CI instrumentation
183
- c.ci.instrument :cucumber
184
- end
185
- ```
186
-
187
- Similarly, if you were accessing configuration for instrumentation, you will need to use the appropriate namespace:
188
-
189
- ```ruby
190
- ### Old 0.x ###
191
- Datadog.configuration[:rails][:service_name]
192
- Datadog.configuration[:cucumber][:service_name]
193
-
194
- ### New 1.0 ###
195
- Datadog.configuration.tracing[:rails][:service_name]
196
- Datadog.configuration.ci[:cucumber][:service_name]
197
- ```
198
-
199
- <h2 id="1.0-instrumentation">Instrumentation</h2>
200
-
201
- <h3 id="1.0-instrumentation-service-naming">Service naming</h3>
202
-
203
- **Define an application service name**
204
-
205
- We recommend setting the application's service name with `DD_SERVICE`, or by adding the following configuration:
206
-
207
- ```ruby
208
- Datadog.configure do |c|
209
- c.service = 'billing-api' # Or DD_SERVICE. Defaults to process name.
210
- end
211
- ```
212
-
213
- If this is not set, it will default to the process name.
214
-
215
- **Update service names for your integrations**
216
-
217
- Spans now inherit the global `service` name by default, unless otherwise explicitly set. This means, generally speaking, spans generated by Datadog integrations will default to the global `service` name, unless the `service_name` setting is configured for that integration.
218
-
219
- Spans that describe external services (e.g. `mysql`) will continue to default to some other name that describes the external service instead. (e.g. `mysql`)
220
-
221
- ```ruby
222
- ### Old 0.x ###
223
- Datadog.configure do |c|
224
- # Instrumentation that measures internal behavior
225
- c.use :rails, service_name: 'billing-api'
226
- c.use :resque, service_name: 'billing-api'
227
- c.use :sidekiq, service_name: 'billing-api'
228
-
229
- # Instrumentation that measures external services
230
- c.use :active_record, service_name: 'billing-api_mysql' # Defaults to DB type e.g. mysql
231
- c.use :http, service_name: 'billing-api_http' # Defaults to net/http
232
- c.use :redis, service_name: 'billing-api_redis' # Defaults to redis
233
- end
234
-
235
- ### New 1.0 ###
236
- Datadog.configure do |c|
237
- c.service = 'billing-api'
238
-
239
- # Instrumentation that measures internal behavior
240
- # now inherits the application's service name.
241
- c.tracing.instrument :rails
242
- c.tracing.instrument :resque
243
- c.tracing.instrument :sidekiq
244
-
245
- # Instrumentation that measures external services
246
- # defaults to adapter-specific names. You may still override
247
- # these names with the `service_name:` option.
248
- c.tracing.instrument :active_record, service_name: 'billing-api_mysql' # Defaults to DB type e.g. mysql
249
- c.tracing.instrument :http, service_name: 'billing-api_http' # Defaults to net/http
250
- c.tracing.instrument :redis, service_name: 'billing-api_redis' # Defaults to redis
251
- end
252
- ```
253
-
254
- **Update Rails instrumentation**
255
-
256
- If your application activates and configures `rails` instrumentation, you will need to adjust your settings slightly.
257
-
258
- The following options have been removed; instead, configure the underlying instrumentation directly.
259
-
260
- | 0.x setting | 1.0 setting |
261
- |---------------------------------------------|----------------------------------------------------------------|
262
- | `use :rails, cache_service: <SERVICE>` | `tracing.instrument :active_support, cache_service: <SERVICE>` |
263
- | `use :rails, controller_service: <SERVICE>` | `tracing.instrument :action_pack, service_name: <SERVICE>` |
264
- | `use :rails, database_service: <SERVICE>` | `tracing.instrument :active_record, service_name: <SERVICE>` |
265
- | `use :rails, job_service: <SERVICE>` | `tracing.instrument :active_job, service_name: <SERVICE>` |
266
- | `use :rails, log_injection: true` | `tracing.log_injection = true` (Is `true` by default.) |
267
-
268
- ```ruby
269
- ### Old 0.x ###
270
- Datadog.configure do |c|
271
- c.use :rails, service_name: 'billing-api',
272
- cache_service: 'billing-api-cache',
273
- controller_service: 'billing-api-controllers',
274
- database_service: 'billing-api-db',
275
- job_service: 'billing-api-jobs',
276
- log_injection: true
277
- end
278
-
279
- ### New 1.0 ###
280
- Datadog.configure do |c|
281
- c.service = 'billing-api'
282
-
283
- c.tracing.instrument :rails
284
- c.tracing.instrument :active_support, cache_service: 'billing-api-cache'
285
- c.tracing.instrument :action_pack, service_name: 'billing-api-controllers'
286
- c.tracing.instrument :active_record, service_name: 'billing-api-db'
287
- c.tracing.instrument :active_job, service_name: 'billing-api-jobs'
288
- end
289
- ```
290
-
291
- <h1 id="1.0-advanced-upgrade">Upgrading advanced usage</h1>
292
-
293
- <h2 id="1.0-namespacing">Namespacing</h2>
294
-
295
- Many files and constants within `ddtrace` have been recategorized by feature. The new categorization scheme is as follows:
296
-
297
- | Feature | Namespace | File path |
298
- |------------------|--------------------------|-------------------------|
299
- | Globals | `Datadog` | `ddtrace` |
300
- | | | |
301
- | CI | `Datadog::CI` | `datadog/ci` |
302
- | Core (Internals) | `Datadog::Core` | `datadog/core` |
303
- | OpenTelemetry | `Datadog::OpenTelemetry` | `datadog/opentelemetry` |
304
- | OpenTracing | `Datadog::OpenTracer` | `datadog/opentracer` |
305
- | Profiling | `Datadog::Profiling` | `datadog/profiling` |
306
- | Security | `Datadog::AppSec` | `datadog/appsec` |
307
- | Tracing | `Datadog::Tracing` | `datadog/trace` |
308
-
309
- As a result, if your application referenced file paths or constants affected by this change, they will need to be updated. Check out the [namespace mappings](#1.0-appendix-namespace) for some common cases and how to update them.
310
-
311
- <h2 id="1.0-trace-api">Trace API</h2>
312
-
313
- Usage of `Datadog.tracer` has been replaced with the `Datadog::Tracing` trace API. This module contains most of the functions that `Datadog.tracer` had, and most use cases will map one-to-one.
314
-
315
- For example:
316
-
317
- ```ruby
318
- ### Old 0.x ###
319
- Datadog.tracer.trace
320
- Datadog.tracer.active_span
321
- Datadog.tracer.active_correlation.to_s
322
-
323
-
324
- ### New 1.0 ###
325
- Datadog::Tracing.trace
326
- Datadog::Tracing.active_span
327
- Datadog::Tracing.log_correlation
328
-
329
- # ...and more...
330
- ```
331
-
332
- See the table below for most common mappings:
333
-
334
- | 0.x usage | 1.0 usage | Note |
335
- |----------------------------------------------------------------------------------------------|---------------------------------------------|---------------------------------------------------------------------|
336
- | `Datadog.tracer.active_correlation.to_s` | `Datadog::Tracing.log_correlation` | Returns `String` with trace identifiers for logging. |
337
- | `Datadog.tracer.active_correlation` | `Datadog::Tracing.correlation` | Returns `Datadog::Tracing::Correlation::Identifier` |
338
- | `Datadog.tracer.active_root_span` | Removed | Consider `Datadog::Tracing.active_trace` instead. |
339
- | `Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_KEEP` | `Datadog::Tracing.keep!` | See [sampling](#1.0-trace-api-sampling) for details. |
340
- | `Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_REJECT` | `Datadog::Tracing.reject!` | See [sampling](#1.0-trace-api-sampling) for details. |
341
- | `Datadog.tracer.active_span.context` | Removed | Consider `Datadog::Tracing.active_trace` instead. |
342
- | `Datadog.tracer.active_span` | `Datadog::Tracing.active_span` | See [trace state](#1.0-trace-api-trace-state) for details. |
343
- | `Datadog.tracer.call_context` | Removed | See [trace state](#1.0-trace-api-trace-state) for details. |
344
- | `Datadog.tracer.configure(options)` | `Datadog.configure { \|c\| ... }` | Use configuration API instead. |
345
- | `Datadog.tracer.provider.context = context` | `Datadog::Tracing.continue_trace!(digest)` | See [distributed tracing](#1.0-trace-api-distributed) for details. |
346
- | `Datadog.tracer.set_tags(tags)` | `Datadog.configure { \|c\| c.tags = tags }` | |
347
- | `Datadog.tracer.shutdown!` | `Datadog::Tracing.shutdown!` | |
348
- | `Datadog.tracer.start_span` | `Datadog::Tracing.trace` | See [manual tracing](#1.0-trace-api-manual-tracing) for details. |
349
- | `Datadog.tracer.trace` | `Datadog::Tracing.trace` | See [manual tracing](#1.0-trace-api-manual-tracing) for details. |
350
-
351
-
352
- Also check out the functions defined within `Datadog::Tracing` in our [public API](https://www.rubydoc.info/gems/ddtrace/) for more details on their usage.
353
-
354
- <h3 id="1.0-trace-api-removed-tracer">Removed `Datadog.tracer`</h3>
355
-
356
- Many of the functions accessed directly through `Datadog.tracer` have been moved to `Datadog::Tracing` instead.
357
-
358
- <h3 id="1.0-trace-api-removed-context">Removed access to `Datadog::Context`</h3>
359
-
360
- Direct usage of `Datadog::Context` has been removed. Previously, it was used to modify or access active trace state. Most use cases have been replaced by our [public trace API](https://www.rubydoc.info/gems/ddtrace/).
361
-
362
- <h3 id="1.0-trace-api-manual-tracing">Manual tracing & trace model</h3>
363
-
364
- Manual tracing is now done through the [public API](https://www.rubydoc.info/gems/ddtrace/).
365
-
366
- Whereas in 0.x, the block would provide a `Datadog::Span` as `span`, in 1.0, the block provides a `Datadog::SpanOperation` as `span` and `Datadog::TraceOperation` as `trace`.
367
-
368
- ```ruby
369
- ### Old 0.x ###
370
- Datadog.tracer.trace('my.job') do |span|
371
- # Do work...
372
- # span => #<Datadog::Tracing::Span>
373
- end
374
-
375
-
376
- ### New 1.0 ###
377
- Datadog::Tracing.trace('my.job') do |span, trace|
378
- # Do work...
379
- # span => #<Datadog::Tracing::SpanOperation>
380
- # trace => #<Datadog::Tracing::TraceOperation>
381
- end
382
- ```
383
-
384
- The provided `span` is nearly identical in behavior, except access to some fields (like `context`) been removed. Instead, the provided `trace`, which models the trace itself, grants access to new functions, of which some replace old `span` behavior.
385
-
386
- For more details about new behaviors and the trace model, see [this pull request](https://github.com/DataDog/dd-trace-rb/pull/1783).
387
-
388
- <h3 id="1.0-trace-api-trace-state">Accessing trace state</h3>
389
-
390
- The public API provides new functions to access active trace data:
391
-
392
- ```ruby
393
- ### Old 0.x ###
394
- # Retuns the active context (contains trace state)
395
- Datadog.tracer.call_context
396
- # Returns the active Span
397
- Datadog.tracer.active_span
398
- # Returns an immutable set of identifiers for the current trace state
399
- Datadog.tracer.active_correlation
400
-
401
-
402
- ### New 1.0 ###
403
- # Retuns the active TraceOperation for the current thread (contains trace state)
404
- Datadog::Tracing.active_trace
405
- # Returns the active SpanOperation for the current thread (contains span state)
406
- Datadog::Tracing.active_span
407
- # Returns an immutable set of identifiers for the current trace state
408
- Datadog::Tracing.correlation
409
- ```
410
-
411
- Use of `active_root_span` has been removed.
412
-
413
- <h3 id="1.0-trace-api-distributed">Distributed tracing</h3>
414
-
415
- Previously, distributed tracing required building new `Datadog::Context` objects, then replacing the context within the tracer.
416
-
417
- Instead, users must use `TraceDigest` objects derived from a trace. `TraceDigest` represents the state of a trace. It can be used to propagate a trace across execution boundaries (processes, threads) or to continue a trace locally.
418
-
419
- ```ruby
420
- ### Old 0.x ###
421
- # Get trace continuation from active trace
422
- env = {}
423
- Datadog::HTTPPropagator.inject(Datadog.tracer.call_context, env)
424
- context = Datadog::HTTPPropagator.extract(env)
425
-
426
- # Continue a trace: implicit continuation
427
- Datadog.tracer.provider.context = context
428
-
429
- # Next trace inherits trace properties
430
- Datadog.tracer.trace('my.job') do |span|
431
- span.trace_id == context.trace_id
432
- end
433
-
434
-
435
- ### New 1.0 ###
436
- # Get trace continuation from active trace
437
- trace_digest = Datadog::Tracing.active_trace.to_digest
438
-
439
- # Continue a trace: implicit continuation
440
- # Digest will be "consumed" by the next `trace` operation
441
- Datadog::Tracing.continue_trace!(trace_digest)
442
-
443
- # Next trace inherits trace properties
444
- Datadog::Tracing.trace('my.job') do |span, trace|
445
- trace.id == trace_digest.trace_id
446
- end
447
-
448
- # Second trace does NOT inherit trace properties
449
- Datadog::Tracing.trace('my.job') do |span, trace|
450
- trace.id != trace_digest.trace_id
451
- end
452
- ```
453
-
454
- New in 1.0, it's also possible to explicitly assign a trace block to continue from a specific trace, rather than implicitly inherit an active context. This gives users fine-grained control in applications where multiple traces run concurrently in the same execution context:
455
-
456
- ```ruby
457
- ### New 1.0 ###
458
- # Get trace continuation from active trace
459
- trace_digest = Datadog::Tracing.active_trace.to_digest
460
-
461
- # Continue a trace: explicit continuation
462
- # Inherits trace properties from the trace digest
463
- Datadog::Tracing.trace('my.job', continue_from: trace_digest) do |span, trace|
464
- trace.id == trace_digest.trace_id
465
- end
466
-
467
- # Continue a trace: explicit continuation (using #continue_trace!)
468
- Datadog::Tracing.continue_trace!(trace_digest) do
469
- # Traces implicitly continue within the block
470
- Datadog::Tracing.trace('my.job') do |span, trace|
471
- trace.id == trace_digest.trace_id
472
- end
473
- end
474
- ```
475
-
476
- <h4 id="1.0-trace-api-distributed-http">Over HTTP</h4>
477
-
478
- To propagate active trace to a remote service:
479
-
480
- ```ruby
481
- ### Old 0.x ###
482
- headers = {}
483
- context = Datadog.tracer.call_context
484
- Datadog::HTTPPropagator.inject!(context, headers)
485
-
486
- outgoing = Net::HTTP::Get.new(uri)
487
- headers.each { |name, value| outgoing[name] = value }
488
-
489
- ### New 1.0 ###
490
- headers = {}
491
- trace_digest = Datadog::Tracing.active_trace.to_digest
492
- Datadog::Tracing::Propagation::HTTP.inject!(trace_digest, headers)
493
-
494
- outgoing = Net::HTTP::Get.new(uri)
495
- headers.each { |name, value| outgoing[name] = value }
496
- ```
497
-
498
- To continue a trace from a remote service:
499
-
500
- ```ruby
501
- ### Old 0.x ###
502
- incoming = Rack::Request.new(env)
503
- context = Datadog::HTTPPropagator.extract(incoming.env)
504
- Datadog.tracer.provider.context = context
505
-
506
- ### New 1.0 ###
507
- incoming = Rack::Request.new(env)
508
- trace_digest = Datadog::Tracing::Propagation::HTTP.extract(incoming.env)
509
- Datadog::Tracing.continue_trace!(trace_digest)
510
- ```
511
-
512
- <h4 id="1.0-trace-api-distributed-grpc">Over gRPC</h4>
513
-
514
- To propagate active trace to a remote service:
515
-
516
- ```ruby
517
- ### Old 0.x ###
518
- context = Datadog.tracer.call_context
519
- Datadog::GRPCPropagator.inject!(context, metadata)
520
-
521
- ### New 1.0 ###
522
- trace_digest = Datadog::Tracing.active_trace.to_digest
523
- Datadog::Tracing::Propagation::GRPC.inject!(trace_digest, metadata)
524
- ```
525
-
526
- To continue a trace from a remote service:
527
-
528
- ```ruby
529
- ### Old 0.x ###
530
- context = Datadog::GRPCPropagator.extract(metadata)
531
- Datadog.tracer.provider.context = context
532
-
533
- ### New 1.0 ###
534
- trace_digest = Datadog::Tracing::Propagation::GRPC.extract(metadata)
535
- Datadog::Tracing.continue_trace!(trace_digest)
536
- ```
537
-
538
- <h4 id="1.0-trace-api-distributed-threads">Between threads</h4>
539
-
540
- Traces do not implicitly propagate across threads, as they are considered different execution contexts.
541
-
542
- However, if you wish to do this, trace propagation across threads is similar to cross-process. A `TraceDigest` should be produced by the parent thread and consumed by the child thread.
543
-
544
- NOTE: The same `TraceOperation` object should never be shared between threads; this would create race conditions.
545
-
546
- ```ruby
547
- ### New 1.0 ###
548
- # Get trace digest
549
- trace = Datadog::Tracing.active_trace
550
-
551
- # NOTE: We must produce the digest BEFORE starting the thread.
552
- # Otherwise if it's lazily evaluated within the thread,
553
- # the thread's trace may follow the wrong parent span.
554
- trace_digest = trace.to_digest
555
-
556
- Thread.new do
557
- # Inherits trace properties from the trace digest
558
- Datadog::Tracing.trace('my.job', continue_from: trace_digest) do |span, trace|
559
- trace.id == trace_digest.trace_id
560
- end
561
- end
562
- ```
563
-
564
- <h3 id="1.0-trace-api-sampling">Sampling</h3>
565
-
566
- Accessing `call_context` to set explicit sampling has been removed.
567
-
568
- Instead, use the `TraceOperation` to set the sampling decision.
569
-
570
- ```ruby
571
- ### Old 0.x ###
572
- # From within the trace:
573
- Datadog.tracer.trace('web.request') do |span|
574
- span.context.sampling_priority = Datadog::Ext::Priority::USER_REJECT if env.path == '/healthcheck'
575
- end
576
-
577
- # From outside the trace:
578
- # Keeps current trace
579
- Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_KEEP
580
- # Drops current trace
581
- Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_REJECT
582
-
583
-
584
- ### New 1.0 ###
585
- # From within the trace:
586
- Datadog::Tracing.trace('web.request') do |span, trace|
587
- trace.reject! if env.path == '/healthcheck'
588
- end
589
-
590
- # From outside the trace:
591
- Datadog::Tracing.keep! # Keeps current trace
592
- Datadog::Tracing.reject! # Drops current trace
593
- ```
594
-
595
- <h3 id="1.0-trace-api-pipeline">Processing pipeline</h3>
596
-
597
- When using a trace processor in the processing pipeline, the block provides a `TraceSegment` as `trace` (instead of `Array[Datadog::Span]`.) This object can be directly mutated.
598
-
599
- ```ruby
600
- ### Old 0.x ###
601
- Datadog::Pipeline.before_flush do |trace|
602
- # Processing logic...
603
- trace # => Array[Datadog::Span]
604
- end
605
-
606
-
607
- ### New 1.0 ###
608
- Datadog::Tracing.before_flush do |trace|
609
- # Processing logic...
610
- trace # => #<Datadog::Tracing::TraceSegment>
611
- end
612
- ```
613
-
614
- <h2 id="1.0-appendix">Appendix</h2>
615
-
616
- <h3 id="1.0-appendix-namespace">Namespace mappings</h3>
617
-
618
- <h4 id="1.0-appendix-namespace-constants">Constants</h3>
619
-
620
- | `0.x Constant` | `1.0 Constant` |
621
- |-----------------------------------------------------------------|-----------------------------------------------------------------------------------------|
622
- | `Datadog::AllSampler` | `Datadog::Tracing::Sampling::AllSampler` |
623
- | `Datadog::Buffer` | `Datadog::Core::Buffer::Random` |
624
- | `Datadog::Chunker` | `Datadog::Core::Chunker` |
625
- | `Datadog::Configuration` | `Datadog::Core::Configuration` |
626
- | `Datadog::ContextFlush` | `Datadog::Tracing::Flush` |
627
- | `Datadog::CRubyBuffer` | `Datadog::Core::Buffer::CRuby` |
628
- | `Datadog::Diagnostics` | `Datadog::Core::Diagnostics` |
629
- | `Datadog::DistributedTracing` | `Datadog::Tracing::Distributed` |
630
- | `Datadog::Encoding` | `Datadog::Core::Encoding` |
631
- | `Datadog::Error` | `Datadog::Core::Error` |
632
- | `Datadog::Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED` | `Datadog::Tracing::Configuration::Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED` |
633
- | `Datadog::Ext::Analytics` | `Datadog::Tracing::Metadata::Ext::Analytics` |
634
- | `Datadog::Ext::AppTypes` | `Datadog::Tracing::Metadata::Ext::AppTypes` |
635
- | `Datadog::Ext::Correlation::ENV_LOGS_INJECTION_ENABLED` | `Datadog::Tracing::Configuration::Ext::Correlation::ENV_LOGS_INJECTION_ENABLED` |
636
- | `Datadog::Ext::Correlation` | `Datadog::Tracing::Correlation::Identifier` |
637
- | `Datadog::Ext::Diagnostics` | `Datadog::Core::Diagnostics::Ext` |
638
- | `Datadog::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT` | `Datadog::Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT` |
639
- | `Datadog::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT` | `Datadog::Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT` |
640
- | `Datadog::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER` | `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER` |
641
- | `Datadog::Ext::Distributed::PROPAGATION_STYLE_B3` | `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3` |
642
- | `Datadog::Ext::Distributed::PROPAGATION_STYLE_DATADOG` | `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG` |
643
- | `Datadog::Ext::Distributed` | `Datadog::Tracing::Metadata::Ext::Distributed` |
644
- | `Datadog::Ext::DistributedTracing::TAG_ORIGIN` | `Datadog::Tracing::Metadata::Ext::Distributed::TAG_ORIGIN` |
645
- | `Datadog::Ext::DistributedTracing::TAG_SAMPLING_PRIORITY` | `Datadog::Tracing::Metadata::Ext::Distributed::TAG_SAMPLING_PRIORITY` |
646
- | `Datadog::Ext::DistributedTracing` | `Datadog::Tracing::Distributed::Headers::Ext` |
647
- | `Datadog::Ext::Environment` | `Datadog::Core::Environment::Ext` |
648
- | `Datadog::Ext::Errors` | `Datadog::Tracing::Metadata::Ext::Errors` |
649
- | `Datadog::Ext::Git` | `Datadog::Core::Git::Ext` |
650
- | `Datadog::Ext::HTTP` | `Datadog::Tracing::Metadata::Ext::HTTP` |
651
- | `Datadog::Ext::Integration` | `Datadog::Tracing::Metadata::Ext` |
652
- | `Datadog::Ext::NET::ENV_REPORT_HOSTNAME` | `Datadog::Tracing::Configuration::Ext::NET::ENV_REPORT_HOSTNAME` |
653
- | `Datadog::Ext::NET` | `Datadog::Tracing::Metadata::Ext::NET` |
654
- | `Datadog::Ext::Priority` | `Datadog::Tracing::Sampling::Ext::Priority` |
655
- | `Datadog::Ext::Runtime` | `Datadog::Core::Runtime::Ext` |
656
- | `Datadog::Ext::Sampling::ENV_RATE_LIMIT` | `Datadog::Tracing::Configuration::Ext::Sampling::ENV_RATE_LIMIT` |
657
- | `Datadog::Ext::Sampling::ENV_SAMPLE_RATE` | `Datadog::Tracing::Configuration::Ext::Sampling::ENV_SAMPLE_RATE` |
658
- | `Datadog::Ext::Sampling` | `Datadog::Tracing::Metadata::Ext::Sampling` |
659
- | `Datadog::Ext::SQL` | `Datadog::Tracing::Metadata::Ext::SQL` |
660
- | `Datadog::Ext::Test` | `Datadog::Tracing::Configuration::Ext::Test` |
661
- | `Datadog::Ext::Transport::HTTP::ENV_DEFAULT_HOST` | `Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_HOST` |
662
- | `Datadog::Ext::Transport::HTTP::ENV_DEFAULT_PORT` | `Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_PORT` |
663
- | `Datadog::Ext::Transport::HTTP::ENV_DEFAULT_URL` | `Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_URL` |
664
- | `Datadog::Ext::Transport` | `Datadog::Transport::Ext` |
665
- | `Datadog::GRPCPropagator` | `Datadog::Tracing::Propagation::GRPC` |
666
- | `Datadog::HTTPPropagator` | `Datadog::Tracing::Propagation::HTTP` |
667
- | `Datadog::Logger` | `Datadog::Core::Logger` |
668
- | `Datadog::Metrics` | `Datadog::Core::Metrics::Client` |
669
- | `Datadog::PrioritySampler` | `Datadog::Tracing::Sampling::PrioritySampler` |
670
- | `Datadog::Quantization` | `Datadog::Contrib::Utils::Quantization` |
671
- | `Datadog::RateByKeySampler` | `Datadog::Tracing::Sampling::RateByKeySampler` |
672
- | `Datadog::RateByServiceSampler` | `Datadog::Tracing::Sampling::RateByServiceSampler` |
673
- | `Datadog::RateSampler` | `Datadog::Tracing::Sampling::RateSampler` |
674
- | `Datadog::Runtime` | `Datadog::Core::Runtime` |
675
- | `Datadog::Sampler` | `Datadog::Tracing::Sampling::Sampler` |
676
- | `Datadog::Tagging::Analytics` | `Datadog::Tracing::Metadata::Analytics` |
677
- | `Datadog::Tagging::Metadata` | `Datadog::Tracing::Metadata::Tagging` |
678
- | `Datadog::ThreadSafeBuffer` | `Datadog::Core::Buffer::ThreadSafe` |
679
- | `Datadog::Utils` | `Datadog::Core::Utils` |
680
- | `Datadog::Vendor::ActiveRecord` | `Datadog::Contrib::ActiveRecord::Vendor` |
681
- | `Datadog::Vendor::Multipart` | `Datadog::Core::Vendor::Multipart` |
682
- | `Datadog::Worker` | `Datadog::Core::Worker` |
683
- | `Datadog::Workers` | `Datadog::Core::Workers` |
684
-
685
- <h3 id="1.0-appendix-breaking-changes">Breaking changes</h3>
686
-
687
- | **Category** | **Type** | **Description** | **Change / Alternative** |
688
- |---------------------------------------|----------|---------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
689
- | General | Changed | Many constants have been moved from `Datadog` to `Datadog::Core`, `Datadog::Tracing` | Update your references to these [new namespaces](#1.0-appendix-namespace-constants) where appropriate. |
690
- | General | Changed | Some `require` paths have been moved from `ddtrace` to `datadog` | Update your references to these [new paths](#1.0-appendix-namespace-requires) where appropriate. |
691
- | General | Removed | Support for trace agent API v0.2 | Use v0.4 instead (default behavior.) |
692
- | General | Removed | `Datadog.configure` can no longer be called without a block | Remove uses of `Datadog.configure` without a block. |
693
- | CI API | Changed | `DD_TRACE_CI_MODE_ENABLED` environment variable is now `DD_TRACE_CI_ENABLED` | Use `DD_TRACE_CI_ENABLED` instead. |
694
- | Configuration | Changed | Many settings have been namespaced under specific categories | Update your configuration to these [new settings](#1.0-configuration-settings) where appropriate. |
695
- | Configuration | Removed | `Datadog.configure(client, options)` | Use `Datadog::Tracing.configure_onto(client, options)` instead. |
696
- | Configuration | Removed | `DD_#{integration}_ANALYTICS_ENABLED` and `DD_#{integration}_ANALYTICS_SAMPLE_RATE` environment variables | Use `DD_TRACE_#{integration}_ANALYTICS_ENABLED` and `DD_TRACE_#{integration}_ANALYTICS_SAMPLE_RATE` instead. |
697
- | Configuration | Removed | `DD_PROPAGATION_INJECT_STYLE` and `DD_PROPAGATION_EXTRACT_STYLE` environment variables | Use `DD_PROPAGATION_STYLE_INJECT` and `DD_PROPAGATION_STYLE_EXTRACT` instead. |
698
- | Integrations | Changed | `-` in HTTP header tag names are kept, and no longer replaced with `_` | For example: `http.response.headers.content_type` is changed to `http.response.headers.content-type`. |
699
- | Integrations | Changed | `Contrib::Configurable#default_configuration` moved to `Tracing::Contrib::Configurable#new_configuration` | Use `Tracing::Contrib::Configurable#new_configuration` instead. |
700
- | Integrations | Changed | `Datadog.configuration.registry` moved to `Datadog.registry` | Use `Datadog.registry` instead. |
701
- | Integrations | Changed | `service_name` option from each integration uses the default service name, unless it represents an external service | Set `c.service` or `DD_SERVICE`, and remove `service_name` option from integration to inherit default service name. Set `service_name` option on integration to override. |
702
- | Integrations | Removed | `tracer` integration option from all integrations | Remove this option from your configuration. |
703
- | Integrations - ActiveJob | Removed | `log_injection` option | Use `c.tracing.log_injection` instead. |
704
- | Integrations - ActiveModelSerializers | Removed | service_name configuration | Remove this option from your configuration. |
705
- | Integrations - ConcurrentRuby | Removed | unused option `service_name` | Remove this option from your configuration. |
706
- | Integrations - Presto | Changed | `out.host` tag now contains only client hostname. Before it contained `"#{hostname}:#{port}"`. | |
707
- | Integrations - Rails | Changed | `service_name` does not propagate to sub-components (e.g. `c.use :rails, cache_service: 'my-cache'`) | Use `c.service` instead. |
708
- | Integrations - Rails | Changed | Sub-components service_name options are now consistently called `:service_name` | Update your configuration to use `:service_name`. |
709
- | Integrations - Rails | Changed | Trace-logging correlation is enabled by default | Can be disabled using the environment variable `DD_LOGS_INJECTION=false`. |
710
- | Integrations - Rails | Removed | `log_injection` option. | Use global `c.tracing.log_injection` instead. |
711
- | Integrations - Rails | Removed | `orm_service_name` option. | Remove this option from your configuration. |
712
- | Integrations - Rails | Removed | 3.0 and 3.1 support. | Not supported. |
713
- | Integrations - Resque | Removed | `workers` option. (All Resque workers are now automatically instrumented.) | Remove this option from your configuration. |
714
- | Tracing API | Changed | `Correlation#to_s` to `Correlation#to_log_format` | Use `Datadog::Tracing.log_correlation` instead. |
715
- | Tracing API | Changed | `Tracer#trace` implements keyword args | Omit invalid options from `trace` calls. |
716
- | Tracing API | Changed | Distributed tracing takes and returns `TraceDigest` instead of `Context` | Update your usage of distributed tracing to use `continue_from` and `to_digest`. |
717
- | Tracing API | Changed | Rules for RuleSampler now return `TraceOperation` instead of `Span` | Update Rule sampler usage to use `TraceOperation`. |
718
- | Tracing API | Changed | Trace processors return `TraceSegment` instead of `Array[Span]` | Update pipeline callbacks to use `TraceSegment instead. |
719
- | Tracing API | Removed | `child_of:` option from `Tracer#trace` | Not supported. |
720
- | Tracing API | Removed | `Datadog.tracer` | Use methods in `Datadog::Tracing` instead. |
721
- | Tracing API | Removed | `Pin.get_from(client)` | Use `Datadog::Tracing.configure_for(client)` instead. |
722
- | Tracing API | Removed | `Pin.new(service, config: { option: value }).onto(client)` | Use `Datadog::Tracing.configure_onto(client, service_name: service, option: value)` instead. |
723
- | Tracing API | Removed | `Pipeline.before_flush` | Use `Datadog::Tracing.before_flush` instead. |
724
- | Tracing API | Removed | `SpanOperation#context` | Use `Datadog::Tracing.active_trace` instead. |
725
- | Tracing API | Removed | `SpanOperation#parent`/`SpanOperation#parent=` | Not supported. |
726
- | Tracing API | Removed | `SpanOperation#sampled` | Use `Datadog::TraceOperation#sampled?` instead. |
727
- | Tracing API | Removed | `Tracer#active_correlation.to_log_format` | Use `Datadog::Tracing.log_correlation` instead. |
728
- | Tracing API | Removed | `Tracer#active_correlation` | Use `Datadog::Tracing.correlation` instead. |
729
- | Tracing API | Removed | `Tracer#active_root_span` | Use `Datadog::Tracing.active_trace` instead. |
730
- | Tracing API | Removed | `Tracer#build_span` | Use `Datadog::Tracing.trace` instead. |
731
- | Tracing API | Removed | `Tracer#call_context` | Use `Datadog::Tracing.active_trace` instead. |
732
- | Tracing API | Removed | `Tracer#configure` | Not supported. |
733
- | Tracing API | Removed | `Tracer#services` | Not supported. |
734
- | Tracing API | Removed | `Tracer#set_service_info` | Not supported. |
735
- | Tracing API | Removed | `Tracer#start_span` | Use `Datadog::Tracing.trace` instead. |
736
- | Tracing API | Removed | `Writer#write` and `SyncWriter#write` `services` argument | Not supported. |