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,4 +1,5 @@
1
- # typed: false
1
+ # typed: true
2
+
2
3
  require 'uri'
3
4
 
4
5
  require 'datadog/core/configuration/settings'
@@ -53,6 +54,9 @@ module Datadog
53
54
 
54
55
  # Returns a frozen copy of this struct
55
56
  # with the provided +member_values+ modified.
57
+ #
58
+ # TODO: This is only used when configuring profiling, and can be removed once
59
+ # https://github.com/DataDog/dd-trace-rb/pull/1924 is merged
56
60
  def merge(**member_values)
57
61
  new_struct = dup
58
62
 
@@ -80,6 +84,19 @@ module Datadog
80
84
  end
81
85
 
82
86
  def call
87
+ # A transport_options proc configured for unix domain socket overrides most of the logic on this file
88
+ if transport_options.adapter == Transport::Ext::UnixSocket::ADAPTER
89
+ return AgentSettings.new(
90
+ adapter: Transport::Ext::UnixSocket::ADAPTER,
91
+ ssl: false,
92
+ hostname: nil,
93
+ port: nil,
94
+ uds_path: transport_options.uds_path,
95
+ timeout_seconds: timeout_seconds,
96
+ deprecated_for_removal_transport_configuration_proc: nil,
97
+ )
98
+ end
99
+
83
100
  AgentSettings.new(
84
101
  adapter: adapter,
85
102
  ssl: ssl?,
@@ -110,6 +127,10 @@ module Datadog
110
127
  return @configured_hostname if defined?(@configured_hostname)
111
128
 
112
129
  @configured_hostname = pick_from(
130
+ DetectedConfiguration.new(
131
+ friendly_name: "'c.tracing.transport_options'",
132
+ value: transport_options.hostname,
133
+ ),
113
134
  DetectedConfiguration.new(
114
135
  friendly_name: "'c.agent.host'",
115
136
  value: settings.agent.host
@@ -128,48 +149,42 @@ module Datadog
128
149
  def configured_port
129
150
  return @configured_port if defined?(@configured_port)
130
151
 
131
- parsed_port_from_env =
152
+ @configured_port = pick_from(
132
153
  try_parsing_as_integer(
133
- friendly_name: "#{Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_PORT} environment variable",
134
- value: ENV[Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_PORT],
135
- )
136
-
137
- parsed_settings_tracer_port =
154
+ friendly_name: "'c.tracing.transport_options'",
155
+ value: transport_options.port,
156
+ ),
138
157
  try_parsing_as_integer(
139
158
  friendly_name: '"c.agent.port"',
140
159
  value: settings.agent.port,
141
- )
142
-
143
- @configured_port = pick_from(
144
- DetectedConfiguration.new(
145
- friendly_name: '"c.agent.port"',
146
- value: parsed_settings_tracer_port,
147
160
  ),
148
161
  DetectedConfiguration.new(
149
162
  friendly_name: "#{Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_URL} environment variable",
150
163
  value: parsed_url && parsed_url.port,
151
164
  ),
152
- DetectedConfiguration.new(
165
+ try_parsing_as_integer(
153
166
  friendly_name: "#{Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_PORT} environment variable",
154
- value: parsed_port_from_env,
167
+ value: ENV[Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_PORT],
155
168
  )
156
169
  )
157
170
  end
158
171
 
159
172
  def try_parsing_as_integer(value:, friendly_name:)
160
- return unless value
173
+ value =
174
+ begin
175
+ Integer(value) if value
176
+ rescue ArgumentError, TypeError
177
+ log_warning("Invalid value for #{friendly_name} (#{value.inspect}). Ignoring this configuration.")
161
178
 
162
- begin
163
- Integer(value)
164
- rescue ArgumentError, TypeError
165
- log_warning("Invalid value for #{friendly_name} (#{value.inspect}). Ignoring this configuration.")
179
+ nil
180
+ end
166
181
 
167
- nil
168
- end
182
+ DetectedConfiguration.new(friendly_name: friendly_name, value: value)
169
183
  end
170
184
 
171
185
  def ssl?
172
- !parsed_url.nil? && parsed_url.scheme == 'https'
186
+ transport_options.ssl ||
187
+ (!parsed_url.nil? && parsed_url.scheme == 'https')
173
188
  end
174
189
 
175
190
  def hostname
@@ -188,11 +203,15 @@ module Datadog
188
203
  # Defaults to +nil+, letting the adapter choose what default
189
204
  # works best in their case.
190
205
  def timeout_seconds
191
- nil
206
+ transport_options.timeout_seconds
192
207
  end
193
208
 
209
+ # In transport_options, we try to invoke the transport_options proc and get its configuration. In case that
210
+ # doesn't work, we include the proc directly in the agent settings result.
194
211
  def deprecated_for_removal_transport_configuration_proc
195
- settings.tracing.transport_options if settings.tracing.transport_options.is_a?(Proc)
212
+ if settings.tracing.transport_options.is_a?(Proc) && transport_options.adapter.nil?
213
+ settings.tracing.transport_options
214
+ end
196
215
  end
197
216
 
198
217
  # We only use the default unix socket if it is already present.
@@ -217,6 +236,8 @@ module Datadog
217
236
  def parsed_url
218
237
  return @parsed_url if defined?(@parsed_url)
219
238
 
239
+ unparsed_url_from_env = ENV[Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_URL]
240
+
220
241
  @parsed_url =
221
242
  if unparsed_url_from_env
222
243
  parsed = URI.parse(unparsed_url_from_env)
@@ -237,12 +258,6 @@ module Datadog
237
258
  end
238
259
  end
239
260
 
240
- # NOTE: This should only be used AFTER parsing, via `#parsed_url`. The only other use-case where this can be used
241
- # directly without parsing, is when displaying in warning messages, to show users what it actually contains.
242
- def unparsed_url_from_env
243
- @unparsed_url_from_env ||= ENV[Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_URL]
244
- end
245
-
246
261
  def pick_from(*configurations_in_priority_order)
247
262
  detected_configurations_in_priority_order = configurations_in_priority_order.select(&:value?)
248
263
 
@@ -270,9 +285,44 @@ module Datadog
270
285
  logger.warn(message) if logger
271
286
  end
272
287
 
273
- DetectedConfiguration = Struct.new(:friendly_name, :value) do
288
+ # The settings.tracing.transport_options allows users to have full control over the settings used to
289
+ # communicate with the agent. In the general case, we can't extract the configuration from this proc, but
290
+ # in the specific case of the http and unix socket adapters we can, and we use this method together with the
291
+ # `TransportOptionsResolver` to call the proc and extract its information.
292
+ def transport_options
293
+ return @transport_options if defined?(@transport_options)
294
+
295
+ transport_options_proc = settings.tracing.transport_options
296
+
297
+ @transport_options = TransportOptions.new
298
+
299
+ if transport_options_proc.is_a?(Proc)
300
+ begin
301
+ transport_options_proc.call(TransportOptionsResolver.new(@transport_options))
302
+ rescue NoMethodError => e
303
+ if logger
304
+ logger.debug do
305
+ 'Could not extract configuration from transport_options proc. ' \
306
+ "Cause: #{e.message} Source: #{Array(e.backtrace).first}"
307
+ end
308
+ end
309
+
310
+ # Reset the object; we shouldn't return the same one we passed into the proc as it may have
311
+ # some partial configuration and we want all-or-nothing.
312
+ @transport_options = TransportOptions.new
313
+ end
314
+ end
315
+
316
+ @transport_options.freeze
317
+ end
318
+
319
+ # Represents a given configuration value and where we got it from
320
+ class DetectedConfiguration
321
+ attr_reader :friendly_name, :value
322
+
274
323
  def initialize(friendly_name:, value:)
275
- super(friendly_name, value)
324
+ @friendly_name = friendly_name
325
+ @value = value
276
326
  freeze
277
327
  end
278
328
 
@@ -282,13 +332,32 @@ module Datadog
282
332
  end
283
333
  private_constant :DetectedConfiguration
284
334
 
285
- # NOTE: Due to... legacy reasons... Some classes like having an `AgentSettings` instance to fall back to.
286
- # Because we generate this instance with an empty instance of `Settings`, the resulting `AgentSettings` below
287
- # represents only settings specified via environment variables + the usual defaults.
288
- #
289
- # YOU DO NOT WANT TO USE THE BELOW INSTANCE ON ANY NEWLY WRITTEN CODE, as it ignores any settings specified
290
- # by users via `Datadog.configure`.
291
- ENVIRONMENT_AGENT_SETTINGS = call(Settings.new, logger: nil)
335
+ # Used to contain information extracted from the transport_options proc (see #transport_options above)
336
+ TransportOptions = Struct.new(:adapter, :hostname, :port, :timeout_seconds, :ssl, :uds_path)
337
+ private_constant :TransportOptions
338
+
339
+ # Used to extract information from the transport_options proc (see #transport_options above)
340
+ class TransportOptionsResolver
341
+ def initialize(transport_options)
342
+ @transport_options = transport_options
343
+ end
344
+
345
+ def adapter(kind_or_custom_adapter, *args, **kwargs)
346
+ case kind_or_custom_adapter
347
+ when Datadog::Transport::Ext::HTTP::ADAPTER
348
+ @transport_options.adapter = Datadog::Transport::Ext::HTTP::ADAPTER
349
+ @transport_options.hostname = args[0] || kwargs[:hostname]
350
+ @transport_options.port = args[1] || kwargs[:port]
351
+ @transport_options.timeout_seconds = kwargs[:timeout]
352
+ @transport_options.ssl = kwargs[:ssl]
353
+ when Datadog::Transport::Ext::UnixSocket::ADAPTER
354
+ @transport_options.adapter = Datadog::Transport::Ext::UnixSocket::ADAPTER
355
+ @transport_options.uds_path = args[0] || kwargs[:uds_path]
356
+ end
357
+
358
+ nil
359
+ end
360
+ end
292
361
  end
293
362
  # rubocop:enable Metrics/ClassLength
294
363
  end
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'datadog/core/environment/variable_helpers'
3
4
  require 'datadog/core/configuration/options'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'datadog/core/configuration/agent_settings_resolver'
3
4
  require 'datadog/core/diagnostics/environment_logger'
4
5
  require 'datadog/core/diagnostics/health'
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'tsort'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Configuration
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/configuration/option'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/configuration/dependency_resolver'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Configuration
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'datadog/core/configuration/option_set'
3
4
  require 'datadog/core/configuration/option_definition'
4
5
  require 'datadog/core/configuration/option_definition_set'
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'logger'
3
4
 
4
5
  require 'datadog/core/configuration/base'
@@ -463,15 +464,6 @@ module Datadog
463
464
  # @return [Object,nil]
464
465
  option :instance
465
466
 
466
- # DEV: Alias to Datadog::Tracing::Contrib::Extensions::Configuration::Settings#instrument.
467
- # DEV: Should be removed when `c.tracing.instrument` namespacing is complete.
468
- define_method(:instrument) do |integration_name, options = {}, &block|
469
- Datadog.configuration.send(:instrument, integration_name, options, &block)
470
- end
471
-
472
- # TODO: Deprecate in the next major version, as `instrument` better describes this method's purpose
473
- alias_method :use, :instrument
474
-
475
467
  # Automatic correlation between tracing and logging.
476
468
  # @see https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#trace-correlation
477
469
  # @return [Boolean]
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'forwardable'
3
4
  require 'datadog/core/configuration/components'
4
5
  require 'datadog/core/configuration/settings'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'date'
3
4
  require 'json'
4
5
  require 'rbconfig'
@@ -256,7 +257,7 @@ module Datadog
256
257
  private
257
258
 
258
259
  def instrumented_integrations
259
- Datadog.configuration.instrumented_integrations
260
+ Datadog.configuration.tracing.instrumented_integrations
260
261
  end
261
262
 
262
263
  # Capture all active integration settings into "integrationName_settingName: value" entries.
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Diagnostics
@@ -1,4 +1,5 @@
1
- # typed: false
1
+ # typed: strict
2
+
2
3
  require 'datadog/core/diagnostics/ext'
3
4
  require 'datadog/core/metrics/client'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'json'
3
4
  require 'msgpack'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/environment/ext'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Environment
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/environment/cgroup'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'ddtrace/version'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Environment
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'securerandom'
3
4
 
4
5
  require 'datadog/core/environment/ext'
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'socket'
3
4
  require 'datadog/core/utils/forking'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Environment
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  # Namespace for handling application environment
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Environment
@@ -1,6 +1,7 @@
1
- # typed: false
2
1
  # frozen_string_literal: true
3
2
 
3
+ # typed: false
4
+
4
5
  require 'datadog/core/utils'
5
6
 
6
7
  module Datadog
@@ -1,4 +1,5 @@
1
- # typed: strict
1
+ # typed: true
2
+
2
3
  require 'datadog/core/configuration'
3
4
 
4
5
  # Global namespace that includes all Datadog functionality.
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Git
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'logger'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  require 'datadog/core/utils/time'
3
4
  require 'datadog/core/utils/only_once'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Metrics
@@ -1,3 +1,5 @@
1
+ # typed: false
2
+
1
3
  module Datadog
2
4
  module Core
3
5
  module Metrics
@@ -1,3 +1,5 @@
1
+ # typed: true
2
+
1
3
  require 'logger'
2
4
  require 'json'
3
5
 
@@ -1,3 +1,5 @@
1
+ # typed: false
2
+
1
3
  module Datadog
2
4
  module Core
3
5
  module Metrics
@@ -1,3 +1,5 @@
1
+ # typed: true
2
+
1
3
  require 'datadog/core/metrics/ext'
2
4
  require 'datadog/core/environment/ext'
3
5
  require 'datadog/core/environment/identity'
@@ -1,4 +1,4 @@
1
- # typed: false
1
+ # typed: true
2
2
 
3
3
  module Datadog
4
4
  module Core
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/runtime/ext'
3
4
 
4
5
  require 'datadog/core/metrics/client'
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'stringio'
3
4
  require 'zlib'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Utils
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/utils/sequence'
3
4
 
4
5
  module Datadog
@@ -1,6 +1,7 @@
1
- # typed: true
2
1
  # frozen_string_literal: true
3
2
 
3
+ # typed: true
4
+
4
5
  module Datadog
5
6
  module Core
6
7
  module Utils
@@ -0,0 +1,27 @@
1
+ # typed: false
2
+
3
+ module Datadog
4
+ module Core
5
+ module Utils
6
+ # Helper methods for safer dup
7
+ module SafeDup
8
+ if RUBY_VERSION < '2.2' # nil.dup only fails in Ruby 2.1
9
+ # Ensures #initialize can call nil.dup safely
10
+ module RefineNil
11
+ refine NilClass do
12
+ def dup
13
+ self
14
+ end
15
+ end
16
+ end
17
+
18
+ using RefineNil
19
+ end
20
+
21
+ def self.frozen_or_dup(v)
22
+ v.frozen? ? v : v.dup
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Utils
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/utils/sequence'
3
4
 
4
5
  module Datadog
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Utils
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  require 'datadog/core/utils/forking'
3
4
  require 'datadog/tracing/span'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  #--
3
4
  # Copyright (c) 2007-2012 Nick Sieger.
4
5
  # See the file README.txt included with the distribution for
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
+
2
3
  #--
3
4
  # Copyright (c) 2007-2013 Nick Sieger.
4
5
  # See the file README.txt included with the distribution for
@@ -1,4 +1,5 @@
1
1
  # typed: true
2
+
2
3
  #--
3
4
  # Copyright (c) 2007-2013 Nick Sieger.
4
5
  # See the file README.txt included with the distribution for
@@ -1,4 +1,5 @@
1
1
  # typed: strict
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Vendor
@@ -1,4 +1,5 @@
1
1
  # typed: strict
2
+
2
3
  module Datadog
3
4
  module Core
4
5
  module Vendor
@@ -1,4 +1,5 @@
1
1
  # typed: strict
2
+
2
3
  #--
3
4
  # Copyright (c) 2007-2013 Nick Sieger.
4
5
  # See the file README.txt included with the distribution for