ddtrace 1.0.0.beta1 → 1.0.0.beta2

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 (592) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +85 -1
  3. data/ddtrace.gemspec +2 -2
  4. data/docs/GettingStarted.md +211 -144
  5. data/docs/UpgradeGuide.md +383 -205
  6. data/ext/ddtrace_profiling_native_extension/extconf.rb +9 -0
  7. data/ext/ddtrace_profiling_native_extension/profiling.c +3 -1
  8. data/lib/datadog/appsec/assets/waf_rules/recommended.json +248 -318
  9. data/lib/datadog/appsec/assets/waf_rules/risky.json +78 -18
  10. data/lib/datadog/appsec/assets/waf_rules/strict.json +4 -67
  11. data/lib/datadog/appsec/assets.rb +2 -0
  12. data/lib/datadog/appsec/configuration/settings.rb +3 -1
  13. data/lib/datadog/appsec/configuration.rb +2 -0
  14. data/lib/datadog/appsec/contrib/auto_instrument.rb +2 -0
  15. data/lib/datadog/appsec/contrib/configuration/settings.rb +2 -0
  16. data/lib/datadog/appsec/contrib/integration.rb +2 -0
  17. data/lib/datadog/appsec/contrib/patcher.rb +2 -0
  18. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +2 -0
  19. data/lib/datadog/appsec/contrib/rack/ext.rb +2 -0
  20. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +2 -4
  21. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +4 -2
  22. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +4 -2
  23. data/lib/datadog/appsec/contrib/rack/request.rb +2 -0
  24. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +4 -45
  25. data/lib/datadog/appsec/contrib/rack/response.rb +2 -0
  26. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +2 -0
  27. data/lib/datadog/appsec/contrib/rails/ext.rb +2 -0
  28. data/lib/datadog/appsec/contrib/rails/framework.rb +2 -0
  29. data/lib/datadog/appsec/contrib/rails/patcher.rb +1 -1
  30. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +2 -0
  31. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +2 -0
  32. data/lib/datadog/appsec/contrib/sinatra/ext.rb +2 -0
  33. data/lib/datadog/appsec/contrib/sinatra/framework.rb +2 -0
  34. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +2 -0
  35. data/lib/datadog/appsec/event.rb +12 -17
  36. data/lib/datadog/appsec/extensions.rb +2 -1
  37. data/lib/datadog/appsec/instrumentation/gateway.rb +2 -0
  38. data/lib/datadog/appsec/processor.rb +121 -0
  39. data/lib/datadog/appsec/rate_limiter.rb +2 -0
  40. data/lib/datadog/appsec/reactive/address_hash.rb +2 -0
  41. data/lib/datadog/appsec/reactive/engine.rb +2 -0
  42. data/lib/datadog/appsec/reactive/operation.rb +2 -0
  43. data/lib/datadog/appsec/reactive/subscriber.rb +2 -0
  44. data/lib/datadog/appsec.rb +2 -0
  45. data/lib/datadog/ci/configuration/components.rb +1 -0
  46. data/lib/datadog/ci/configuration/settings.rb +9 -2
  47. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +1 -0
  48. data/lib/datadog/ci/contrib/cucumber/ext.rb +1 -0
  49. data/lib/datadog/ci/contrib/cucumber/formatter.rb +2 -1
  50. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +1 -0
  51. data/lib/datadog/ci/contrib/cucumber/integration.rb +1 -0
  52. data/lib/datadog/ci/contrib/cucumber/patcher.rb +1 -0
  53. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +1 -0
  54. data/lib/datadog/ci/contrib/rspec/example.rb +3 -2
  55. data/lib/datadog/ci/contrib/rspec/ext.rb +1 -0
  56. data/lib/datadog/ci/contrib/rspec/integration.rb +1 -0
  57. data/lib/datadog/ci/contrib/rspec/patcher.rb +1 -0
  58. data/lib/datadog/ci/ext/app_types.rb +1 -0
  59. data/lib/datadog/ci/ext/environment.rb +2 -1
  60. data/lib/datadog/ci/ext/settings.rb +1 -0
  61. data/lib/datadog/ci/ext/test.rb +1 -0
  62. data/lib/datadog/ci/extensions.rb +1 -0
  63. data/lib/datadog/ci/flush.rb +1 -0
  64. data/lib/datadog/ci/test.rb +2 -1
  65. data/lib/datadog/ci.rb +3 -1
  66. data/lib/datadog/core/buffer/cruby.rb +1 -0
  67. data/lib/datadog/core/buffer/thread_safe.rb +1 -0
  68. data/lib/datadog/core/configuration/agent_settings_resolver.rb +109 -40
  69. data/lib/datadog/core/configuration/base.rb +1 -0
  70. data/lib/datadog/core/configuration/components.rb +1 -0
  71. data/lib/datadog/core/configuration/dependency_resolver.rb +1 -0
  72. data/lib/datadog/core/configuration/option.rb +1 -0
  73. data/lib/datadog/core/configuration/option_definition.rb +1 -0
  74. data/lib/datadog/core/configuration/option_definition_set.rb +1 -0
  75. data/lib/datadog/core/configuration/option_set.rb +1 -0
  76. data/lib/datadog/core/configuration/options.rb +1 -0
  77. data/lib/datadog/core/configuration/settings.rb +1 -9
  78. data/lib/datadog/core/configuration.rb +1 -0
  79. data/lib/datadog/core/diagnostics/environment_logger.rb +2 -1
  80. data/lib/datadog/core/diagnostics/ext.rb +1 -0
  81. data/lib/datadog/core/diagnostics/health.rb +2 -1
  82. data/lib/datadog/core/encoding.rb +1 -0
  83. data/lib/datadog/core/environment/cgroup.rb +1 -0
  84. data/lib/datadog/core/environment/class_count.rb +1 -0
  85. data/lib/datadog/core/environment/container.rb +1 -0
  86. data/lib/datadog/core/environment/ext.rb +1 -0
  87. data/lib/datadog/core/environment/gc.rb +1 -0
  88. data/lib/datadog/core/environment/identity.rb +1 -0
  89. data/lib/datadog/core/environment/socket.rb +1 -0
  90. data/lib/datadog/core/environment/thread_count.rb +1 -0
  91. data/lib/datadog/core/environment/variable_helpers.rb +1 -0
  92. data/lib/datadog/core/environment/vm_cache.rb +1 -0
  93. data/lib/datadog/core/error.rb +2 -1
  94. data/lib/datadog/core/extensions.rb +2 -1
  95. data/lib/datadog/core/git/ext.rb +1 -0
  96. data/lib/datadog/core/logger.rb +1 -0
  97. data/lib/datadog/core/metrics/client.rb +1 -0
  98. data/lib/datadog/core/metrics/ext.rb +1 -0
  99. data/lib/datadog/core/metrics/helpers.rb +2 -0
  100. data/lib/datadog/core/metrics/logging.rb +2 -0
  101. data/lib/datadog/core/metrics/metric.rb +2 -0
  102. data/lib/datadog/core/metrics/options.rb +2 -0
  103. data/lib/datadog/core/pin.rb +1 -1
  104. data/lib/datadog/core/runtime/metrics.rb +1 -0
  105. data/lib/datadog/core/utils/compression.rb +1 -0
  106. data/lib/datadog/core/utils/forking.rb +1 -0
  107. data/lib/datadog/core/utils/object_set.rb +1 -0
  108. data/lib/datadog/core/utils/only_once.rb +2 -1
  109. data/lib/datadog/core/utils/safe_dup.rb +27 -0
  110. data/lib/datadog/core/utils/sequence.rb +1 -0
  111. data/lib/datadog/core/utils/string_table.rb +1 -0
  112. data/lib/datadog/core/utils/time.rb +1 -0
  113. data/lib/datadog/core/utils.rb +1 -0
  114. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -0
  115. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +1 -0
  116. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +1 -0
  117. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +1 -0
  118. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +1 -0
  119. data/lib/datadog/core/vendor/multipart-post/multipart.rb +1 -0
  120. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +1 -0
  121. data/lib/datadog/core/worker.rb +1 -0
  122. data/lib/datadog/core/workers/async.rb +1 -0
  123. data/lib/datadog/core/workers/interval_loop.rb +1 -0
  124. data/lib/datadog/core/workers/polling.rb +1 -0
  125. data/lib/datadog/core/workers/queue.rb +1 -0
  126. data/lib/datadog/core/workers/runtime_metrics.rb +1 -0
  127. data/lib/datadog/core.rb +1 -0
  128. data/lib/datadog/opentracer/binary_propagator.rb +1 -0
  129. data/lib/datadog/opentracer/carrier.rb +1 -0
  130. data/lib/datadog/opentracer/distributed_headers.rb +1 -0
  131. data/lib/datadog/opentracer/global_tracer.rb +1 -0
  132. data/lib/datadog/opentracer/propagator.rb +1 -0
  133. data/lib/datadog/opentracer/rack_propagator.rb +1 -0
  134. data/lib/datadog/opentracer/scope.rb +1 -0
  135. data/lib/datadog/opentracer/scope_manager.rb +1 -0
  136. data/lib/datadog/opentracer/span.rb +1 -0
  137. data/lib/datadog/opentracer/span_context.rb +1 -0
  138. data/lib/datadog/opentracer/span_context_factory.rb +1 -0
  139. data/lib/datadog/opentracer/text_map_propagator.rb +1 -0
  140. data/lib/datadog/opentracer/thread_local_scope.rb +1 -0
  141. data/lib/datadog/opentracer/thread_local_scope_manager.rb +1 -0
  142. data/lib/datadog/opentracer/tracer.rb +1 -0
  143. data/lib/datadog/opentracer.rb +1 -0
  144. data/lib/datadog/profiling/backtrace_location.rb +1 -0
  145. data/lib/datadog/profiling/buffer.rb +1 -0
  146. data/lib/datadog/profiling/collectors/code_provenance.rb +2 -1
  147. data/lib/datadog/profiling/collectors/stack.rb +1 -1
  148. data/lib/datadog/profiling/encoding/profile.rb +1 -0
  149. data/lib/datadog/profiling/event.rb +1 -0
  150. data/lib/datadog/profiling/events/stack.rb +1 -0
  151. data/lib/datadog/profiling/exporter.rb +1 -0
  152. data/lib/datadog/profiling/ext/forking.rb +1 -0
  153. data/lib/datadog/profiling/ext.rb +3 -2
  154. data/lib/datadog/profiling/flush.rb +1 -0
  155. data/lib/datadog/profiling/native_extension.rb +1 -0
  156. data/lib/datadog/profiling/pprof/builder.rb +2 -1
  157. data/lib/datadog/profiling/pprof/converter.rb +1 -0
  158. data/lib/datadog/profiling/pprof/message_set.rb +1 -0
  159. data/lib/datadog/profiling/pprof/payload.rb +1 -0
  160. data/lib/datadog/profiling/pprof/pprof_pb.rb +1 -0
  161. data/lib/datadog/profiling/pprof/stack_sample.rb +1 -0
  162. data/lib/datadog/profiling/pprof/string_table.rb +1 -0
  163. data/lib/datadog/profiling/pprof/template.rb +1 -0
  164. data/lib/datadog/profiling/preload.rb +1 -0
  165. data/lib/datadog/profiling/profiler.rb +1 -0
  166. data/lib/datadog/profiling/recorder.rb +1 -0
  167. data/lib/datadog/profiling/scheduler.rb +2 -1
  168. data/lib/datadog/profiling/tasks/exec.rb +1 -0
  169. data/lib/datadog/profiling/tasks/help.rb +1 -0
  170. data/lib/datadog/profiling/tasks/setup.rb +1 -0
  171. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +2 -1
  172. data/lib/datadog/profiling/trace_identifiers/helper.rb +2 -1
  173. data/lib/datadog/profiling/transport/client.rb +1 -0
  174. data/lib/datadog/profiling/transport/http/api/endpoint.rb +1 -0
  175. data/lib/datadog/profiling/transport/http/api/instance.rb +1 -0
  176. data/lib/datadog/profiling/transport/http/api/spec.rb +1 -0
  177. data/lib/datadog/profiling/transport/http/api.rb +1 -0
  178. data/lib/datadog/profiling/transport/http/builder.rb +1 -0
  179. data/lib/datadog/profiling/transport/http/client.rb +1 -0
  180. data/lib/datadog/profiling/transport/http/response.rb +1 -0
  181. data/lib/datadog/profiling/transport/http.rb +1 -0
  182. data/lib/datadog/profiling/transport/io/client.rb +1 -0
  183. data/lib/datadog/profiling/transport/io/response.rb +1 -0
  184. data/lib/datadog/profiling/transport/io.rb +1 -0
  185. data/lib/datadog/profiling/transport/parcel.rb +1 -0
  186. data/lib/datadog/profiling/transport/request.rb +1 -0
  187. data/lib/datadog/profiling/transport/response.rb +1 -0
  188. data/lib/datadog/profiling.rb +1 -0
  189. data/lib/datadog/tracing/analytics.rb +1 -0
  190. data/lib/datadog/tracing/buffer.rb +1 -0
  191. data/lib/datadog/tracing/configuration/ext.rb +1 -0
  192. data/lib/datadog/tracing/context.rb +1 -0
  193. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +1 -0
  194. data/lib/datadog/tracing/contrib/action_cable/event.rb +2 -1
  195. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +1 -0
  196. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +1 -0
  197. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +1 -0
  198. data/lib/datadog/tracing/contrib/action_cable/events.rb +1 -0
  199. data/lib/datadog/tracing/contrib/action_cable/ext.rb +1 -0
  200. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +1 -1
  201. data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -0
  202. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +1 -0
  203. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +1 -0
  204. data/lib/datadog/tracing/contrib/action_mailer/event.rb +2 -1
  205. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +1 -0
  206. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +1 -0
  207. data/lib/datadog/tracing/contrib/action_mailer/events.rb +1 -0
  208. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +1 -0
  209. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -0
  210. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +1 -0
  211. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +3 -2
  212. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +1 -0
  213. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +1 -0
  214. data/lib/datadog/tracing/contrib/action_pack/ext.rb +1 -0
  215. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -0
  216. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +1 -0
  217. data/lib/datadog/tracing/contrib/action_pack/utils.rb +2 -1
  218. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +1 -0
  219. data/lib/datadog/tracing/contrib/action_view/event.rb +2 -1
  220. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +1 -0
  221. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -0
  222. data/lib/datadog/tracing/contrib/action_view/events.rb +1 -0
  223. data/lib/datadog/tracing/contrib/action_view/ext.rb +1 -0
  224. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +1 -0
  225. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +1 -0
  226. data/lib/datadog/tracing/contrib/action_view/integration.rb +1 -0
  227. data/lib/datadog/tracing/contrib/action_view/patcher.rb +1 -0
  228. data/lib/datadog/tracing/contrib/action_view/utils.rb +2 -1
  229. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +1 -0
  230. data/lib/datadog/tracing/contrib/active_job/event.rb +2 -1
  231. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -0
  232. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -0
  233. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -0
  234. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -0
  235. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -0
  236. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -0
  237. data/lib/datadog/tracing/contrib/active_job/events.rb +1 -0
  238. data/lib/datadog/tracing/contrib/active_job/ext.rb +1 -0
  239. data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -0
  240. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +1 -0
  241. data/lib/datadog/tracing/contrib/active_job/patcher.rb +1 -0
  242. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +1 -0
  243. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +2 -1
  244. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -0
  245. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +1 -0
  246. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +1 -0
  247. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +1 -0
  248. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -0
  249. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +2 -1
  250. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +1 -0
  251. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -0
  252. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +1 -0
  253. data/lib/datadog/tracing/contrib/active_record/event.rb +2 -1
  254. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -0
  255. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +2 -1
  256. data/lib/datadog/tracing/contrib/active_record/events.rb +1 -0
  257. data/lib/datadog/tracing/contrib/active_record/ext.rb +1 -0
  258. data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -0
  259. data/lib/datadog/tracing/contrib/active_record/patcher.rb +1 -0
  260. data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -0
  261. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +1 -0
  262. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +2 -1
  263. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +1 -0
  264. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +1 -0
  265. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +1 -0
  266. data/lib/datadog/tracing/contrib/active_support/ext.rb +1 -0
  267. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -0
  268. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -0
  269. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +1 -0
  270. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +1 -0
  271. data/lib/datadog/tracing/contrib/active_support/patcher.rb +1 -0
  272. data/lib/datadog/tracing/contrib/analytics.rb +1 -0
  273. data/lib/datadog/tracing/contrib/auto_instrument.rb +23 -20
  274. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +1 -0
  275. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -0
  276. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +3 -1
  277. data/lib/datadog/tracing/contrib/aws/integration.rb +1 -0
  278. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +1 -0
  279. data/lib/datadog/tracing/contrib/aws/patcher.rb +2 -1
  280. data/lib/datadog/tracing/contrib/aws/services.rb +1 -0
  281. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +1 -0
  282. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +2 -1
  283. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +1 -0
  284. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -0
  285. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -0
  286. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +1 -0
  287. data/lib/datadog/tracing/contrib/configurable.rb +1 -0
  288. data/lib/datadog/tracing/contrib/configuration/resolver.rb +1 -0
  289. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -0
  290. data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -0
  291. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +1 -0
  292. data/lib/datadog/tracing/contrib/dalli/ext.rb +1 -0
  293. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +2 -1
  294. data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -0
  295. data/lib/datadog/tracing/contrib/dalli/patcher.rb +1 -0
  296. data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -0
  297. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +1 -0
  298. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +1 -0
  299. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -0
  300. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +1 -0
  301. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +2 -1
  302. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +1 -0
  303. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +1 -0
  304. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +1 -0
  305. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +2 -1
  306. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -0
  307. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +1 -0
  308. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +2 -1
  309. data/lib/datadog/tracing/contrib/ethon/ext.rb +1 -0
  310. data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -0
  311. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +2 -1
  312. data/lib/datadog/tracing/contrib/ethon/patcher.rb +1 -0
  313. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +1 -0
  314. data/lib/datadog/tracing/contrib/excon/ext.rb +1 -0
  315. data/lib/datadog/tracing/contrib/excon/integration.rb +1 -0
  316. data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -1
  317. data/lib/datadog/tracing/contrib/excon/patcher.rb +1 -0
  318. data/lib/datadog/tracing/contrib/extensions.rb +57 -42
  319. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +1 -0
  320. data/lib/datadog/tracing/contrib/faraday/connection.rb +1 -0
  321. data/lib/datadog/tracing/contrib/faraday/ext.rb +1 -0
  322. data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -0
  323. data/lib/datadog/tracing/contrib/faraday/middleware.rb +2 -1
  324. data/lib/datadog/tracing/contrib/faraday/patcher.rb +1 -0
  325. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +1 -0
  326. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +1 -0
  327. data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -2
  328. data/lib/datadog/tracing/contrib/grape/ext.rb +1 -0
  329. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +1 -0
  330. data/lib/datadog/tracing/contrib/grape/integration.rb +1 -0
  331. data/lib/datadog/tracing/contrib/grape/patcher.rb +1 -0
  332. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +1 -0
  333. data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
  334. data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -0
  335. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -1
  336. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +1 -0
  337. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +1 -0
  338. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -0
  339. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +3 -2
  340. data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
  341. data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -0
  342. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +1 -0
  343. data/lib/datadog/tracing/contrib/grpc/patcher.rb +1 -0
  344. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +2 -1
  345. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +1 -0
  346. data/lib/datadog/tracing/contrib/http/ext.rb +1 -0
  347. data/lib/datadog/tracing/contrib/http/instrumentation.rb +2 -1
  348. data/lib/datadog/tracing/contrib/http/integration.rb +1 -0
  349. data/lib/datadog/tracing/contrib/http/patcher.rb +1 -0
  350. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +1 -0
  351. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +1 -0
  352. data/lib/datadog/tracing/contrib/httpclient/ext.rb +1 -0
  353. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +3 -2
  354. data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -0
  355. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +1 -0
  356. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +1 -0
  357. data/lib/datadog/tracing/contrib/httprb/ext.rb +1 -0
  358. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +3 -2
  359. data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -0
  360. data/lib/datadog/tracing/contrib/httprb/patcher.rb +1 -0
  361. data/lib/datadog/tracing/contrib/integration.rb +2 -1
  362. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +1 -0
  363. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +1 -0
  364. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +1 -0
  365. data/lib/datadog/tracing/contrib/kafka/event.rb +2 -1
  366. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -0
  367. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -0
  368. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -0
  369. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -0
  370. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -0
  371. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -0
  372. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -0
  373. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -0
  374. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -0
  375. data/lib/datadog/tracing/contrib/kafka/events.rb +1 -0
  376. data/lib/datadog/tracing/contrib/kafka/ext.rb +1 -0
  377. data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -0
  378. data/lib/datadog/tracing/contrib/kafka/patcher.rb +1 -0
  379. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +1 -0
  380. data/lib/datadog/tracing/contrib/lograge/ext.rb +1 -0
  381. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +2 -1
  382. data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -0
  383. data/lib/datadog/tracing/contrib/lograge/patcher.rb +1 -0
  384. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -0
  385. data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -0
  386. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +1 -0
  387. data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -0
  388. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +2 -1
  389. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +1 -0
  390. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +3 -2
  391. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +1 -0
  392. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -0
  393. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +2 -1
  394. data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -0
  395. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +1 -0
  396. data/lib/datadog/tracing/contrib/patchable.rb +1 -0
  397. data/lib/datadog/tracing/contrib/patcher.rb +1 -0
  398. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +1 -0
  399. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -0
  400. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +2 -1
  401. data/lib/datadog/tracing/contrib/presto/integration.rb +1 -0
  402. data/lib/datadog/tracing/contrib/presto/patcher.rb +1 -0
  403. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +1 -0
  404. data/lib/datadog/tracing/contrib/qless/ext.rb +1 -0
  405. data/lib/datadog/tracing/contrib/qless/integration.rb +1 -0
  406. data/lib/datadog/tracing/contrib/qless/patcher.rb +2 -1
  407. data/lib/datadog/tracing/contrib/qless/qless_job.rb +3 -2
  408. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +2 -1
  409. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +2 -1
  410. data/lib/datadog/tracing/contrib/que/ext.rb +2 -1
  411. data/lib/datadog/tracing/contrib/que/integration.rb +2 -1
  412. data/lib/datadog/tracing/contrib/que/patcher.rb +2 -1
  413. data/lib/datadog/tracing/contrib/que/tracer.rb +3 -2
  414. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +1 -0
  415. data/lib/datadog/tracing/contrib/racecar/event.rb +2 -1
  416. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +1 -0
  417. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -0
  418. data/lib/datadog/tracing/contrib/racecar/events/message.rb +1 -0
  419. data/lib/datadog/tracing/contrib/racecar/events.rb +1 -0
  420. data/lib/datadog/tracing/contrib/racecar/ext.rb +1 -0
  421. data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -0
  422. data/lib/datadog/tracing/contrib/racecar/patcher.rb +1 -0
  423. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +1 -0
  424. data/lib/datadog/tracing/contrib/rack/ext.rb +1 -0
  425. data/lib/datadog/tracing/contrib/rack/integration.rb +1 -0
  426. data/lib/datadog/tracing/contrib/rack/middlewares.rb +2 -1
  427. data/lib/datadog/tracing/contrib/rack/patcher.rb +3 -2
  428. data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -0
  429. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +3 -1
  430. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +5 -4
  431. data/lib/datadog/tracing/contrib/rails/ext.rb +1 -0
  432. data/lib/datadog/tracing/contrib/rails/framework.rb +37 -36
  433. data/lib/datadog/tracing/contrib/rails/integration.rb +1 -0
  434. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -0
  435. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -0
  436. data/lib/datadog/tracing/contrib/rails/patcher.rb +2 -1
  437. data/lib/datadog/tracing/contrib/rails/railtie.rb +1 -0
  438. data/lib/datadog/tracing/contrib/rails/utils.rb +1 -0
  439. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +1 -0
  440. data/lib/datadog/tracing/contrib/rake/ext.rb +1 -0
  441. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -2
  442. data/lib/datadog/tracing/contrib/rake/integration.rb +1 -0
  443. data/lib/datadog/tracing/contrib/rake/patcher.rb +2 -1
  444. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -0
  445. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +1 -0
  446. data/lib/datadog/tracing/contrib/redis/ext.rb +1 -0
  447. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +2 -1
  448. data/lib/datadog/tracing/contrib/redis/integration.rb +1 -0
  449. data/lib/datadog/tracing/contrib/redis/patcher.rb +1 -0
  450. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -0
  451. data/lib/datadog/tracing/contrib/redis/tags.rb +2 -1
  452. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +1 -0
  453. data/lib/datadog/tracing/contrib/registry.rb +1 -0
  454. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +1 -0
  455. data/lib/datadog/tracing/contrib/resque/ext.rb +1 -0
  456. data/lib/datadog/tracing/contrib/resque/integration.rb +1 -0
  457. data/lib/datadog/tracing/contrib/resque/patcher.rb +1 -0
  458. data/lib/datadog/tracing/contrib/resque/resque_job.rb +3 -2
  459. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +1 -0
  460. data/lib/datadog/tracing/contrib/rest_client/ext.rb +1 -0
  461. data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -0
  462. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +1 -0
  463. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +2 -1
  464. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +1 -0
  465. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +1 -0
  466. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +2 -1
  467. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -0
  468. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +1 -0
  469. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +1 -0
  470. data/lib/datadog/tracing/contrib/sequel/database.rb +2 -1
  471. data/lib/datadog/tracing/contrib/sequel/dataset.rb +2 -1
  472. data/lib/datadog/tracing/contrib/sequel/ext.rb +1 -0
  473. data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -0
  474. data/lib/datadog/tracing/contrib/sequel/patcher.rb +1 -0
  475. data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -1
  476. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +1 -0
  477. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +1 -0
  478. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -0
  479. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -0
  480. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +2 -1
  481. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +2 -1
  482. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +1 -0
  483. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
  484. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -0
  485. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +1 -0
  486. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +1 -1
  487. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +1 -1
  488. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +1 -1
  489. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +2 -1
  490. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +1 -0
  491. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +1 -0
  492. data/lib/datadog/tracing/contrib/sinatra/env.rb +1 -0
  493. data/lib/datadog/tracing/contrib/sinatra/ext.rb +1 -0
  494. data/lib/datadog/tracing/contrib/sinatra/framework.rb +3 -1
  495. data/lib/datadog/tracing/contrib/sinatra/headers.rb +1 -0
  496. data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -0
  497. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +1 -0
  498. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +3 -2
  499. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +2 -1
  500. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +2 -1
  501. data/lib/datadog/tracing/contrib/sneakers/ext.rb +2 -1
  502. data/lib/datadog/tracing/contrib/sneakers/integration.rb +2 -1
  503. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -1
  504. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +3 -2
  505. data/lib/datadog/tracing/contrib/status_code_matcher.rb +1 -0
  506. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +1 -0
  507. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +1 -0
  508. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +1 -0
  509. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +2 -1
  510. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -0
  511. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +2 -1
  512. data/lib/datadog/tracing/contrib/utils/database.rb +1 -0
  513. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +1 -0
  514. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +1 -0
  515. data/lib/datadog/tracing/contrib.rb +3 -0
  516. data/lib/datadog/tracing/correlation.rb +2 -1
  517. data/lib/datadog/tracing/distributed/headers/b3.rb +1 -0
  518. data/lib/datadog/tracing/distributed/headers/b3_single.rb +1 -0
  519. data/lib/datadog/tracing/distributed/headers/datadog.rb +1 -0
  520. data/lib/datadog/tracing/distributed/headers/ext.rb +1 -0
  521. data/lib/datadog/tracing/distributed/helpers.rb +1 -0
  522. data/lib/datadog/tracing/distributed/parser.rb +1 -0
  523. data/lib/datadog/tracing/event.rb +1 -0
  524. data/lib/datadog/tracing/flush.rb +1 -0
  525. data/lib/datadog/tracing/metadata/analytics.rb +2 -0
  526. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  527. data/lib/datadog/tracing/metadata/ext.rb +2 -1
  528. data/lib/datadog/tracing/metadata/tagging.rb +2 -10
  529. data/lib/datadog/tracing/metadata.rb +4 -0
  530. data/lib/datadog/tracing/pipeline/span_processor.rb +1 -0
  531. data/lib/datadog/tracing/propagation/grpc.rb +1 -0
  532. data/lib/datadog/tracing/propagation/http.rb +1 -0
  533. data/lib/datadog/tracing/runtime/metrics.rb +1 -0
  534. data/lib/datadog/tracing/sampling/all_sampler.rb +1 -0
  535. data/lib/datadog/tracing/sampling/ext.rb +1 -0
  536. data/lib/datadog/tracing/sampling/matcher.rb +1 -0
  537. data/lib/datadog/tracing/sampling/priority_sampler.rb +1 -0
  538. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +1 -0
  539. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +1 -0
  540. data/lib/datadog/tracing/sampling/rate_limiter.rb +1 -0
  541. data/lib/datadog/tracing/sampling/rate_sampler.rb +1 -0
  542. data/lib/datadog/tracing/sampling/rule.rb +1 -0
  543. data/lib/datadog/tracing/sampling/rule_sampler.rb +1 -0
  544. data/lib/datadog/tracing/sampling/sampler.rb +1 -0
  545. data/lib/datadog/tracing/span.rb +2 -1
  546. data/lib/datadog/tracing/span_operation.rb +2 -0
  547. data/lib/datadog/tracing/sync_writer.rb +1 -0
  548. data/lib/datadog/tracing/trace_digest.rb +2 -0
  549. data/lib/datadog/tracing/trace_operation.rb +18 -3
  550. data/lib/datadog/tracing/trace_segment.rb +109 -194
  551. data/lib/datadog/tracing/tracer.rb +2 -1
  552. data/lib/datadog/tracing/workers/trace_writer.rb +1 -0
  553. data/lib/datadog/tracing/workers.rb +1 -0
  554. data/lib/datadog/tracing/writer.rb +1 -0
  555. data/lib/datadog/tracing.rb +2 -0
  556. data/lib/ddtrace/auto_instrument.rb +2 -1
  557. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  558. data/lib/ddtrace/profiling/preload.rb +2 -0
  559. data/lib/ddtrace/transport/ext.rb +1 -0
  560. data/lib/ddtrace/transport/http/adapters/net.rb +1 -0
  561. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  562. data/lib/ddtrace/transport/http/adapters/test.rb +1 -0
  563. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +1 -0
  564. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  565. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  566. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  567. data/lib/ddtrace/transport/http/api/map.rb +1 -0
  568. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  569. data/lib/ddtrace/transport/http/api.rb +1 -0
  570. data/lib/ddtrace/transport/http/builder.rb +1 -0
  571. data/lib/ddtrace/transport/http/client.rb +1 -0
  572. data/lib/ddtrace/transport/http/env.rb +1 -0
  573. data/lib/ddtrace/transport/http/response.rb +1 -0
  574. data/lib/ddtrace/transport/http/statistics.rb +1 -0
  575. data/lib/ddtrace/transport/http/traces.rb +1 -0
  576. data/lib/ddtrace/transport/http.rb +14 -3
  577. data/lib/ddtrace/transport/io/client.rb +1 -0
  578. data/lib/ddtrace/transport/io/response.rb +1 -0
  579. data/lib/ddtrace/transport/io/traces.rb +1 -0
  580. data/lib/ddtrace/transport/io.rb +1 -0
  581. data/lib/ddtrace/transport/parcel.rb +1 -0
  582. data/lib/ddtrace/transport/request.rb +1 -0
  583. data/lib/ddtrace/transport/response.rb +1 -0
  584. data/lib/ddtrace/transport/serializable_trace.rb +2 -0
  585. data/lib/ddtrace/transport/statistics.rb +1 -0
  586. data/lib/ddtrace/transport/trace_formatter.rb +24 -1
  587. data/lib/ddtrace/transport/traces.rb +1 -0
  588. data/lib/ddtrace/version.rb +12 -10
  589. data/lib/ddtrace.rb +2 -21
  590. metadata +11 -10
  591. data/lib/datadog/opentelemetry/extensions.rb +0 -14
  592. data/lib/datadog/opentelemetry/span.rb +0 -34
@@ -1,7 +1,11 @@
1
+ # typed: true
2
+
1
3
  require 'datadog/core/runtime/ext'
4
+ require 'datadog/core/utils/safe_dup'
2
5
 
3
6
  require 'datadog/tracing/sampling/ext'
4
7
  require 'datadog/tracing/metadata/ext'
8
+ require 'datadog/tracing/metadata/tagging'
5
9
 
6
10
  module Datadog
7
11
  module Tracing
@@ -16,21 +20,22 @@ module Datadog
16
20
  attr_reader \
17
21
  :id,
18
22
  :spans,
19
- :tags
20
-
21
- if RUBY_VERSION < '2.2' # nil.dup only fails in Ruby 2.1
22
- # Ensures #initialize can call nil.dup safely
23
- module RefineNil
24
- refine NilClass do
25
- def dup
26
- self
27
- end
28
- end
29
- end
30
-
31
- using RefineNil
32
- end
33
-
23
+ :agent_sample_rate,
24
+ :hostname,
25
+ :lang,
26
+ :name,
27
+ :origin,
28
+ :process_id,
29
+ :rate_limiter_rate,
30
+ :resource,
31
+ :rule_sample_rate,
32
+ :runtime_id,
33
+ :sample_rate,
34
+ :sampling_priority,
35
+ :service
36
+
37
+ # rubocop:disable Metrics/CyclomaticComplexity
38
+ # rubocop:disable Metrics/PerceivedComplexity
34
39
  def initialize(
35
40
  spans,
36
41
  agent_sample_rate: nil,
@@ -47,28 +52,36 @@ module Datadog
47
52
  runtime_id: nil,
48
53
  sample_rate: nil,
49
54
  sampling_priority: nil,
50
- service: nil
55
+ service: nil,
56
+ tags: nil,
57
+ metrics: nil
51
58
  )
52
59
  @id = id
53
60
  @root_span_id = root_span_id
54
61
  @spans = spans || []
55
- @tags = {}
56
-
57
- # Set well-known tags
58
- self.agent_sample_rate = agent_sample_rate
59
- self.hostname = hostname
60
- self.lang = lang
61
- self.name = (name.frozen? ? name : name.dup)
62
- self.origin = (origin.frozen? ? origin : origin.dup)
63
- self.process_id = process_id
64
- self.rate_limiter_rate = rate_limiter_rate
65
- self.resource = (resource.frozen? ? resource : resource.dup)
66
- self.rule_sample_rate = rule_sample_rate
67
- self.runtime_id = runtime_id
68
- self.sample_rate = sample_rate
69
- self.sampling_priority = sampling_priority
70
- self.service = (service.frozen? ? service : service.dup)
71
- end
62
+
63
+ # Does not make an effort to move metrics out of tags
64
+ # The caller is expected to have done that
65
+ @meta = tags || {}
66
+ @metrics = metrics || {}
67
+
68
+ # Set well-known tags, defaulting to getting the values from tags
69
+ @agent_sample_rate = agent_sample_rate || agent_sample_rate_tag
70
+ @hostname = hostname || hostname_tag
71
+ @lang = lang || lang_tag
72
+ @name = Core::Utils::SafeDup.frozen_or_dup(name || name_tag)
73
+ @origin = Core::Utils::SafeDup.frozen_or_dup(origin || origin_tag)
74
+ @process_id = process_id || process_id_tag
75
+ @rate_limiter_rate = rate_limiter_rate || rate_limiter_rate_tag
76
+ @resource = Core::Utils::SafeDup.frozen_or_dup(resource || resource_tag)
77
+ @rule_sample_rate = rule_sample_rate_tag || rule_sample_rate
78
+ @runtime_id = runtime_id || runtime_id_tag
79
+ @sample_rate = sample_rate || sample_rate_tag
80
+ @sampling_priority = sampling_priority || sampling_priority_tag
81
+ @service = Core::Utils::SafeDup.frozen_or_dup(service || service_tag)
82
+ end
83
+ # rubocop:enable Metrics/PerceivedComplexity
84
+ # rubocop:enable Metrics/CyclomaticComplexity
72
85
 
73
86
  def any?
74
87
  @spans.any?
@@ -90,202 +103,104 @@ module Datadog
90
103
  @spans.size
91
104
  end
92
105
 
93
- def agent_sample_rate
94
- tags[Metadata::Ext::Sampling::TAG_AGENT_RATE]
95
- end
96
-
97
- def agent_sample_rate=(value)
98
- if value.nil?
99
- tags.delete(Metadata::Ext::Sampling::TAG_AGENT_RATE)
100
- return
101
- end
102
-
103
- tags[Metadata::Ext::Sampling::TAG_AGENT_RATE] = value
104
- end
105
-
106
- def hostname
107
- tags[Metadata::Ext::NET::TAG_HOSTNAME]
108
- end
109
-
110
- def hostname=(value)
111
- if value.nil?
112
- tags.delete(Metadata::Ext::NET::TAG_HOSTNAME)
113
- return
114
- end
115
-
116
- tags[Metadata::Ext::NET::TAG_HOSTNAME] = value
117
- end
118
-
119
- def lang
120
- tags[Core::Runtime::Ext::TAG_LANG]
121
- end
122
-
123
- def lang=(value)
124
- if value.nil?
125
- tags.delete(Core::Runtime::Ext::TAG_LANG)
126
- return
127
- end
128
-
129
- tags[Core::Runtime::Ext::TAG_LANG] = value
130
- end
131
-
132
- def name
133
- tags[TAG_NAME]
134
- end
135
-
136
- def name=(value)
137
- if value.nil?
138
- tags.delete(TAG_NAME)
139
- return
140
- end
141
-
142
- tags[TAG_NAME] = value
143
- end
144
-
145
- def origin
146
- tags[Metadata::Ext::Distributed::TAG_ORIGIN]
147
- end
148
-
149
- def origin=(value)
150
- if value.nil?
151
- tags.delete(Metadata::Ext::Distributed::TAG_ORIGIN)
152
- return
153
- end
154
-
155
- tags[Metadata::Ext::Distributed::TAG_ORIGIN] = value
156
- end
157
-
158
- def process_id
159
- tags[Core::Runtime::Ext::TAG_PID]
106
+ # If an active trace is present, forces it to be retained by the Datadog backend.
107
+ #
108
+ # Any sampling logic will not be able to change this decision.
109
+ #
110
+ # @return [void]
111
+ def keep!
112
+ self.sampling_priority = Sampling::Ext::Priority::USER_KEEP
160
113
  end
161
114
 
162
- def process_id=(value)
163
- if value.nil?
164
- tags.delete(Core::Runtime::Ext::TAG_PID)
165
- return
166
- end
167
-
168
- tags[Core::Runtime::Ext::TAG_PID] = value
115
+ # If an active trace is present, forces it to be dropped and not stored by the Datadog backend.
116
+ #
117
+ # Any sampling logic will not be able to change this decision.
118
+ #
119
+ # @return [void]
120
+ def reject!
121
+ self.sampling_priority = Sampling::Ext::Priority::USER_REJECT
169
122
  end
170
123
 
171
- def rate_limiter_rate
172
- tags[Metadata::Ext::Sampling::TAG_RATE_LIMITER_RATE]
124
+ def sampled?
125
+ sampling_priority == Sampling::Ext::Priority::AUTO_KEEP \
126
+ || sampling_priority == Sampling::Ext::Priority::USER_KEEP
173
127
  end
174
128
 
175
- def rate_limiter_rate=(value)
176
- if value.nil?
177
- tags.delete(Metadata::Ext::Sampling::TAG_RATE_LIMITER_RATE)
178
- return
179
- end
180
-
181
- tags[Metadata::Ext::Sampling::TAG_RATE_LIMITER_RATE] = value
182
- end
129
+ protected
183
130
 
184
- def resource
185
- tags[TAG_RESOURCE]
186
- end
131
+ attr_reader \
132
+ :root_span_id,
133
+ :meta,
134
+ :metrics
187
135
 
188
- def resource=(value)
189
- if value.nil?
190
- tags.delete(TAG_RESOURCE)
191
- return
192
- end
136
+ private
193
137
 
194
- tags[TAG_RESOURCE] = value
195
- end
138
+ attr_writer \
139
+ :agent_sample_rate,
140
+ :hostname,
141
+ :lang,
142
+ :name,
143
+ :origin,
144
+ :process_id,
145
+ :rate_limiter_rate,
146
+ :resource,
147
+ :rule_sample_rate,
148
+ :runtime_id,
149
+ :sample_rate,
150
+ :sampling_priority,
151
+ :service
196
152
 
197
- def rule_sample_rate
198
- tags[Metadata::Ext::Sampling::TAG_RULE_SAMPLE_RATE]
153
+ def agent_sample_rate_tag
154
+ metrics[Metadata::Ext::Sampling::TAG_AGENT_RATE]
199
155
  end
200
156
 
201
- def rule_sample_rate=(value)
202
- if value.nil?
203
- tags.delete(Metadata::Ext::Sampling::TAG_RULE_SAMPLE_RATE)
204
- return
205
- end
206
-
207
- tags[Metadata::Ext::Sampling::TAG_RULE_SAMPLE_RATE] = value
157
+ def hostname_tag
158
+ meta[Metadata::Ext::NET::TAG_HOSTNAME]
208
159
  end
209
160
 
210
- def runtime_id
211
- tags[Core::Runtime::Ext::TAG_ID]
161
+ def lang_tag
162
+ meta[Core::Runtime::Ext::TAG_LANG]
212
163
  end
213
164
 
214
- def runtime_id=(value)
215
- if value.nil?
216
- tags.delete(Core::Runtime::Ext::TAG_ID)
217
- return
218
- end
219
-
220
- tags[Core::Runtime::Ext::TAG_ID] = value
165
+ def name_tag
166
+ meta[TAG_NAME]
221
167
  end
222
168
 
223
- def sample_rate
224
- tags[Metadata::Ext::Sampling::TAG_SAMPLE_RATE]
169
+ def origin_tag
170
+ meta[Metadata::Ext::Distributed::TAG_ORIGIN]
225
171
  end
226
172
 
227
- def sample_rate=(value)
228
- if value.nil?
229
- tags.delete(Metadata::Ext::Sampling::TAG_SAMPLE_RATE)
230
- return
231
- end
232
-
233
- tags[Metadata::Ext::Sampling::TAG_SAMPLE_RATE] = value
173
+ def process_id_tag
174
+ meta[Core::Runtime::Ext::TAG_PID]
234
175
  end
235
176
 
236
- def sampling_priority
237
- tags[Metadata::Ext::Distributed::TAG_SAMPLING_PRIORITY]
177
+ def rate_limiter_rate_tag
178
+ metrics[Metadata::Ext::Sampling::TAG_RATE_LIMITER_RATE]
238
179
  end
239
180
 
240
- def sampling_priority=(value)
241
- if value.nil?
242
- tags.delete(Metadata::Ext::Distributed::TAG_SAMPLING_PRIORITY)
243
- return
244
- end
245
-
246
- tags[Metadata::Ext::Distributed::TAG_SAMPLING_PRIORITY] = value
181
+ def resource_tag
182
+ meta[TAG_RESOURCE]
247
183
  end
248
184
 
249
- def service
250
- tags[TAG_SERVICE]
185
+ def rule_sample_rate_tag
186
+ metrics[Metadata::Ext::Sampling::TAG_RULE_SAMPLE_RATE]
251
187
  end
252
188
 
253
- def service=(value)
254
- if value.nil?
255
- tags.delete(TAG_SERVICE)
256
- return
257
- end
258
-
259
- tags[TAG_SERVICE] = value
189
+ def runtime_id_tag
190
+ meta[Core::Runtime::Ext::TAG_ID]
260
191
  end
261
192
 
262
- # If an active trace is present, forces it to be retained by the Datadog backend.
263
- #
264
- # Any sampling logic will not be able to change this decision.
265
- #
266
- # @return [void]
267
- def keep!
268
- self.sampling_priority = Sampling::Ext::Priority::USER_KEEP
193
+ def sample_rate_tag
194
+ metrics[Metadata::Ext::Sampling::TAG_SAMPLE_RATE]
269
195
  end
270
196
 
271
- # If an active trace is present, forces it to be dropped and not stored by the Datadog backend.
272
- #
273
- # Any sampling logic will not be able to change this decision.
274
- #
275
- # @return [void]
276
- def reject!
277
- self.sampling_priority = Sampling::Ext::Priority::USER_REJECT
197
+ def sampling_priority_tag
198
+ meta[Metadata::Ext::Distributed::TAG_SAMPLING_PRIORITY]
278
199
  end
279
200
 
280
- def sampled?
281
- sampling_priority == Sampling::Ext::Priority::AUTO_KEEP \
282
- || sampling_priority == Sampling::Ext::Priority::USER_KEEP
201
+ def service_tag
202
+ meta[TAG_SERVICE]
283
203
  end
284
-
285
- protected
286
-
287
- attr_reader \
288
- :root_span_id
289
204
  end
290
205
  # rubocop:enable Metrics/ClassLength
291
206
  end
@@ -1,4 +1,5 @@
1
- # typed: false
1
+ # typed: true
2
+
2
3
  require 'datadog/core'
3
4
  require 'datadog/core/environment/ext'
4
5
  require 'datadog/core/environment/socket'
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'datadog/core'
3
4
  require 'datadog/core/worker'
4
5
  require 'datadog/core/workers/async'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core'
3
4
 
4
5
  require 'datadog/tracing/buffer'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core'
3
4
 
4
5
  require 'datadog/tracing/event'
@@ -1,3 +1,5 @@
1
+ # typed: false
2
+
1
3
  require 'datadog/core'
2
4
  require 'datadog/tracing/pipeline'
3
5
 
@@ -1,8 +1,9 @@
1
1
  # typed: strict
2
+
2
3
  # Entrypoint file for auto instrumentation.
3
4
  #
4
5
  # This file's path is part of the @public_api.
5
6
  require 'ddtrace'
7
+ require 'datadog/tracing/contrib/auto_instrument'
6
8
 
7
- Datadog.add_auto_instrument
8
9
  Datadog::Profiling.start_if_enabled
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  # base methods stubbed for adding auto instrument extensions
4
5
  module AutoInstrumentBase
@@ -1,2 +1,4 @@
1
+ # typed: strict
2
+
1
3
  # TODO: Warns users after 1.0 upgrade. Remove this file in 2.0.
2
4
  raise LoadError, 'This file has been moved to `datadog/profiling/preload` in 1.0.0'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Transport
4
5
  # @public_api
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'ddtrace/transport/response'
3
4
  require 'datadog/core/vendor/multipart-post/net/http/post/multipart'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Transport
4
5
  module HTTP
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'ddtrace/transport/response'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'net/http'
3
4
  require 'ddtrace/transport/ext'
4
5
  require 'ddtrace/transport/http/adapters/net'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'json'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  module Datadog
3
4
  module Transport
4
5
  module HTTP
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Transport
4
5
  module HTTP
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'ddtrace/transport/http/api/fallbacks'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Transport
4
5
  module HTTP
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'datadog/core/encoding'
3
4
 
4
5
  require 'ddtrace/transport/http/api/map'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/configuration/agent_settings_resolver'
3
4
  require 'ddtrace/transport/http/adapters/registry'
4
5
  require 'ddtrace/transport/http/api/map'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'ddtrace/transport/http/statistics'
3
4
  require 'ddtrace/transport/http/env'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Transport
4
5
  module HTTP
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'forwardable'
3
4
  require 'ddtrace/transport/response'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'ddtrace/transport/statistics'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'json'
3
4
 
4
5
  require 'ddtrace/transport/traces'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'uri'
3
4
 
4
5
  require 'datadog/core/environment/container'
@@ -17,6 +18,16 @@ module Datadog
17
18
  module HTTP
18
19
  include Kernel # Ensure that kernel methods are always available (https://sorbet.org/docs/error-reference#7003)
19
20
 
21
+ # NOTE: Due to... legacy reasons... This class likes having a default `AgentSettings` instance to fall back to.
22
+ # Because we generate this instance with an empty instance of `Settings`, the resulting `AgentSettings` below
23
+ # represents only settings specified via environment variables + the usual defaults.
24
+ #
25
+ # DO NOT USE THIS IN NEW CODE, as it ignores any settings specified by users via `Datadog.configure`.
26
+ DO_NOT_USE_ENVIRONMENT_AGENT_SETTINGS = Datadog::Core::Configuration::AgentSettingsResolver.call(
27
+ Datadog::Core::Configuration::Settings.new,
28
+ logger: nil,
29
+ )
30
+
20
31
  module_function
21
32
 
22
33
  # Builds a new Transport::HTTP::Client
@@ -27,7 +38,7 @@ module Datadog
27
38
  # Builds a new Transport::HTTP::Client with default settings
28
39
  # Pass a block to override any settings.
29
40
  def default(
30
- agent_settings: Datadog::Core::Configuration::AgentSettingsResolver::ENVIRONMENT_AGENT_SETTINGS,
41
+ agent_settings: DO_NOT_USE_ENVIRONMENT_AGENT_SETTINGS,
31
42
  **options
32
43
  )
33
44
  new do |transport|
@@ -77,7 +88,7 @@ module Datadog
77
88
  'be removed on a future ddtrace release.'
78
89
  )
79
90
 
80
- Datadog::Core::Configuration::AgentSettingsResolver::ENVIRONMENT_AGENT_SETTINGS.hostname
91
+ DO_NOT_USE_ENVIRONMENT_AGENT_SETTINGS.hostname
81
92
  end
82
93
 
83
94
  def default_port(logger: Datadog.logger)
@@ -86,7 +97,7 @@ module Datadog
86
97
  'be removed on a future ddtrace release.'
87
98
  )
88
99
 
89
- Datadog::Core::Configuration::AgentSettingsResolver::ENVIRONMENT_AGENT_SETTINGS.port
100
+ DO_NOT_USE_ENVIRONMENT_AGENT_SETTINGS.port
90
101
  end
91
102
 
92
103
  def default_url(logger: Datadog.logger)
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'ddtrace/transport/statistics'
3
4
  require 'ddtrace/transport/io/response'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'ddtrace/transport/response'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'ddtrace/transport/traces'
3
4
 
4
5
  require 'ddtrace/transport/io/response'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/encoding'
3
4
  require 'ddtrace/transport/io/client'
4
5
  require 'ddtrace/transport/io/traces'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Transport
4
5
  # Data transfer object for generic data
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Transport
4
5
  # Defines request for transport operations
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  module Datadog
3
4
  module Transport
4
5
  # Defines abstract response for transport operations
@@ -1,3 +1,5 @@
1
+ # typed: true
2
+
1
3
  require 'json'
2
4
  require 'msgpack'
3
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/metrics/metric'
3
4
  require 'datadog/core/diagnostics/health'
4
5