ls-trace 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (337) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +419 -544
  3. data/.circleci/images/primary/Dockerfile-2.7.0 +73 -0
  4. data/.circleci/images/primary/Dockerfile-jruby-9.2 +77 -0
  5. data/.env +2 -0
  6. data/.gitignore +2 -0
  7. data/.gitlab-ci.yml +27 -0
  8. data/.rubocop.yml +8 -0
  9. data/.simplecov +38 -0
  10. data/Appraisals +299 -48
  11. data/CHANGELOG.md +3 -4
  12. data/LICENSE +4 -22
  13. data/LICENSE.Apache +200 -0
  14. data/LICENSE.BSD3 +24 -0
  15. data/NOTICE +4 -0
  16. data/README.md +4 -3
  17. data/Rakefile +561 -405
  18. data/ddtrace.gemspec +13 -4
  19. data/docker-compose.yml +96 -2
  20. data/docs/DevelopmentGuide.md +17 -1
  21. data/docs/GettingStarted.md +433 -138
  22. data/lib/ddtrace.rb +15 -0
  23. data/lib/ddtrace/analytics.rb +7 -0
  24. data/lib/ddtrace/buffer.rb +9 -9
  25. data/lib/ddtrace/chunker.rb +34 -0
  26. data/lib/ddtrace/configuration.rb +59 -5
  27. data/lib/ddtrace/configuration/base.rb +4 -2
  28. data/lib/ddtrace/configuration/components.rb +151 -0
  29. data/lib/ddtrace/configuration/option.rb +12 -3
  30. data/lib/ddtrace/configuration/option_definition.rb +1 -5
  31. data/lib/ddtrace/configuration/options.rb +6 -1
  32. data/lib/ddtrace/configuration/pin_setup.rb +3 -2
  33. data/lib/ddtrace/configuration/settings.rb +214 -40
  34. data/lib/ddtrace/context.rb +84 -63
  35. data/lib/ddtrace/context_flush.rb +51 -114
  36. data/lib/ddtrace/context_provider.rb +50 -0
  37. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +30 -0
  38. data/lib/ddtrace/contrib/action_cable/event.rb +65 -0
  39. data/lib/ddtrace/contrib/action_cable/events.rb +33 -0
  40. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +49 -0
  41. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +55 -0
  42. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +50 -0
  43. data/lib/ddtrace/contrib/action_cable/ext.rb +26 -0
  44. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +31 -0
  45. data/lib/ddtrace/contrib/action_cable/integration.rb +38 -0
  46. data/lib/ddtrace/contrib/action_cable/patcher.rb +27 -0
  47. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +6 -2
  48. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +3 -15
  49. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +7 -2
  50. data/lib/ddtrace/contrib/action_pack/ext.rb +5 -2
  51. data/lib/ddtrace/contrib/action_pack/integration.rb +5 -3
  52. data/lib/ddtrace/contrib/action_pack/patcher.rb +3 -9
  53. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +7 -2
  54. data/lib/ddtrace/contrib/action_view/event.rb +39 -0
  55. data/lib/ddtrace/contrib/action_view/events.rb +30 -0
  56. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +45 -0
  57. data/lib/ddtrace/contrib/action_view/events/render_template.rb +48 -0
  58. data/lib/ddtrace/contrib/action_view/ext.rb +5 -2
  59. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +9 -13
  60. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +16 -16
  61. data/lib/ddtrace/contrib/action_view/integration.rb +5 -3
  62. data/lib/ddtrace/contrib/action_view/patcher.rb +19 -25
  63. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +7 -2
  64. data/lib/ddtrace/contrib/active_model_serializers/event.rb +3 -0
  65. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +5 -2
  66. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +6 -5
  67. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +3 -10
  68. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +4 -5
  69. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +7 -2
  70. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +4 -1
  71. data/lib/ddtrace/contrib/active_record/events/sql.rb +1 -1
  72. data/lib/ddtrace/contrib/active_record/ext.rb +5 -2
  73. data/lib/ddtrace/contrib/active_record/integration.rb +5 -3
  74. data/lib/ddtrace/contrib/active_record/patcher.rb +3 -9
  75. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +2 -2
  76. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +10 -24
  77. data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -1
  78. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +7 -2
  79. data/lib/ddtrace/contrib/active_support/ext.rb +5 -2
  80. data/lib/ddtrace/contrib/active_support/integration.rb +5 -3
  81. data/lib/ddtrace/contrib/active_support/notifications/event.rb +3 -1
  82. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +3 -3
  83. data/lib/ddtrace/contrib/active_support/patcher.rb +3 -9
  84. data/lib/ddtrace/contrib/analytics.rb +5 -1
  85. data/lib/ddtrace/contrib/aws/configuration/settings.rb +7 -2
  86. data/lib/ddtrace/contrib/aws/ext.rb +5 -2
  87. data/lib/ddtrace/contrib/aws/integration.rb +8 -2
  88. data/lib/ddtrace/contrib/aws/patcher.rb +15 -15
  89. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +5 -0
  90. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +9 -3
  91. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
  92. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +8 -2
  93. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +4 -11
  94. data/lib/ddtrace/contrib/configurable.rb +30 -13
  95. data/lib/ddtrace/contrib/configuration/resolver.rb +7 -3
  96. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +39 -0
  97. data/lib/ddtrace/contrib/configuration/settings.rb +20 -1
  98. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +7 -2
  99. data/lib/ddtrace/contrib/dalli/ext.rb +5 -2
  100. data/lib/ddtrace/contrib/dalli/integration.rb +5 -3
  101. data/lib/ddtrace/contrib/dalli/patcher.rb +6 -16
  102. data/lib/ddtrace/contrib/dalli/quantize.rb +1 -1
  103. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +7 -2
  104. data/lib/ddtrace/contrib/delayed_job/ext.rb +5 -2
  105. data/lib/ddtrace/contrib/delayed_job/integration.rb +8 -2
  106. data/lib/ddtrace/contrib/delayed_job/patcher.rb +4 -10
  107. data/lib/ddtrace/contrib/delayed_job/plugin.rb +4 -0
  108. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +7 -2
  109. data/lib/ddtrace/contrib/elasticsearch/ext.rb +5 -2
  110. data/lib/ddtrace/contrib/elasticsearch/integration.rb +5 -3
  111. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +10 -17
  112. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +8 -2
  113. data/lib/ddtrace/contrib/ethon/easy_patch.rb +22 -13
  114. data/lib/ddtrace/contrib/ethon/ext.rb +5 -2
  115. data/lib/ddtrace/contrib/ethon/integration.rb +14 -2
  116. data/lib/ddtrace/contrib/ethon/patcher.rb +7 -9
  117. data/lib/ddtrace/contrib/excon/configuration/settings.rb +7 -2
  118. data/lib/ddtrace/contrib/excon/ext.rb +5 -2
  119. data/lib/ddtrace/contrib/excon/integration.rb +13 -2
  120. data/lib/ddtrace/contrib/excon/middleware.rb +15 -12
  121. data/lib/ddtrace/contrib/excon/patcher.rb +4 -11
  122. data/lib/ddtrace/contrib/extensions.rb +39 -5
  123. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +7 -2
  124. data/lib/ddtrace/contrib/faraday/connection.rb +18 -0
  125. data/lib/ddtrace/contrib/faraday/ext.rb +5 -2
  126. data/lib/ddtrace/contrib/faraday/integration.rb +10 -3
  127. data/lib/ddtrace/contrib/faraday/middleware.rb +24 -34
  128. data/lib/ddtrace/contrib/faraday/patcher.rb +26 -19
  129. data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -3
  130. data/lib/ddtrace/contrib/grape/endpoint.rb +14 -5
  131. data/lib/ddtrace/contrib/grape/ext.rb +5 -2
  132. data/lib/ddtrace/contrib/grape/integration.rb +6 -3
  133. data/lib/ddtrace/contrib/grape/patcher.rb +9 -15
  134. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +7 -2
  135. data/lib/ddtrace/contrib/graphql/ext.rb +5 -2
  136. data/lib/ddtrace/contrib/graphql/integration.rb +6 -5
  137. data/lib/ddtrace/contrib/graphql/patcher.rb +11 -14
  138. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +7 -2
  139. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +1 -1
  140. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +2 -4
  141. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -2
  142. data/lib/ddtrace/contrib/grpc/ext.rb +5 -2
  143. data/lib/ddtrace/contrib/grpc/integration.rb +5 -3
  144. data/lib/ddtrace/contrib/grpc/patcher.rb +9 -19
  145. data/lib/ddtrace/contrib/http/circuit_breaker.rb +8 -32
  146. data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -2
  147. data/lib/ddtrace/contrib/http/ext.rb +5 -2
  148. data/lib/ddtrace/contrib/http/instrumentation.rb +89 -28
  149. data/lib/ddtrace/contrib/http/integration.rb +13 -0
  150. data/lib/ddtrace/contrib/http/patcher.rb +3 -9
  151. data/lib/ddtrace/contrib/http_annotation_helper.rb +10 -0
  152. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +32 -0
  153. data/lib/ddtrace/contrib/httprb/ext.rb +17 -0
  154. data/lib/ddtrace/contrib/httprb/instrumentation.rb +160 -0
  155. data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
  156. data/lib/ddtrace/contrib/httprb/patcher.rb +35 -0
  157. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +30 -0
  158. data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
  159. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
  160. data/lib/ddtrace/contrib/kafka/event.rb +51 -0
  161. data/lib/ddtrace/contrib/kafka/events.rb +44 -0
  162. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
  163. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
  164. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
  165. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
  166. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
  167. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
  168. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
  169. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
  170. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
  171. data/lib/ddtrace/contrib/kafka/ext.rb +41 -0
  172. data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
  173. data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
  174. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +7 -2
  175. data/lib/ddtrace/contrib/mongodb/ext.rb +5 -2
  176. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +1 -2
  177. data/lib/ddtrace/contrib/mongodb/integration.rb +5 -3
  178. data/lib/ddtrace/contrib/mongodb/patcher.rb +5 -11
  179. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -2
  180. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +7 -2
  181. data/lib/ddtrace/contrib/mysql2/ext.rb +5 -2
  182. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -1
  183. data/lib/ddtrace/contrib/mysql2/integration.rb +8 -2
  184. data/lib/ddtrace/contrib/mysql2/patcher.rb +3 -9
  185. data/lib/ddtrace/contrib/patchable.rb +21 -4
  186. data/lib/ddtrace/contrib/patcher.rb +44 -10
  187. data/lib/ddtrace/contrib/presto/configuration/settings.rb +30 -0
  188. data/lib/ddtrace/contrib/presto/ext.rb +28 -0
  189. data/lib/ddtrace/contrib/presto/instrumentation.rb +107 -0
  190. data/lib/ddtrace/contrib/presto/integration.rb +38 -0
  191. data/lib/ddtrace/contrib/presto/patcher.rb +30 -0
  192. data/lib/ddtrace/contrib/que/configuration/settings.rb +42 -0
  193. data/lib/ddtrace/contrib/que/ext.rb +30 -0
  194. data/lib/ddtrace/contrib/que/integration.rb +42 -0
  195. data/lib/ddtrace/contrib/que/patcher.rb +24 -0
  196. data/lib/ddtrace/contrib/que/tracer.rb +56 -0
  197. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +7 -2
  198. data/lib/ddtrace/contrib/racecar/event.rb +4 -0
  199. data/lib/ddtrace/contrib/racecar/events.rb +2 -0
  200. data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
  201. data/lib/ddtrace/contrib/racecar/ext.rb +6 -2
  202. data/lib/ddtrace/contrib/racecar/integration.rb +6 -3
  203. data/lib/ddtrace/contrib/racecar/patcher.rb +4 -10
  204. data/lib/ddtrace/contrib/rack/configuration/settings.rb +7 -2
  205. data/lib/ddtrace/contrib/rack/ext.rb +5 -2
  206. data/lib/ddtrace/contrib/rack/integration.rb +8 -2
  207. data/lib/ddtrace/contrib/rack/middlewares.rb +23 -14
  208. data/lib/ddtrace/contrib/rack/patcher.rb +57 -22
  209. data/lib/ddtrace/contrib/rack/request_queue.rb +1 -1
  210. data/lib/ddtrace/contrib/rails/configuration/settings.rb +23 -10
  211. data/lib/ddtrace/contrib/rails/ext.rb +7 -2
  212. data/lib/ddtrace/contrib/rails/framework.rb +59 -35
  213. data/lib/ddtrace/contrib/rails/integration.rb +12 -5
  214. data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
  215. data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
  216. data/lib/ddtrace/contrib/rails/patcher.rb +19 -8
  217. data/lib/ddtrace/contrib/rake/configuration/settings.rb +7 -3
  218. data/lib/ddtrace/contrib/rake/ext.rb +5 -2
  219. data/lib/ddtrace/contrib/rake/instrumentation.rb +6 -2
  220. data/lib/ddtrace/contrib/rake/integration.rb +8 -2
  221. data/lib/ddtrace/contrib/rake/patcher.rb +4 -10
  222. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +36 -0
  223. data/lib/ddtrace/contrib/redis/configuration/settings.rb +7 -2
  224. data/lib/ddtrace/contrib/redis/ext.rb +5 -2
  225. data/lib/ddtrace/contrib/redis/integration.rb +9 -3
  226. data/lib/ddtrace/contrib/redis/patcher.rb +20 -17
  227. data/lib/ddtrace/contrib/redis/quantize.rb +1 -1
  228. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +159 -0
  229. data/lib/ddtrace/contrib/resque/configuration/settings.rb +7 -2
  230. data/lib/ddtrace/contrib/resque/ext.rb +5 -2
  231. data/lib/ddtrace/contrib/resque/integration.rb +12 -2
  232. data/lib/ddtrace/contrib/resque/patcher.rb +4 -10
  233. data/lib/ddtrace/contrib/resque/resque_job.rb +6 -2
  234. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +7 -2
  235. data/lib/ddtrace/contrib/rest_client/ext.rb +5 -2
  236. data/lib/ddtrace/contrib/rest_client/integration.rb +9 -2
  237. data/lib/ddtrace/contrib/rest_client/patcher.rb +5 -7
  238. data/lib/ddtrace/contrib/rest_client/request_patch.rb +2 -2
  239. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -2
  240. data/lib/ddtrace/contrib/sequel/database.rb +1 -1
  241. data/lib/ddtrace/contrib/sequel/ext.rb +5 -2
  242. data/lib/ddtrace/contrib/sequel/integration.rb +8 -2
  243. data/lib/ddtrace/contrib/sequel/patcher.rb +4 -10
  244. data/lib/ddtrace/contrib/sequel/utils.rb +19 -1
  245. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +7 -2
  246. data/lib/ddtrace/contrib/shoryuken/ext.rb +5 -2
  247. data/lib/ddtrace/contrib/shoryuken/integration.rb +11 -7
  248. data/lib/ddtrace/contrib/shoryuken/patcher.rb +4 -10
  249. data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -0
  250. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +12 -2
  251. data/lib/ddtrace/contrib/sidekiq/ext.rb +8 -2
  252. data/lib/ddtrace/contrib/sidekiq/integration.rb +5 -3
  253. data/lib/ddtrace/contrib/sidekiq/patcher.rb +19 -18
  254. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +12 -3
  255. data/lib/ddtrace/contrib/sidekiq/tracing.rb +19 -2
  256. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +7 -2
  257. data/lib/ddtrace/contrib/sinatra/env.rb +25 -4
  258. data/lib/ddtrace/contrib/sinatra/ext.rb +11 -2
  259. data/lib/ddtrace/contrib/sinatra/integration.rb +5 -3
  260. data/lib/ddtrace/contrib/sinatra/patcher.rb +5 -10
  261. data/lib/ddtrace/contrib/sinatra/tracer.rb +79 -34
  262. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +48 -15
  263. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +32 -0
  264. data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
  265. data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
  266. data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
  267. data/lib/ddtrace/contrib/sneakers/tracer.rb +58 -0
  268. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +7 -2
  269. data/lib/ddtrace/contrib/sucker_punch/ext.rb +5 -2
  270. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +14 -0
  271. data/lib/ddtrace/contrib/sucker_punch/integration.rb +5 -3
  272. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +8 -14
  273. data/lib/ddtrace/correlation.rb +15 -5
  274. data/lib/ddtrace/diagnostics/environment_logger.rb +278 -0
  275. data/lib/ddtrace/diagnostics/health.rb +11 -8
  276. data/lib/ddtrace/encoding.rb +15 -11
  277. data/lib/ddtrace/environment.rb +21 -3
  278. data/lib/ddtrace/event.rb +52 -0
  279. data/lib/ddtrace/ext/analytics.rb +1 -0
  280. data/lib/ddtrace/ext/correlation.rb +11 -0
  281. data/lib/ddtrace/ext/diagnostics.rb +11 -0
  282. data/lib/ddtrace/ext/environment.rb +16 -0
  283. data/lib/ddtrace/ext/forced_tracing.rb +1 -1
  284. data/lib/ddtrace/ext/sampling.rb +16 -0
  285. data/lib/ddtrace/ext/transport.rb +1 -0
  286. data/lib/ddtrace/logger.rb +4 -3
  287. data/lib/ddtrace/metrics.rb +12 -5
  288. data/lib/ddtrace/monkey.rb +1 -1
  289. data/lib/ddtrace/opentelemetry/extensions.rb +13 -0
  290. data/lib/ddtrace/opentelemetry/span.rb +33 -0
  291. data/lib/ddtrace/opentracer/global_tracer.rb +1 -1
  292. data/lib/ddtrace/pin.rb +40 -16
  293. data/lib/ddtrace/pipeline.rb +1 -1
  294. data/lib/ddtrace/pipeline/span_filter.rb +15 -15
  295. data/lib/ddtrace/propagation/http_propagator.rb +2 -2
  296. data/lib/ddtrace/runtime/cgroup.rb +1 -1
  297. data/lib/ddtrace/runtime/container.rb +1 -1
  298. data/lib/ddtrace/runtime/metrics.rb +23 -6
  299. data/lib/ddtrace/sampler.rb +126 -29
  300. data/lib/ddtrace/sampling.rb +2 -0
  301. data/lib/ddtrace/sampling/matcher.rb +57 -0
  302. data/lib/ddtrace/sampling/rate_limiter.rb +127 -0
  303. data/lib/ddtrace/sampling/rule.rb +61 -0
  304. data/lib/ddtrace/sampling/rule_sampler.rb +125 -0
  305. data/lib/ddtrace/span.rb +54 -7
  306. data/lib/ddtrace/sync_writer.rb +13 -8
  307. data/lib/ddtrace/tracer.rb +72 -92
  308. data/lib/ddtrace/transport/http.rb +16 -1
  309. data/lib/ddtrace/transport/http/adapters/net.rb +8 -0
  310. data/lib/ddtrace/transport/http/adapters/test.rb +6 -0
  311. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -0
  312. data/lib/ddtrace/transport/http/api/instance.rb +4 -0
  313. data/lib/ddtrace/transport/http/builder.rb +3 -5
  314. data/lib/ddtrace/transport/http/client.rb +7 -64
  315. data/lib/ddtrace/transport/http/response.rb +1 -1
  316. data/lib/ddtrace/transport/http/statistics.rb +1 -1
  317. data/lib/ddtrace/transport/http/traces.rb +10 -7
  318. data/lib/ddtrace/transport/io.rb +26 -0
  319. data/lib/ddtrace/transport/io/client.rb +76 -0
  320. data/lib/ddtrace/transport/io/response.rb +25 -0
  321. data/lib/ddtrace/transport/io/traces.rb +91 -0
  322. data/lib/ddtrace/transport/response.rb +11 -0
  323. data/lib/ddtrace/transport/statistics.rb +2 -2
  324. data/lib/ddtrace/transport/traces.rb +160 -10
  325. data/lib/ddtrace/utils.rb +1 -1
  326. data/lib/ddtrace/version.rb +2 -2
  327. data/lib/ddtrace/worker.rb +20 -0
  328. data/lib/ddtrace/workers.rb +5 -13
  329. data/lib/ddtrace/workers/async.rb +165 -0
  330. data/lib/ddtrace/workers/loop.rb +105 -0
  331. data/lib/ddtrace/workers/polling.rb +48 -0
  332. data/lib/ddtrace/workers/queue.rb +39 -0
  333. data/lib/ddtrace/workers/runtime_metrics.rb +47 -0
  334. data/lib/ddtrace/workers/trace_writer.rb +202 -0
  335. data/lib/ddtrace/writer.rb +56 -38
  336. metadata +185 -25
  337. data/lib/ddtrace/provider.rb +0 -21
@@ -10,20 +10,23 @@ module Datadog
10
10
  count :api_errors, Ext::Diagnostics::Health::Metrics::METRIC_API_ERRORS
11
11
  count :api_requests, Ext::Diagnostics::Health::Metrics::METRIC_API_REQUESTS
12
12
  count :api_responses, Ext::Diagnostics::Health::Metrics::METRIC_API_RESPONSES
13
+ count :error_context_overflow, Ext::Diagnostics::Health::Metrics::METRIC_ERROR_CONTEXT_OVERFLOW
14
+ count :error_instrumentation_patch, Ext::Diagnostics::Health::Metrics::METRIC_ERROR_INSTRUMENTATION_PATCH
15
+ count :error_span_finish, Ext::Diagnostics::Health::Metrics::METRIC_ERROR_SPAN_FINISH
16
+ count :error_unfinished_spans, Ext::Diagnostics::Health::Metrics::METRIC_ERROR_UNFINISHED_SPANS
17
+ count :instrumentation_patched, Ext::Diagnostics::Health::Metrics::METRIC_INSTRUMENTATION_PATCHED
13
18
  count :queue_accepted, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_ACCEPTED
14
19
  count :queue_accepted_lengths, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_ACCEPTED_LENGTHS
15
20
  count :queue_dropped, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_DROPPED
16
- gauge :queue_length, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_LENGTH
17
- gauge :queue_max_length, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_MAX_LENGTH
18
- gauge :queue_spans, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_SPANS
19
21
  count :traces_filtered, Ext::Diagnostics::Health::Metrics::METRIC_TRACES_FILTERED
22
+ count :transport_trace_too_large, Ext::Diagnostics::Health::Metrics::METRIC_TRANSPORT_TRACE_TOO_LARGE
23
+ count :transport_chunked, Ext::Diagnostics::Health::Metrics::METRIC_TRANSPORT_CHUNKED
20
24
  count :writer_cpu_time, Ext::Diagnostics::Health::Metrics::METRIC_WRITER_CPU_TIME
21
- end
22
25
 
23
- module_function
24
-
25
- def metrics
26
- Datadog.configuration.diagnostics.health_metrics
26
+ gauge :queue_length, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_LENGTH
27
+ gauge :queue_max_length, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_MAX_LENGTH
28
+ gauge :queue_spans, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_SPANS
29
+ gauge :sampling_service_cache_length, Ext::Diagnostics::Health::Metrics::METRIC_SAMPLING_SERVICE_CACHE_LENGTH
27
30
  end
28
31
  end
29
32
  end
@@ -10,19 +10,12 @@ module Datadog
10
10
  raise NotImplementedError
11
11
  end
12
12
 
13
- # Encodes a list of traces, expecting a list of items where each items
14
- # is a list of spans. Before dump the string in a serialized format all
15
- # traces are normalized. The traces nesting is not changed.
16
- def encode_traces(traces)
17
- to_send = []
18
- traces.each do |trace|
19
- to_send << trace.map(&:to_hash)
20
- end
21
- encode(to_send)
13
+ # Concatenates a list of elements previously encoded by +#encode+.
14
+ def join(encoded_elements)
15
+ raise NotImplementedError
22
16
  end
23
17
 
24
- # Defines the underlying format used during traces or services encoding.
25
- # This method must be implemented and should only be used by the internal functions.
18
+ # Serializes a single trace into a String suitable for network transmission.
26
19
  def encode(_)
27
20
  raise NotImplementedError
28
21
  end
@@ -43,6 +36,10 @@ module Datadog
43
36
  def encode(obj)
44
37
  JSON.dump(obj)
45
38
  end
39
+
40
+ def join(encoded_data)
41
+ "[#{encoded_data.join(',')}]"
42
+ end
46
43
  end
47
44
 
48
45
  # Encoder for the Msgpack format
@@ -60,6 +57,13 @@ module Datadog
60
57
  def encode(obj)
61
58
  MessagePack.pack(obj)
62
59
  end
60
+
61
+ def join(encoded_data)
62
+ packer = MessagePack::Packer.new
63
+ packer.write_array_header(encoded_data.size)
64
+
65
+ (packer.buffer.to_a + encoded_data).join
66
+ end
63
67
  end
64
68
  end
65
69
  end
@@ -1,23 +1,41 @@
1
+ require 'ddtrace/ext/environment'
2
+
1
3
  module Datadog
2
4
  # Namespace for handling application environment
3
5
  module Environment
4
6
  # Defines helper methods for environment
5
7
  module Helpers
6
8
  def env_to_bool(var, default = nil)
7
- ENV.key?(var) ? ENV[var].to_s.downcase == 'true' : default
9
+ var = decode_array(var)
10
+ var && ENV.key?(var) ? ENV[var].to_s.strip.downcase == 'true' : default
11
+ end
12
+
13
+ def env_to_int(var, default = nil)
14
+ var = decode_array(var)
15
+ var && ENV.key?(var) ? ENV[var].to_i : default
8
16
  end
9
17
 
10
18
  def env_to_float(var, default = nil)
11
- ENV.key?(var) ? ENV[var].to_f : default
19
+ var = decode_array(var)
20
+ var && ENV.key?(var) ? ENV[var].to_f : default
12
21
  end
13
22
 
14
23
  def env_to_list(var, default = [])
15
- if ENV.key?(var)
24
+ var = decode_array(var)
25
+ if var && ENV.key?(var)
16
26
  ENV[var].split(',').map(&:strip)
17
27
  else
18
28
  default
19
29
  end
20
30
  end
31
+
32
+ private
33
+
34
+ def decode_array(var)
35
+ var.is_a?(Array) ? var.find { |env_var| ENV.key?(env_var) } : var
36
+ end
21
37
  end
38
+
39
+ extend Helpers
22
40
  end
23
41
  end
@@ -0,0 +1,52 @@
1
+ require 'ddtrace/logger'
2
+
3
+ module Datadog
4
+ # A simple pub-sub event model for components to exchange messages through.
5
+ class Event
6
+ attr_reader \
7
+ :name,
8
+ :subscriptions
9
+
10
+ def initialize(name)
11
+ @name = name
12
+ @subscriptions = {}
13
+ @mutex = Mutex.new
14
+ end
15
+
16
+ def subscribe(key, &block)
17
+ raise ArgumentError, 'Must give a block to subscribe!' unless block
18
+
19
+ @mutex.synchronize do
20
+ subscriptions[key] = block
21
+ end
22
+ end
23
+
24
+ def unsubscribe(key)
25
+ @mutex.synchronize do
26
+ subscriptions.delete(key)
27
+ end
28
+ end
29
+
30
+ def unsubscribe_all!
31
+ @mutex.synchronize do
32
+ subscriptions.clear
33
+ end
34
+
35
+ true
36
+ end
37
+
38
+ def publish(*args)
39
+ @mutex.synchronize do
40
+ subscriptions.each do |key, block|
41
+ begin
42
+ block.call(*args)
43
+ rescue StandardError => e
44
+ Datadog.logger.debug("Error while handling '#{key}' for '#{name}' event: #{e.message}")
45
+ end
46
+ end
47
+
48
+ true
49
+ end
50
+ end
51
+ end
52
+ end
@@ -5,6 +5,7 @@ module Datadog
5
5
  DEFAULT_SAMPLE_RATE = 1.0
6
6
  ENV_TRACE_ANALYTICS_ENABLED = 'DD_TRACE_ANALYTICS_ENABLED'.freeze
7
7
  TAG_ENABLED = 'analytics.enabled'.freeze
8
+ TAG_MEASURED = '_dd.measured'.freeze
8
9
  TAG_SAMPLE_RATE = '_dd1.sr.eausr'.freeze
9
10
  end
10
11
  end
@@ -0,0 +1,11 @@
1
+ module Datadog
2
+ module Ext
3
+ module Correlation
4
+ ATTR_ENV = 'dd.env'.freeze
5
+ ATTR_SERVICE = 'dd.service'.freeze
6
+ ATTR_SPAN_ID = 'dd.span_id'.freeze
7
+ ATTR_TRACE_ID = 'dd.trace_id'.freeze
8
+ ATTR_VERSION = 'dd.version'.freeze
9
+ end
10
+ end
11
+ end
@@ -1,6 +1,9 @@
1
1
  module Datadog
2
2
  module Ext
3
3
  module Diagnostics
4
+ DD_TRACE_STARTUP_LOGS = 'DD_TRACE_STARTUP_LOGS'.freeze
5
+ DD_TRACE_DEBUG = 'DD_TRACE_DEBUG'.freeze
6
+ DD_TRACE_ENABLED = 'DD_TRACE_ENABLED'.freeze
4
7
  # Health
5
8
  module Health
6
9
  # Metrics
@@ -10,13 +13,21 @@ module Datadog
10
13
  METRIC_API_ERRORS = 'datadog.tracer.api.errors'.freeze
11
14
  METRIC_API_REQUESTS = 'datadog.tracer.api.requests'.freeze
12
15
  METRIC_API_RESPONSES = 'datadog.tracer.api.responses'.freeze
16
+ METRIC_ERROR_CONTEXT_OVERFLOW = 'datadog.tracer.error.context_overflow'.freeze
17
+ METRIC_ERROR_INSTRUMENTATION_PATCH = 'datadog.tracer.error.instrumentation_patch'.freeze
18
+ METRIC_ERROR_SPAN_FINISH = 'datadog.tracer.error.span_finish'.freeze
19
+ METRIC_ERROR_UNFINISHED_SPANS = 'datadog.tracer.error.unfinished_spans'.freeze
20
+ METRIC_INSTRUMENTATION_PATCHED = 'datadog.tracer.instrumentation_patched'.freeze
13
21
  METRIC_QUEUE_ACCEPTED = 'datadog.tracer.queue.accepted'.freeze
14
22
  METRIC_QUEUE_ACCEPTED_LENGTHS = 'datadog.tracer.queue.accepted_lengths'.freeze
15
23
  METRIC_QUEUE_DROPPED = 'datadog.tracer.queue.dropped'.freeze
16
24
  METRIC_QUEUE_LENGTH = 'datadog.tracer.queue.length'.freeze
17
25
  METRIC_QUEUE_MAX_LENGTH = 'datadog.tracer.queue.max_length'.freeze
18
26
  METRIC_QUEUE_SPANS = 'datadog.tracer.queue.spans'.freeze
27
+ METRIC_SAMPLING_SERVICE_CACHE_LENGTH = 'datadog.tracer.sampling.service_cache_length'.freeze
19
28
  METRIC_TRACES_FILTERED = 'datadog.tracer.traces.filtered'.freeze
29
+ METRIC_TRANSPORT_CHUNKED = 'datadog.tracer.transport.chunked'.freeze
30
+ METRIC_TRANSPORT_TRACE_TOO_LARGE = 'datadog.tracer.transport.trace_too_large'.freeze
20
31
  METRIC_WRITER_CPU_TIME = 'datadog.tracer.writer.cpu_time'.freeze
21
32
  end
22
33
  end
@@ -0,0 +1,16 @@
1
+ module Datadog
2
+ module Ext
3
+ module Environment
4
+ ENV_API_KEY = 'DD_API_KEY'.freeze
5
+ ENV_ENVIRONMENT = 'DD_ENV'.freeze
6
+ ENV_SERVICE = 'DD_SERVICE'.freeze
7
+ ENV_SITE = 'DD_SITE'.freeze
8
+ ENV_TAGS = 'DD_TAGS'.freeze
9
+ ENV_VERSION = 'DD_VERSION'.freeze
10
+
11
+ TAG_ENV = 'env'.freeze
12
+ TAG_SERVICE = 'service'.freeze
13
+ TAG_VERSION = 'version'.freeze
14
+ end
15
+ end
16
+ end
@@ -12,7 +12,7 @@ module Datadog
12
12
 
13
13
  # Only log each deprecation warning once (safeguard against log spam)
14
14
  unless @deprecation_warning_shown
15
- Datadog::Tracer.log.warn(
15
+ Datadog.logger.warn(
16
16
  'forced tracing: Datadog::Ext::ForcedTracing has been renamed to Datadog::Ext::ManualTracing'
17
17
  )
18
18
  @deprecation_warning_shown = true
@@ -0,0 +1,16 @@
1
+ module Datadog
2
+ module Ext
3
+ module Sampling
4
+ ENV_SAMPLE_RATE = 'DD_TRACE_SAMPLE_RATE'.freeze
5
+ ENV_RATE_LIMIT = 'DD_TRACE_RATE_LIMIT'.freeze
6
+
7
+ # If rule sampling is applied to a span, set this metric the sample rate configured for that rule.
8
+ # This should be done regardless of sampling outcome.
9
+ RULE_SAMPLE_RATE = '_dd.rule_psr'.freeze
10
+
11
+ # If rate limiting is checked on a span, set this metric the effective rate limiting rate applied.
12
+ # This should be done regardless of rate limiting outcome.
13
+ RATE_LIMITER_RATE = '_dd.limit_psr'.freeze
14
+ end
15
+ end
16
+ end
@@ -6,6 +6,7 @@ module Datadog
6
6
  DEFAULT_PORT = 8126
7
7
  ENV_DEFAULT_HOST = 'DD_AGENT_HOST'.freeze
8
8
  ENV_DEFAULT_PORT = 'DD_TRACE_AGENT_PORT'.freeze
9
+ ENV_DEFAULT_URL = 'DD_TRACE_AGENT_URL'.freeze
9
10
  HEADER_CONTAINER_ID = 'Datadog-Container-ID'.freeze
10
11
  HEADER_META_LANG = 'Datadog-Meta-Lang'.freeze
11
12
  HEADER_META_LANG_VERSION = 'Datadog-Meta-Lang-Version'.freeze
@@ -1,15 +1,16 @@
1
1
  require 'logger'
2
2
 
3
3
  module Datadog
4
- LOG_PREFIX = 'ddtrace'.freeze
5
-
6
4
  # A custom logger with minor enhancements:
7
5
  # - progname defaults to ddtrace to clearly identify Datadog dd-trace-rb related messages
8
6
  # - adds last caller stack-trace info to know where the message comes from
9
7
  class Logger < ::Logger
8
+ PREFIX = 'ddtrace'.freeze
9
+
10
10
  def initialize(*args, &block)
11
11
  super
12
- self.progname = LOG_PREFIX
12
+ self.progname = PREFIX
13
+ self.level = ::Logger::INFO
13
14
  end
14
15
 
15
16
  def add(severity, message = nil, progname = nil, &block)
@@ -2,6 +2,7 @@ require 'ddtrace/ext/metrics'
2
2
 
3
3
  require 'set'
4
4
  require 'logger'
5
+ require 'ddtrace/environment'
5
6
  require 'ddtrace/utils/time'
6
7
  require 'ddtrace/runtime/identity'
7
8
 
@@ -62,7 +63,7 @@ module Datadog
62
63
 
63
64
  statsd.count(stat, value, metric_options(options))
64
65
  rescue StandardError => e
65
- Datadog::Tracer.log.error("Failed to send count stat. Cause: #{e.message} Source: #{e.backtrace.first}")
66
+ Datadog.logger.error("Failed to send count stat. Cause: #{e.message} Source: #{e.backtrace.first}")
66
67
  end
67
68
 
68
69
  def distribution(stat, value = nil, options = nil, &block)
@@ -72,7 +73,7 @@ module Datadog
72
73
 
73
74
  statsd.distribution(stat, value, metric_options(options))
74
75
  rescue StandardError => e
75
- Datadog::Tracer.log.error("Failed to send distribution stat. Cause: #{e.message} Source: #{e.backtrace.first}")
76
+ Datadog.logger.error("Failed to send distribution stat. Cause: #{e.message} Source: #{e.backtrace.first}")
76
77
  end
77
78
 
78
79
  def increment(stat, options = nil)
@@ -81,7 +82,7 @@ module Datadog
81
82
 
82
83
  statsd.increment(stat, metric_options(options))
83
84
  rescue StandardError => e
84
- Datadog::Tracer.log.error("Failed to send increment stat. Cause: #{e.message} Source: #{e.backtrace.first}")
85
+ Datadog.logger.error("Failed to send increment stat. Cause: #{e.message} Source: #{e.backtrace.first}")
85
86
  end
86
87
 
87
88
  def gauge(stat, value = nil, options = nil, &block)
@@ -91,7 +92,7 @@ module Datadog
91
92
 
92
93
  statsd.gauge(stat, value, metric_options(options))
93
94
  rescue StandardError => e
94
- Datadog::Tracer.log.error("Failed to send gauge stat. Cause: #{e.message} Source: #{e.backtrace.first}")
95
+ Datadog.logger.error("Failed to send gauge stat. Cause: #{e.message} Source: #{e.backtrace.first}")
95
96
  end
96
97
 
97
98
  def time(stat, options = nil)
@@ -107,7 +108,7 @@ module Datadog
107
108
  distribution(stat, ((finished - start) * 1000), options)
108
109
  end
109
110
  rescue StandardError => e
110
- Datadog::Tracer.log.error("Failed to send time stat. Cause: #{e.message} Source: #{e.backtrace.first}")
111
+ Datadog.logger.error("Failed to send time stat. Cause: #{e.message} Source: #{e.backtrace.first}")
111
112
  end
112
113
  end
113
114
 
@@ -151,6 +152,12 @@ module Datadog
151
152
  # and defaults are unfrozen for mutation in Statsd.
152
153
  DEFAULT.dup.tap do |options|
153
154
  options[:tags] = options[:tags].dup
155
+
156
+ env = Datadog.configuration.env
157
+ options[:tags] << "#{Datadog::Ext::Environment::TAG_ENV}:#{env}" unless env.nil?
158
+
159
+ version = Datadog.configuration.version
160
+ options[:tags] << "#{Datadog::Ext::Environment::TAG_VERSION}:#{version}" unless version.nil?
154
161
  end
155
162
  end
156
163
  end
@@ -48,7 +48,7 @@ module Datadog
48
48
  end
49
49
 
50
50
  def log_deprecation_warning(method)
51
- Datadog::Tracer.log.warn("#{method}:#{DEPRECATION_WARNING}")
51
+ Datadog.logger.warn("#{method}:#{DEPRECATION_WARNING}")
52
52
  end
53
53
 
54
54
  class << self
@@ -0,0 +1,13 @@
1
+ require 'ddtrace/span'
2
+ require 'ddtrace/opentelemetry/span'
3
+
4
+ module Datadog
5
+ module OpenTelemetry
6
+ # Defines extensions to ddtrace for OpenTelemetry support
7
+ module Extensions
8
+ def self.extended(base)
9
+ Datadog::Span.send(:prepend, OpenTelemetry::Span)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,33 @@
1
+ require 'ddtrace/ext/environment'
2
+
3
+ module Datadog
4
+ module OpenTelemetry
5
+ # Extensions for Datadog::Span
6
+ module Span
7
+ TAG_SERVICE_NAME = 'service.name'.freeze
8
+ TAG_SERVICE_VERSION = 'service.version'.freeze
9
+
10
+ def set_tag(key, value)
11
+ # Configure sampling priority if they give us a forced tracing tag
12
+ # DEV: Do not set if the value they give us is explicitly "false"
13
+ case key
14
+ when TAG_SERVICE_NAME
15
+ if defined?(super)
16
+ # Set original tag and Datadog version tag
17
+ self.service = value
18
+ super
19
+ end
20
+ when TAG_SERVICE_VERSION
21
+ if defined?(super)
22
+ # Set original tag and Datadog version tag
23
+ super
24
+ super(Datadog::Ext::Environment::TAG_VERSION, value)
25
+ end
26
+ else
27
+ # Otherwise, set the tag normally.
28
+ super if defined?(super)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -6,7 +6,7 @@ module Datadog
6
6
  super.tap do
7
7
  if tracer.class <= Datadog::OpenTracer::Tracer
8
8
  # Update the Datadog global tracer, too.
9
- Datadog.configuration.tracer = tracer.datadog_tracer
9
+ Datadog.configure { |c| c.tracer = tracer.datadog_tracer }
10
10
  end
11
11
  end
12
12
  end
@@ -12,26 +12,36 @@ module Datadog
12
12
  obj.datadog_pin
13
13
  end
14
14
 
15
- attr_reader :service_name
16
15
  attr_accessor :app
17
- attr_accessor :tags
18
16
  attr_accessor :app_type
19
- attr_accessor :name
20
- attr_accessor :tracer
21
17
  attr_accessor :config
18
+ attr_accessor :name
19
+ attr_accessor :service_name
20
+ attr_accessor :tags
21
+ attr_reader :tracer
22
+ attr_accessor :writer
23
+
24
+ alias service= service_name=
25
+ alias service service_name
22
26
 
23
27
  def initialize(service_name, options = {})
28
+ deprecation_warning unless options[:tracer].is_a?(Proc) || options[:tracer].nil?
29
+
24
30
  @app = options[:app]
25
- @tags = options[:tags]
26
31
  @app_type = options[:app_type]
27
- @name = nil # this would rarely be overriden as it's really span-specific
28
- @tracer = options[:tracer] || Datadog.tracer
29
32
  @config = options[:config]
30
- self.service_name = service_name
33
+ @name = nil # this would rarely be overriden as it's really span-specific
34
+ @service_name = service_name
35
+ @tags = options[:tags]
36
+ @tracer = options[:tracer]
37
+ end
38
+
39
+ def tracer
40
+ @tracer.is_a?(Proc) ? @tracer.call : (@tracer || Datadog.tracer)
31
41
  end
32
42
 
33
43
  def enabled?
34
- return @tracer.enabled if @tracer
44
+ return tracer.enabled if tracer
35
45
  false
36
46
  end
37
47
 
@@ -56,15 +66,29 @@ module Datadog
56
66
  obj.datadog_pin = self
57
67
  end
58
68
 
59
- def service_name=(name)
60
- @service_name = name
69
+ def to_s
70
+ "Pin(service:#{service},app:#{app},app_type:#{app_type},name:#{name})"
71
+ end
72
+
73
+ private
74
+
75
+ DEPRECATION_WARNING = %(
76
+ Explicitly providing a tracer instance is DEPRECATED.
77
+ It's recommended to not provide an explicit tracer instance
78
+ and let Datadog::Pin resolve the correct tracer internally.
79
+ ).freeze
80
+
81
+ def deprecation_warning
82
+ log_deprecation_warning('Datadog::Pin.new')
61
83
  end
62
84
 
63
- alias service= service_name=
64
- alias service service_name
85
+ include Datadog::Patcher
65
86
 
66
- def to_s
67
- "Pin(service:#{service},app:#{app},app_type:#{app_type},name:#{name})"
87
+ def log_deprecation_warning(method_name)
88
+ # Only log each deprecation warning once (safeguard against log spam)
89
+ do_once(method_name) do
90
+ Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
91
+ end
68
92
  end
69
93
  end
70
94
 
@@ -107,7 +131,7 @@ module Datadog
107
131
  def log_deprecation_warning(method_name)
108
132
  # Only log each deprecation warning once (safeguard against log spam)
109
133
  do_once(method_name) do
110
- Datadog::Tracer.log.warn("#{method_name}:#{DEPRECATION_WARNING}")
134
+ Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
111
135
  end
112
136
  end
113
137
  end