ddtrace 1.1.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (524) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +129 -1
  3. data/LICENSE-3rdparty.csv +2 -0
  4. data/README.md +8 -3
  5. data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +2 -2
  6. data/ext/ddtrace_profiling_loader/extconf.rb +1 -0
  7. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +15 -7
  8. data/ext/ddtrace_profiling_native_extension/clock_id.h +21 -1
  9. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +31 -2
  10. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +11 -2
  11. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.c +390 -0
  12. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +6 -0
  13. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +391 -0
  14. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +23 -19
  15. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +9 -0
  16. data/ext/ddtrace_profiling_native_extension/extconf.rb +64 -16
  17. data/ext/ddtrace_profiling_native_extension/helpers.h +12 -0
  18. data/ext/ddtrace_profiling_native_extension/http_transport.c +334 -0
  19. data/ext/ddtrace_profiling_native_extension/{libddprof_helpers.h → libdatadog_helpers.h} +2 -1
  20. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +116 -12
  21. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +89 -4
  22. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +5 -5
  23. data/ext/ddtrace_profiling_native_extension/profiling.c +8 -3
  24. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +25 -0
  25. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +65 -0
  26. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +311 -28
  27. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +18 -8
  28. data/lib/datadog/appsec/autoload.rb +4 -2
  29. data/lib/datadog/appsec/configuration.rb +1 -1
  30. data/lib/datadog/appsec/contrib/auto_instrument.rb +0 -2
  31. data/lib/datadog/appsec/contrib/configuration/settings.rb +1 -1
  32. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +2 -2
  33. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +6 -6
  34. data/lib/datadog/appsec/contrib/rack/integration.rb +5 -5
  35. data/lib/datadog/appsec/contrib/rack/patcher.rb +2 -2
  36. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +1 -1
  37. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +1 -1
  38. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +1 -1
  39. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +2 -2
  40. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +3 -3
  41. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +2 -2
  42. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +4 -4
  43. data/lib/datadog/appsec/contrib/rails/integration.rb +4 -4
  44. data/lib/datadog/appsec/contrib/rails/patcher.rb +16 -12
  45. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +1 -1
  46. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +2 -2
  47. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +5 -5
  48. data/lib/datadog/appsec/contrib/sinatra/integration.rb +4 -4
  49. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +16 -12
  50. data/lib/datadog/appsec/event.rb +3 -3
  51. data/lib/datadog/appsec/extensions.rb +1 -1
  52. data/lib/datadog/appsec/processor.rb +1 -1
  53. data/lib/datadog/appsec/reactive/engine.rb +2 -2
  54. data/lib/datadog/appsec/reactive/operation.rb +3 -3
  55. data/lib/datadog/appsec.rb +5 -5
  56. data/lib/datadog/ci/configuration/components.rb +1 -1
  57. data/lib/datadog/ci/configuration/settings.rb +1 -1
  58. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +2 -2
  59. data/lib/datadog/ci/contrib/cucumber/formatter.rb +5 -5
  60. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +1 -1
  61. data/lib/datadog/ci/contrib/cucumber/integration.rb +4 -4
  62. data/lib/datadog/ci/contrib/cucumber/patcher.rb +2 -2
  63. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +2 -2
  64. data/lib/datadog/ci/contrib/rspec/example.rb +5 -5
  65. data/lib/datadog/ci/contrib/rspec/integration.rb +4 -4
  66. data/lib/datadog/ci/contrib/rspec/patcher.rb +2 -2
  67. data/lib/datadog/ci/ext/environment.rb +8 -6
  68. data/lib/datadog/ci/extensions.rb +4 -4
  69. data/lib/datadog/ci/flush.rb +2 -2
  70. data/lib/datadog/ci/test.rb +3 -3
  71. data/lib/datadog/ci.rb +6 -6
  72. data/lib/datadog/core/buffer/cruby.rb +1 -1
  73. data/lib/datadog/core/buffer/thread_safe.rb +1 -1
  74. data/lib/datadog/core/configuration/agent_settings_resolver.rb +6 -6
  75. data/lib/datadog/core/configuration/base.rb +11 -2
  76. data/lib/datadog/core/configuration/components.rb +70 -52
  77. data/lib/datadog/core/configuration/option_definition.rb +1 -1
  78. data/lib/datadog/core/configuration/option_definition_set.rb +1 -1
  79. data/lib/datadog/core/configuration/options.rb +3 -3
  80. data/lib/datadog/core/configuration/settings.rb +42 -8
  81. data/lib/datadog/core/configuration.rb +8 -5
  82. data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
  83. data/lib/datadog/core/diagnostics/health.rb +2 -2
  84. data/lib/datadog/core/environment/cgroup.rb +1 -1
  85. data/lib/datadog/core/environment/container.rb +1 -1
  86. data/lib/datadog/core/environment/ext.rb +1 -1
  87. data/lib/datadog/core/environment/identity.rb +2 -2
  88. data/lib/datadog/core/environment/platform.rb +40 -0
  89. data/lib/datadog/core/environment/socket.rb +1 -1
  90. data/lib/datadog/core/error.rb +1 -1
  91. data/lib/datadog/core/extensions.rb +1 -1
  92. data/lib/datadog/core/metrics/client.rb +8 -8
  93. data/lib/datadog/core/metrics/options.rb +3 -3
  94. data/lib/datadog/core/runtime/metrics.rb +6 -6
  95. data/lib/datadog/core/telemetry/client.rb +79 -0
  96. data/lib/datadog/core/telemetry/collector.rb +234 -0
  97. data/lib/datadog/core/telemetry/emitter.rb +48 -0
  98. data/lib/datadog/core/telemetry/event.rb +71 -0
  99. data/lib/datadog/core/telemetry/ext.rb +11 -0
  100. data/lib/datadog/core/telemetry/heartbeat.rb +37 -0
  101. data/lib/datadog/core/telemetry/http/adapters/net.rb +113 -0
  102. data/lib/datadog/core/telemetry/http/env.rb +20 -0
  103. data/lib/datadog/core/telemetry/http/ext.rb +20 -0
  104. data/lib/datadog/core/telemetry/http/response.rb +68 -0
  105. data/lib/datadog/core/telemetry/http/transport.rb +53 -0
  106. data/lib/datadog/core/telemetry/v1/app_event.rb +52 -0
  107. data/lib/datadog/core/telemetry/v1/application.rb +86 -0
  108. data/lib/datadog/core/telemetry/v1/configuration.rb +25 -0
  109. data/lib/datadog/core/telemetry/v1/dependency.rb +36 -0
  110. data/lib/datadog/core/telemetry/v1/host.rb +51 -0
  111. data/lib/datadog/core/telemetry/v1/integration.rb +58 -0
  112. data/lib/datadog/core/telemetry/v1/product.rb +28 -0
  113. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +100 -0
  114. data/lib/datadog/core/utils/object_set.rb +1 -1
  115. data/lib/datadog/core/utils/sequence.rb +5 -0
  116. data/lib/datadog/core/utils/string_table.rb +1 -1
  117. data/lib/datadog/core/utils/time.rb +3 -3
  118. data/lib/datadog/core/utils.rb +3 -3
  119. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +2 -2
  120. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +3 -3
  121. data/lib/datadog/core/workers/async.rb +1 -1
  122. data/lib/datadog/core/workers/polling.rb +2 -2
  123. data/lib/datadog/core/workers/runtime_metrics.rb +4 -4
  124. data/lib/datadog/core.rb +50 -50
  125. data/lib/datadog/kit.rb +1 -1
  126. data/lib/datadog/opentracer/distributed_headers.rb +2 -2
  127. data/lib/datadog/opentracer/rack_propagator.rb +11 -7
  128. data/lib/datadog/opentracer/span.rb +1 -1
  129. data/lib/datadog/opentracer/text_map_propagator.rb +9 -6
  130. data/lib/datadog/opentracer/thread_local_scope_manager.rb +26 -3
  131. data/lib/datadog/opentracer/tracer.rb +19 -15
  132. data/lib/datadog/opentracer.rb +16 -16
  133. data/lib/datadog/profiling/buffer.rb +3 -3
  134. data/lib/datadog/profiling/collectors/code_provenance.rb +1 -0
  135. data/lib/datadog/profiling/collectors/cpu_and_wall_time.rb +27 -0
  136. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +74 -0
  137. data/lib/datadog/profiling/collectors/old_stack.rb +7 -7
  138. data/lib/datadog/profiling/collectors/stack.rb +3 -6
  139. data/lib/datadog/profiling/encoding/profile.rb +8 -12
  140. data/lib/datadog/profiling/events/stack.rb +1 -1
  141. data/lib/datadog/profiling/exporter.rb +66 -9
  142. data/lib/datadog/profiling/ext/forking.rb +41 -42
  143. data/lib/datadog/profiling/ext.rb +3 -15
  144. data/lib/datadog/profiling/flush.rb +25 -56
  145. data/lib/datadog/profiling/http_transport.rb +132 -0
  146. data/lib/datadog/profiling/old_ext.rb +42 -0
  147. data/lib/datadog/profiling/old_recorder.rb +101 -0
  148. data/lib/datadog/profiling/pprof/builder.rb +4 -4
  149. data/lib/datadog/profiling/pprof/converter.rb +1 -1
  150. data/lib/datadog/profiling/pprof/message_set.rb +1 -1
  151. data/lib/datadog/profiling/pprof/stack_sample.rb +4 -4
  152. data/lib/datadog/profiling/pprof/string_table.rb +1 -1
  153. data/lib/datadog/profiling/pprof/template.rb +5 -5
  154. data/lib/datadog/profiling/preload.rb +1 -1
  155. data/lib/datadog/profiling/scheduler.rb +28 -46
  156. data/lib/datadog/profiling/stack_recorder.rb +14 -4
  157. data/lib/datadog/profiling/tag_builder.rb +6 -1
  158. data/lib/datadog/profiling/tasks/setup.rb +2 -2
  159. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +2 -2
  160. data/lib/datadog/profiling/trace_identifiers/helper.rb +1 -1
  161. data/lib/datadog/profiling/transport/http/api/endpoint.rb +13 -35
  162. data/lib/datadog/profiling/transport/http/api/instance.rb +2 -2
  163. data/lib/datadog/profiling/transport/http/api/spec.rb +1 -1
  164. data/lib/datadog/profiling/transport/http/api.rb +5 -5
  165. data/lib/datadog/profiling/transport/http/builder.rb +3 -3
  166. data/lib/datadog/profiling/transport/http/client.rb +6 -4
  167. data/lib/datadog/profiling/transport/http/response.rb +1 -3
  168. data/lib/datadog/profiling/transport/http.rb +22 -16
  169. data/lib/datadog/profiling.rb +21 -20
  170. data/lib/datadog/tracing/analytics.rb +1 -1
  171. data/lib/datadog/tracing/buffer.rb +5 -5
  172. data/lib/datadog/tracing/context.rb +1 -1
  173. data/lib/datadog/tracing/context_provider.rb +18 -2
  174. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +2 -2
  175. data/lib/datadog/tracing/contrib/action_cable/event.rb +4 -5
  176. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +4 -4
  177. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +3 -3
  178. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +4 -4
  179. data/lib/datadog/tracing/contrib/action_cable/events.rb +4 -4
  180. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +3 -4
  181. data/lib/datadog/tracing/contrib/action_cable/integration.rb +4 -4
  182. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +4 -4
  183. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +2 -2
  184. data/lib/datadog/tracing/contrib/action_mailer/event.rb +3 -3
  185. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +3 -3
  186. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +3 -3
  187. data/lib/datadog/tracing/contrib/action_mailer/events.rb +2 -2
  188. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +4 -4
  189. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +3 -3
  190. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +10 -6
  191. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +2 -2
  192. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +2 -2
  193. data/lib/datadog/tracing/contrib/action_pack/integration.rb +4 -4
  194. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +2 -2
  195. data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -1
  196. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +2 -2
  197. data/lib/datadog/tracing/contrib/action_view/event.rb +1 -1
  198. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +5 -5
  199. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +5 -5
  200. data/lib/datadog/tracing/contrib/action_view/events.rb +2 -2
  201. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +2 -2
  202. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +2 -2
  203. data/lib/datadog/tracing/contrib/action_view/integration.rb +4 -4
  204. data/lib/datadog/tracing/contrib/action_view/patcher.rb +7 -7
  205. data/lib/datadog/tracing/contrib/action_view/utils.rb +1 -1
  206. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +3 -3
  207. data/lib/datadog/tracing/contrib/active_job/event.rb +3 -3
  208. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +4 -4
  209. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +4 -4
  210. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +4 -4
  211. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +4 -4
  212. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +4 -4
  213. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +4 -4
  214. data/lib/datadog/tracing/contrib/active_job/events.rb +6 -6
  215. data/lib/datadog/tracing/contrib/active_job/integration.rb +4 -4
  216. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +0 -2
  217. data/lib/datadog/tracing/contrib/active_job/patcher.rb +4 -4
  218. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +2 -2
  219. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +4 -5
  220. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +3 -3
  221. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +2 -2
  222. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +2 -2
  223. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +3 -3
  224. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +3 -4
  225. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +2 -2
  226. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +3 -3
  227. data/lib/datadog/tracing/contrib/active_record/event.rb +1 -1
  228. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +4 -4
  229. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +6 -6
  230. data/lib/datadog/tracing/contrib/active_record/events.rb +2 -2
  231. data/lib/datadog/tracing/contrib/active_record/integration.rb +6 -6
  232. data/lib/datadog/tracing/contrib/active_record/patcher.rb +2 -2
  233. data/lib/datadog/tracing/contrib/active_record/utils.rb +2 -2
  234. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +19 -9
  235. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +2 -2
  236. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +1 -1
  237. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +2 -2
  238. data/lib/datadog/tracing/contrib/active_support/integration.rb +5 -5
  239. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -1
  240. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +1 -1
  241. data/lib/datadog/tracing/contrib/active_support/patcher.rb +2 -2
  242. data/lib/datadog/tracing/contrib/analytics.rb +1 -1
  243. data/lib/datadog/tracing/contrib/auto_instrument.rb +4 -4
  244. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +2 -2
  245. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +3 -4
  246. data/lib/datadog/tracing/contrib/aws/integration.rb +3 -3
  247. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -5
  248. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +2 -2
  249. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  250. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +3 -3
  251. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +2 -2
  252. data/lib/datadog/tracing/contrib/configurable.rb +2 -2
  253. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -1
  254. data/lib/datadog/tracing/contrib/configuration/settings.rb +2 -2
  255. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +2 -2
  256. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +4 -5
  257. data/lib/datadog/tracing/contrib/dalli/integration.rb +3 -3
  258. data/lib/datadog/tracing/contrib/dalli/patcher.rb +3 -3
  259. data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -1
  260. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +3 -3
  261. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +2 -0
  262. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +3 -3
  263. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +8 -2
  264. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +3 -4
  265. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +32 -0
  266. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +2 -2
  267. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +3 -3
  268. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +6 -7
  269. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -1
  270. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +2 -2
  271. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +4 -5
  272. data/lib/datadog/tracing/contrib/ethon/integration.rb +4 -4
  273. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +3 -4
  274. data/lib/datadog/tracing/contrib/ethon/patcher.rb +3 -3
  275. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +2 -2
  276. data/lib/datadog/tracing/contrib/excon/integration.rb +4 -4
  277. data/lib/datadog/tracing/contrib/excon/middleware.rb +6 -7
  278. data/lib/datadog/tracing/contrib/excon/patcher.rb +2 -2
  279. data/lib/datadog/tracing/contrib/extensions.rb +5 -3
  280. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +2 -2
  281. data/lib/datadog/tracing/contrib/faraday/integration.rb +4 -4
  282. data/lib/datadog/tracing/contrib/faraday/middleware.rb +5 -6
  283. data/lib/datadog/tracing/contrib/faraday/patcher.rb +5 -5
  284. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +3 -3
  285. data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -5
  286. data/lib/datadog/tracing/contrib/grape/integration.rb +3 -3
  287. data/lib/datadog/tracing/contrib/grape/patcher.rb +4 -4
  288. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +2 -2
  289. data/lib/datadog/tracing/contrib/graphql/integration.rb +3 -3
  290. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -3
  291. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +4 -3
  292. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +14 -5
  293. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +6 -6
  294. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +7 -4
  295. data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
  296. data/lib/datadog/tracing/contrib/grpc/integration.rb +3 -3
  297. data/lib/datadog/tracing/contrib/grpc/patcher.rb +5 -5
  298. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +1 -2
  299. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +2 -2
  300. data/lib/datadog/tracing/contrib/http/instrumentation.rb +3 -4
  301. data/lib/datadog/tracing/contrib/http/integration.rb +6 -6
  302. data/lib/datadog/tracing/contrib/http/patcher.rb +3 -3
  303. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +2 -2
  304. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +4 -5
  305. data/lib/datadog/tracing/contrib/httpclient/integration.rb +4 -4
  306. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +3 -3
  307. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +2 -2
  308. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +4 -5
  309. data/lib/datadog/tracing/contrib/httprb/integration.rb +4 -4
  310. data/lib/datadog/tracing/contrib/httprb/patcher.rb +3 -3
  311. data/lib/datadog/tracing/contrib/integration.rb +3 -3
  312. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +2 -2
  313. data/lib/datadog/tracing/contrib/kafka/event.rb +3 -3
  314. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +2 -2
  315. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +3 -3
  316. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +3 -3
  317. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +4 -4
  318. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +4 -4
  319. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +4 -4
  320. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +4 -4
  321. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +2 -2
  322. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +2 -2
  323. data/lib/datadog/tracing/contrib/kafka/events.rb +9 -9
  324. data/lib/datadog/tracing/contrib/kafka/integration.rb +3 -3
  325. data/lib/datadog/tracing/contrib/kafka/patcher.rb +3 -3
  326. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +2 -2
  327. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -2
  328. data/lib/datadog/tracing/contrib/lograge/integration.rb +3 -3
  329. data/lib/datadog/tracing/contrib/lograge/patcher.rb +2 -2
  330. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +2 -2
  331. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +3 -3
  332. data/lib/datadog/tracing/contrib/mongodb/integration.rb +4 -4
  333. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  334. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +3 -3
  335. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +4 -4
  336. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +2 -2
  337. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +3 -4
  338. data/lib/datadog/tracing/contrib/mysql2/integration.rb +3 -3
  339. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +2 -2
  340. data/lib/datadog/tracing/contrib/patcher.rb +13 -2
  341. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +35 -0
  342. data/lib/datadog/tracing/contrib/pg/ext.rb +31 -0
  343. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +128 -0
  344. data/lib/datadog/tracing/contrib/pg/integration.rb +43 -0
  345. data/lib/datadog/tracing/contrib/pg/patcher.rb +31 -0
  346. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +2 -2
  347. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +2 -3
  348. data/lib/datadog/tracing/contrib/presto/integration.rb +3 -3
  349. data/lib/datadog/tracing/contrib/presto/patcher.rb +4 -4
  350. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +2 -2
  351. data/lib/datadog/tracing/contrib/qless/integration.rb +3 -3
  352. data/lib/datadog/tracing/contrib/qless/patcher.rb +1 -2
  353. data/lib/datadog/tracing/contrib/qless/qless_job.rb +2 -3
  354. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +0 -2
  355. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +3 -3
  356. data/lib/datadog/tracing/contrib/que/integration.rb +4 -4
  357. data/lib/datadog/tracing/contrib/que/patcher.rb +1 -1
  358. data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
  359. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +2 -2
  360. data/lib/datadog/tracing/contrib/racecar/event.rb +4 -5
  361. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
  362. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +2 -2
  363. data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
  364. data/lib/datadog/tracing/contrib/racecar/events.rb +3 -3
  365. data/lib/datadog/tracing/contrib/racecar/integration.rb +3 -3
  366. data/lib/datadog/tracing/contrib/racecar/patcher.rb +3 -3
  367. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +2 -2
  368. data/lib/datadog/tracing/contrib/rack/integration.rb +4 -4
  369. data/lib/datadog/tracing/contrib/rack/middlewares.rb +24 -20
  370. data/lib/datadog/tracing/contrib/rack/patcher.rb +12 -2
  371. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +1 -1
  372. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +4 -1
  373. data/lib/datadog/tracing/contrib/rails/framework.rb +18 -22
  374. data/lib/datadog/tracing/contrib/rails/integration.rb +4 -4
  375. data/lib/datadog/tracing/contrib/rails/log_injection.rb +0 -2
  376. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -2
  377. data/lib/datadog/tracing/contrib/rails/patcher.rb +7 -8
  378. data/lib/datadog/tracing/contrib/rails/railtie.rb +3 -3
  379. data/lib/datadog/tracing/contrib/rails/utils.rb +1 -1
  380. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +17 -2
  381. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +12 -7
  382. data/lib/datadog/tracing/contrib/rake/integration.rb +3 -3
  383. data/lib/datadog/tracing/contrib/rake/patcher.rb +3 -4
  384. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -1
  385. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +2 -2
  386. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +6 -7
  387. data/lib/datadog/tracing/contrib/redis/integration.rb +3 -3
  388. data/lib/datadog/tracing/contrib/redis/patcher.rb +6 -6
  389. data/lib/datadog/tracing/contrib/redis/tags.rb +3 -4
  390. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +3 -3
  391. data/lib/datadog/tracing/contrib/resque/integration.rb +3 -3
  392. data/lib/datadog/tracing/contrib/resque/patcher.rb +2 -2
  393. data/lib/datadog/tracing/contrib/resque/resque_job.rb +3 -4
  394. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +3 -2
  395. data/lib/datadog/tracing/contrib/rest_client/integration.rb +3 -3
  396. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +2 -2
  397. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -6
  398. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +2 -2
  399. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -2
  400. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +3 -3
  401. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +2 -2
  402. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +2 -2
  403. data/lib/datadog/tracing/contrib/sequel/database.rb +4 -5
  404. data/lib/datadog/tracing/contrib/sequel/dataset.rb +4 -5
  405. data/lib/datadog/tracing/contrib/sequel/integration.rb +3 -3
  406. data/lib/datadog/tracing/contrib/sequel/patcher.rb +3 -3
  407. data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -2
  408. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +3 -3
  409. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +4 -4
  410. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -1
  411. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +1 -1
  412. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +4 -5
  413. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +3 -3
  414. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +6 -0
  415. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +3 -3
  416. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +14 -7
  417. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +19 -1
  418. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/{scheduled_push.rb → redis_info.rb} +5 -6
  419. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +53 -0
  420. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +5 -6
  421. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +2 -2
  422. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +2 -2
  423. data/lib/datadog/tracing/contrib/sinatra/env.rb +2 -2
  424. data/lib/datadog/tracing/contrib/sinatra/framework.rb +0 -2
  425. data/lib/datadog/tracing/contrib/sinatra/headers.rb +1 -1
  426. data/lib/datadog/tracing/contrib/sinatra/integration.rb +3 -3
  427. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +5 -5
  428. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +7 -8
  429. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +6 -7
  430. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +2 -2
  431. data/lib/datadog/tracing/contrib/sneakers/integration.rb +4 -4
  432. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -2
  433. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +2 -3
  434. data/lib/datadog/tracing/contrib/status_code_matcher.rb +2 -2
  435. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +2 -2
  436. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +3 -4
  437. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +3 -3
  438. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +4 -5
  439. data/lib/datadog/tracing/contrib.rb +48 -47
  440. data/lib/datadog/tracing/correlation.rb +1 -1
  441. data/lib/datadog/tracing/distributed/headers/b3.rb +4 -4
  442. data/lib/datadog/tracing/distributed/headers/b3_single.rb +7 -7
  443. data/lib/datadog/tracing/distributed/headers/datadog.rb +3 -3
  444. data/lib/datadog/tracing/distributed/headers/parser.rb +37 -0
  445. data/lib/datadog/tracing/distributed/helpers.rb +36 -2
  446. data/lib/datadog/tracing/distributed/metadata/b3.rb +55 -0
  447. data/lib/datadog/tracing/distributed/metadata/b3_single.rb +66 -0
  448. data/lib/datadog/tracing/distributed/metadata/datadog.rb +73 -0
  449. data/lib/datadog/tracing/distributed/metadata/parser.rb +34 -0
  450. data/lib/datadog/tracing/event.rb +1 -1
  451. data/lib/datadog/tracing/metadata/analytics.rb +2 -2
  452. data/lib/datadog/tracing/metadata/errors.rb +2 -2
  453. data/lib/datadog/tracing/metadata/ext.rb +25 -0
  454. data/lib/datadog/tracing/metadata/tagging.rb +8 -2
  455. data/lib/datadog/tracing/metadata.rb +3 -3
  456. data/lib/datadog/tracing/pipeline/span_filter.rb +10 -6
  457. data/lib/datadog/tracing/pipeline.rb +3 -3
  458. data/lib/datadog/tracing/propagation/grpc.rb +68 -58
  459. data/lib/datadog/tracing/propagation/http.rb +8 -8
  460. data/lib/datadog/tracing/runtime/metrics.rb +1 -1
  461. data/lib/datadog/tracing/sampling/all_sampler.rb +1 -1
  462. data/lib/datadog/tracing/sampling/priority_sampler.rb +5 -5
  463. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +2 -2
  464. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +3 -3
  465. data/lib/datadog/tracing/sampling/rate_limiter.rb +1 -1
  466. data/lib/datadog/tracing/sampling/rate_sampler.rb +7 -7
  467. data/lib/datadog/tracing/sampling/rule.rb +3 -3
  468. data/lib/datadog/tracing/sampling/rule_sampler.rb +4 -4
  469. data/lib/datadog/tracing/sampling/span/matcher.rb +80 -0
  470. data/lib/datadog/tracing/span.rb +25 -5
  471. data/lib/datadog/tracing/span_operation.rb +10 -9
  472. data/lib/datadog/tracing/sync_writer.rb +5 -5
  473. data/lib/datadog/tracing/trace_operation.rb +16 -9
  474. data/lib/datadog/tracing/trace_segment.rb +5 -5
  475. data/lib/datadog/tracing/tracer.rb +15 -15
  476. data/lib/datadog/tracing/workers/trace_writer.rb +9 -9
  477. data/lib/datadog/tracing/workers.rb +3 -3
  478. data/lib/datadog/tracing/writer.rb +5 -5
  479. data/lib/datadog/tracing.rb +8 -8
  480. data/lib/ddtrace/auto_instrument.rb +9 -2
  481. data/lib/ddtrace/transport/ext.rb +7 -1
  482. data/lib/ddtrace/transport/http/adapters/net.rb +3 -2
  483. data/lib/ddtrace/transport/http/adapters/test.rb +1 -1
  484. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -2
  485. data/lib/ddtrace/transport/http/api/map.rb +1 -1
  486. data/lib/ddtrace/transport/http/api.rb +4 -4
  487. data/lib/ddtrace/transport/http/builder.rb +5 -5
  488. data/lib/ddtrace/transport/http/client.rb +2 -2
  489. data/lib/ddtrace/transport/http/response.rb +1 -1
  490. data/lib/ddtrace/transport/http/statistics.rb +1 -1
  491. data/lib/ddtrace/transport/http/traces.rb +5 -5
  492. data/lib/ddtrace/transport/http.rb +12 -9
  493. data/lib/ddtrace/transport/io/client.rb +2 -2
  494. data/lib/ddtrace/transport/io/response.rb +1 -1
  495. data/lib/ddtrace/transport/io/traces.rb +3 -3
  496. data/lib/ddtrace/transport/io.rb +3 -3
  497. data/lib/ddtrace/transport/statistics.rb +2 -2
  498. data/lib/ddtrace/transport/trace_formatter.rb +5 -5
  499. data/lib/ddtrace/transport/traces.rb +5 -5
  500. data/lib/ddtrace/version.rb +1 -1
  501. data/lib/ddtrace.rb +6 -6
  502. metadata +57 -33
  503. data/.editorconfig +0 -22
  504. data/.gitignore +0 -58
  505. data/CONTRIBUTING.md +0 -81
  506. data/ddtrace.gemspec +0 -68
  507. data/docs/0.x-trace.png +0 -0
  508. data/docs/1.0-trace.png +0 -0
  509. data/docs/AutoInstrumentation.md +0 -36
  510. data/docs/Deprecation.md +0 -8
  511. data/docs/DevelopmentGuide.md +0 -259
  512. data/docs/GettingStarted.md +0 -2688
  513. data/docs/ProfilingDevelopment.md +0 -110
  514. data/docs/PublicApi.md +0 -14
  515. data/docs/UpgradeGuide.md +0 -736
  516. data/lib/datadog/profiling/recorder.rb +0 -117
  517. data/lib/datadog/profiling/transport/client.rb +0 -16
  518. data/lib/datadog/profiling/transport/io/client.rb +0 -29
  519. data/lib/datadog/profiling/transport/io/response.rb +0 -18
  520. data/lib/datadog/profiling/transport/io.rb +0 -32
  521. data/lib/datadog/profiling/transport/parcel.rb +0 -19
  522. data/lib/datadog/profiling/transport/request.rb +0 -17
  523. data/lib/datadog/profiling/transport/response.rb +0 -10
  524. data/lib/datadog/tracing/distributed/parser.rb +0 -70
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6517e04d64a4ad46051c9841bf7438809e6379693f5796a26c063e3335788963
4
- data.tar.gz: 646ad1cdabd82d2c94c4d4d5d1e4ab96f6a36890a9f50ea4cbbedac4c123a00e
3
+ metadata.gz: b4e4740121e3fe300ff3f114e1ef7f968e104f46644fb0355fc1f1f3f977e725
4
+ data.tar.gz: 914ba68d4f3be6ad282bfe21e03bbeecd4b6a0c37fd6efb625ae4c9cfe386518
5
5
  SHA512:
6
- metadata.gz: 6d17badd3ed215171d47529092da1ea2a90e0acbdd9071237fc3637052d2b8fb72c422594dfd504a773dc504bcb8862c07d40123fdd97df207d07e07dee5a491
7
- data.tar.gz: 9cbde75b86ba09ccb13161ab106ec24d3b10d93bab1b5996fdec72c14c429b227df3bbc965ab528369ac25e36a5650368b1339e89c17e632605c1e95566bae87
6
+ metadata.gz: 26d08410fc6d1ce577df1eb6dc8df1d49aa04c3581aeae799e74c0fb682ea314e788755b910654a5a8682fbf648e68c38393baeba559470153aff6776bd6bd0c
7
+ data.tar.gz: ad50fc9303b945511e2f886a4bbedf7c5d813889829ddfdf9f904361ec5f36e3a02d331c224933ef7b9a9524dbfb2a889fabbc93511eb7bd099ac38928de3b2a
data/CHANGELOG.md CHANGED
@@ -2,8 +2,91 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [1.4.0] - 2022-08-25
6
+
7
+ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v1.4.0
8
+
9
+ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v1.3.0...v1.4.0
10
+
11
+ ### Added
12
+
13
+ * gRPC: tag `grpc.client.deadline` ([#2200][])
14
+ * Implement telemetry, disable by default ([#2153][])
15
+
16
+ ### Changed
17
+
18
+ * Bump `libdatadog` dependency version ([#2229][])
19
+
20
+ ### Fixed
21
+
22
+ * Fix CI instrumentation configuration ([#2219][])
23
+
24
+ ## [1.3.0] - 2022-08-04
25
+
26
+ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v1.3.0
27
+
28
+ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v1.2.0...v1.3.0
29
+
30
+ ### Added
31
+
32
+ * Top-level span being tagged to avoid duplicate computation ([#2138][])
33
+
34
+ ### Changed
35
+
36
+ * ActiveSupport: Optionally disable tracing with Rails ([@marcotc][])
37
+ * Rack: Resource overwritten by nested application ([#2180][])
38
+ * Rake: Explicit task instrumentation to prevent memory bloat ([#2174][])
39
+ * Sidekiq and DelayedJob: Add spans to improve tracing ([#2170][])
40
+ * Drop Profiling support for Ruby 2.1 ([#2140][])
41
+ * Migrate `libddprof` dependency to `libdatadog` ([#2061][])
42
+
43
+ ### Fixed
44
+
45
+ * Fix OpenTracing propagation with TraceDigest ([#2201][])
46
+ * Fix SpanFilter dropping descendant spans ([#2074][])
47
+ * Redis: Fix Empty pipelined span being dropped ([#757][]) ([@sponomarev][])
48
+ * Fix profiler not restarting on `Process.daemon` ([#2150][])
49
+ * Fix setting service from Rails configuration ([#2118][]) ([@agrobbin][])
50
+ * Some document and development improvement ([@marocchino][]) ([@yukimurasawa][])
51
+
52
+ ## [1.2.0] - 2022-07-11
53
+
54
+ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v1.2.0
55
+
56
+ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v1.1.0...v1.2.0
57
+
58
+ Special thanks go to [@miketheman][] for gifting Datadog access to the `datadog` gem a few days ago.
59
+
60
+ ### Added
61
+
62
+ * Add Postgres (`pg` gem) instrumentation ([#2054][]) ([@jennchenn][])
63
+ * Add env var for debugging profiling native extension compilation issues ([#2069][])
64
+ * Teach Rest Client integration the `:split_by_domain` option ([#2079][]) ([@agrobbin][])
65
+ * Allow passing request_queuing option to Rack through Rails tracer ([#2082][]) ([@KieranP][])
66
+ * Add Utility to Collect Platform Information ([#2097][]) ([@jennchenn][])
67
+ * Add convenient interface for getting and setting tags using `[]` and `[]=` respectively ([#2076][]) ([@ioquatix][])
68
+ * Add b3 metadata in grpc ([#2110][]) ([@henrich-m][])
69
+
70
+ ### Changed
71
+
72
+ * Profiler now reports profiling data using the libddprof gem ([#2059][])
73
+ * Rename `Kernel#at_fork_blocks` monkey patch to `Kernel#ddtrace_at_fork_blocks` ([#2070][])
74
+ * Improved error message for enabling profiling when `pkg-config` system tool is not installed ([#2134][])
75
+
76
+ ### Fixed
77
+
78
+ * Prevent errors in `action_controller` integration when tracing is disabled ([#2027][]) ([@ahorner][])
79
+ * Fix profiler not building on ruby-head (3.2) due to VM refactoring ([#2066][])
80
+ * Span and trace IDs should not be zero ([#2113][]) ([@albertvaka][])
81
+ * Fix object_id usage as thread local key ([#2096][])
82
+ * Fix profiling not working on Heroku and AWS Elastic Beanstalk due to linking issues ([#2125][])
83
+
5
84
  ## [1.1.0] - 2022-05-25
6
85
 
86
+ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v1.1.0
87
+
88
+ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v1.0.0...v1.1.0
89
+
7
90
  ### Added
8
91
 
9
92
  * [Application Security Monitoring](https://docs.datadoghq.com/security_platform/application_security/)
@@ -2318,6 +2401,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
2318
2401
  [#753]: https://github.com/DataDog/dd-trace-rb/issues/753
2319
2402
  [#754]: https://github.com/DataDog/dd-trace-rb/issues/754
2320
2403
  [#756]: https://github.com/DataDog/dd-trace-rb/issues/756
2404
+ [#757]: https://github.com/DataDog/dd-trace-rb/issues/757
2321
2405
  [#760]: https://github.com/DataDog/dd-trace-rb/issues/760
2322
2406
  [#762]: https://github.com/DataDog/dd-trace-rb/issues/762
2323
2407
  [#765]: https://github.com/DataDog/dd-trace-rb/issues/765
@@ -2852,7 +2936,40 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
2852
2936
  [#2010]: https://github.com/DataDog/dd-trace-rb/issues/2010
2853
2937
  [#2011]: https://github.com/DataDog/dd-trace-rb/issues/2011
2854
2938
  [#2022]: https://github.com/DataDog/dd-trace-rb/issues/2022
2939
+ [#2027]: https://github.com/DataDog/dd-trace-rb/issues/2027
2855
2940
  [#2028]: https://github.com/DataDog/dd-trace-rb/issues/2028
2941
+ [#2054]: https://github.com/DataDog/dd-trace-rb/issues/2054
2942
+ [#2059]: https://github.com/DataDog/dd-trace-rb/issues/2059
2943
+ [#2061]: https://github.com/DataDog/dd-trace-rb/issues/2061
2944
+ [#2066]: https://github.com/DataDog/dd-trace-rb/issues/2066
2945
+ [#2069]: https://github.com/DataDog/dd-trace-rb/issues/2069
2946
+ [#2070]: https://github.com/DataDog/dd-trace-rb/issues/2070
2947
+ [#2074]: https://github.com/DataDog/dd-trace-rb/issues/2074
2948
+ [#2076]: https://github.com/DataDog/dd-trace-rb/issues/2076
2949
+ [#2079]: https://github.com/DataDog/dd-trace-rb/issues/2079
2950
+ [#2082]: https://github.com/DataDog/dd-trace-rb/issues/2082
2951
+ [#2096]: https://github.com/DataDog/dd-trace-rb/issues/2096
2952
+ [#2097]: https://github.com/DataDog/dd-trace-rb/issues/2097
2953
+ [#2110]: https://github.com/DataDog/dd-trace-rb/issues/2110
2954
+ [#2113]: https://github.com/DataDog/dd-trace-rb/issues/2113
2955
+ [#2118]: https://github.com/DataDog/dd-trace-rb/issues/2118
2956
+ [#2125]: https://github.com/DataDog/dd-trace-rb/issues/2125
2957
+ [#2134]: https://github.com/DataDog/dd-trace-rb/issues/2134
2958
+ [#2138]: https://github.com/DataDog/dd-trace-rb/issues/2138
2959
+ [#2140]: https://github.com/DataDog/dd-trace-rb/issues/2140
2960
+ [#2150]: https://github.com/DataDog/dd-trace-rb/issues/2150
2961
+ [#2153]: https://github.com/DataDog/dd-trace-rb/issues/2153
2962
+ [#2158]: https://github.com/DataDog/dd-trace-rb/issues/2158
2963
+ [#2162]: https://github.com/DataDog/dd-trace-rb/issues/2162
2964
+ [#2163]: https://github.com/DataDog/dd-trace-rb/issues/2163
2965
+ [#2170]: https://github.com/DataDog/dd-trace-rb/issues/2170
2966
+ [#2173]: https://github.com/DataDog/dd-trace-rb/issues/2173
2967
+ [#2174]: https://github.com/DataDog/dd-trace-rb/issues/2174
2968
+ [#2180]: https://github.com/DataDog/dd-trace-rb/issues/2180
2969
+ [#2200]: https://github.com/DataDog/dd-trace-rb/issues/2200
2970
+ [#2201]: https://github.com/DataDog/dd-trace-rb/issues/2201
2971
+ [#2219]: https://github.com/DataDog/dd-trace-rb/issues/2219
2972
+ [#2229]: https://github.com/DataDog/dd-trace-rb/issues/2229
2856
2973
  [@AdrianLC]: https://github.com/AdrianLC
2857
2974
  [@Azure7111]: https://github.com/Azure7111
2858
2975
  [@BabyGroot]: https://github.com/BabyGroot
@@ -2865,6 +2982,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
2865
2982
  [@Jared-Prime]: https://github.com/Jared-Prime
2866
2983
  [@Joas1988]: https://github.com/Joas1988
2867
2984
  [@JustSnow]: https://github.com/JustSnow
2985
+ [@KieranP]: https://github.com/KieranP
2868
2986
  [@MMartyn]: https://github.com/MMartyn
2869
2987
  [@NobodysNightmare]: https://github.com/NobodysNightmare
2870
2988
  [@Redapted]: https://github.com/Redapted
@@ -2875,7 +2993,9 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
2875
2993
  [@agirlnamedsophia]: https://github.com/agirlnamedsophia
2876
2994
  [@agrobbin]: https://github.com/agrobbin
2877
2995
  [@ahammel]: https://github.com/ahammel
2996
+ [@ahorner]: https://github.com/ahorner
2878
2997
  [@al-kudryavtsev]: https://github.com/al-kudryavtsev
2998
+ [@albertvaka]: https://github.com/albertvaka
2879
2999
  [@alksl]: https://github.com/alksl
2880
3000
  [@alloy]: https://github.com/alloy
2881
3001
  [@aurelian]: https://github.com/aurelian
@@ -2921,11 +3041,14 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
2921
3041
  [@guizmaii]: https://github.com/guizmaii
2922
3042
  [@hatstand]: https://github.com/hatstand
2923
3043
  [@hawknewton]: https://github.com/hawknewton
3044
+ [@henrich-m]: https://github.com/henrich-m
2924
3045
  [@hs-bguven]: https://github.com/hs-bguven
2925
3046
  [@illdelph]: https://github.com/illdelph
3047
+ [@ioquatix]: https://github.com/ioquatix
2926
3048
  [@jamiehodge]: https://github.com/jamiehodge
2927
3049
  [@janz93]: https://github.com/janz93
2928
3050
  [@jeffjo]: https://github.com/jeffjo
3051
+ [@jennchenn]: https://github.com/jennchenn
2929
3052
  [@jfrancoist]: https://github.com/jfrancoist
2930
3053
  [@joeyAghion]: https://github.com/joeyAghion
2931
3054
  [@jpaulgs]: https://github.com/jpaulgs
@@ -2939,12 +3062,15 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
2939
3062
  [@link04]: https://github.com/link04
2940
3063
  [@lloeki]: https://github.com/lloeki
2941
3064
  [@mantrala]: https://github.com/mantrala
3065
+ [@marcotc]: https://github.com/marcotc
3066
+ [@marocchino]: https://github.com/marocchino
2942
3067
  [@masato-hi]: https://github.com/masato-hi
2943
3068
  [@matchbookmac]: https://github.com/matchbookmac
2944
3069
  [@mberlanda]: https://github.com/mberlanda
2945
3070
  [@mdehoog]: https://github.com/mdehoog
2946
3071
  [@mdross95]: https://github.com/mdross95
2947
3072
  [@michaelkl]: https://github.com/michaelkl
3073
+ [@miketheman]: https://github.com/miketheman
2948
3074
  [@mriddle]: https://github.com/mriddle
2949
3075
  [@mscrivo]: https://github.com/mscrivo
2950
3076
  [@mstruve]: https://github.com/mstruve
@@ -2969,6 +3095,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
2969
3095
  [@sinsoku]: https://github.com/sinsoku
2970
3096
  [@skcc321]: https://github.com/skcc321
2971
3097
  [@soulcutter]: https://github.com/soulcutter
3098
+ [@sponomarev]: https://github.com/sponomarev
2972
3099
  [@stefanahman]: https://github.com/stefanahman
2973
3100
  [@steveh]: https://github.com/steveh
2974
3101
  [@stormsilver]: https://github.com/stormsilver
@@ -2983,4 +3110,5 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
2983
3110
  [@vramaiah]: https://github.com/vramaiah
2984
3111
  [@walterking]: https://github.com/walterking
2985
3112
  [@y-yagi]: https://github.com/y-yagi
2986
- [@zachmccormick]: https://github.com/zachmccormick
3113
+ [@yukimurasawa]: https://github.com/yukimurasawa
3114
+ [@zachmccormick]: https://github.com/zachmccormick
data/LICENSE-3rdparty.csv CHANGED
@@ -2,3 +2,5 @@ Component,Origin,License,Copyright
2
2
  lib/datadog/core/vendor/multipart-post,https://github.com/socketry/multipart-post,MIT,"Copyright (c) 2007-2013 Nick Sieger."
3
3
  lib/datadog/tracing/contrib/active_record/vendor,https://github.com/rails/rails/,MIT,"Copyright (c) 2005-2018 David Heinemeier Hansson"
4
4
  ext/ddtrace_profiling_native_extension/private_vm_api_access,https://github.com/ruby/ruby,BSD-2-Clause,"Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved."
5
+ msgpack,https://rubygems.org/gems/msgpack,Apache-2.0,"Copyright (c) 2008-2015 Sadayuki Furuhashi"
6
+ debase-ruby_core_source,https://rubygems.org/gems/debase-ruby_core_source,MIT for gem and BSD-2-Clause for Ruby sources,"Copyright (c) 2012 Gabriel Horner. Files from Ruby sources are Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved."
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
- ***Version 1.0.0 has recently been released. Check out our [upgrade guide](https://github.com/DataDog/dd-trace-rb/blob/master/docs/UpgradeGuide.md#from-0x-to-10) for more details.***
1
+ **We've recently released the 1.x version series. If you're upgrading from a 0.x version, check out our [upgrade guide](https://github.com/DataDog/dd-trace-rb/blob/master/docs/UpgradeGuide.md#from-0x-to-10).**
2
2
 
3
3
  # Datadog Trace Client
4
4
 
5
5
  [![Gem](https://img.shields.io/gem/v/ddtrace)](https://rubygems.org/gems/ddtrace/)
6
6
  [![CircleCI](https://circleci.com/gh/DataDog/dd-trace-rb/tree/master.svg?style=svg&circle-token=b0bd5ef866ec7f7b018f48731bb495f2d1372cc1)](https://circleci.com/gh/DataDog/dd-trace-rb/tree/master)
7
7
  [![codecov](https://codecov.io/gh/DataDog/dd-trace-rb/branch/master/graph/badge.svg)](https://app.codecov.io/gh/DataDog/dd-trace-rb/branch/master)
8
- [![YARD documentation](https://img.shields.io/badge/YARD-documentation-blue)](https://www.rubydoc.info/gems/ddtrace/)
8
+ [![YARD documentation](https://img.shields.io/badge/YARD-documentation-blue)](https://s3.amazonaws.com/gems.datadoghq.com/trace/docs/index.html)
9
9
 
10
10
  ``ddtrace`` is Datadog’s tracing client for Ruby. It is used to trace requests as they flow across web servers,
11
11
  databases and microservices so that developers have great visiblity into bottlenecks and troublesome requests.
@@ -22,7 +22,12 @@ For contributing, checkout the [contribution guidelines][contribution docs] and
22
22
 
23
23
  [setup docs]: https://docs.datadoghq.com/tracing/setup/ruby/
24
24
  [api docs]: https://github.com/DataDog/dd-trace-rb/blob/master/docs/GettingStarted.md
25
- [gem docs]: http://gems.datadoghq.com/trace/docs/
25
+ [gem docs]: https://s3.amazonaws.com/gems.datadoghq.com/trace/docs/index.html
26
26
  [visualization docs]: https://docs.datadoghq.com/tracing/visualization/
27
27
  [contribution docs]: https://github.com/DataDog/dd-trace-rb/blob/master/CONTRIBUTING.md
28
28
  [development docs]: https://github.com/DataDog/dd-trace-rb/blob/master/docs/DevelopmentGuide.md
29
+
30
+ ## Special thanks
31
+
32
+ * [Mike Fiedler](https://github.com/miketheman) for working on a number of Datadog Ruby projects, as well as graciously
33
+ gifting control of the `datadog` gem
@@ -20,7 +20,7 @@
20
20
  // This idea was shamelessly stolen from @lloeki's work in https://github.com/rubyjs/mini_racer/pull/179, big thanks!
21
21
  //
22
22
  // Extra note: Currently (May 2022), that we know of, the profiling native extension only exposes one potentially
23
- // problematic symbol: `rust_eh_personality` (coming from libddprof/libdatadog).
23
+ // problematic symbol: `rust_eh_personality` (coming from libdatadog).
24
24
  // Future versions of Rust have been patched not to expose this
25
25
  // (see https://github.com/rust-lang/rust/pull/95604#issuecomment-1108563434) so we may want to revisit the need
26
26
  // for this loader in the future, and perhaps delete it if we no longer require its services :)
@@ -41,7 +41,7 @@ static void unload_failed_library(void *handle);
41
41
 
42
42
  #define DDTRACE_EXPORT __attribute__ ((visibility ("default")))
43
43
 
44
- void DDTRACE_EXPORT Init_ddtrace_profiling_loader() {
44
+ void DDTRACE_EXPORT Init_ddtrace_profiling_loader(void) {
45
45
  VALUE datadog_module = rb_define_module("Datadog");
46
46
  VALUE profiling_module = rb_define_module_under(datadog_module, "Profiling");
47
47
  VALUE loader_module = rb_define_module_under(profiling_module, "Loader");
@@ -1,4 +1,5 @@
1
1
  # typed: ignore
2
+
2
3
  # rubocop:disable Style/StderrPuts
3
4
  # rubocop:disable Style/GlobalVars
4
5
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  The profiling native extension is used to:
4
4
  1. Implement features which are expensive (in terms of resources) or otherwise impossible to implement using Ruby code.
5
- 2. Bridge between Ruby-specific profiling features and [`libddprof`](https://github.com/DataDog/libddprof), a Rust-based
5
+ 2. Bridge between Ruby-specific profiling features and [`libdatadog`](https://github.com/DataDog/libdatadog), a Rust-based
6
6
  library with common profiling functionality.
7
7
 
8
8
  Due to (1), this extension is quite coupled with MRI Ruby ("C Ruby") internals, and is not intended to support other rubies such as
@@ -10,13 +10,18 @@ JRuby or TruffleRuby. When below we say "Ruby", read it as "MRI Ruby".
10
10
 
11
11
  ## Disabling
12
12
 
13
- The profiling native extension can be disabled by setting `DD_PROFILING_NO_EXTENSION=true` when installing or running
13
+ The profiling native extension can be disabled by setting `DD_PROFILING_NO_EXTENSION=true` when installing
14
14
  the gem. Setting `DD_PROFILING_NO_EXTENSION` at installation time skips compilation of the extension entirely.
15
15
 
16
16
  (If you're a customer and needed to use this, please tell us why on <https://github.com/DataDog/dd-trace-rb/issues/new>.)
17
17
 
18
- Currently the profiler can still "limp along" when the native extension is disabled, but the plan is to require it
19
- in future releases -- e.g. disabling the extension will disable profiling entirely.
18
+ In past releases, it was possible for the profiler to run without the native extension, but that's no longer the case,
19
+ and disabling the extension will disable profiling.
20
+
21
+ ## Who is this page for?
22
+
23
+ This documentation is intended to be used by dd-trace-rb developers. Please see the `docs/` folder for user-level
24
+ documentation.
20
25
 
21
26
  ## Must not block or break users that cannot use it
22
27
 
@@ -44,13 +49,15 @@ We avoid issues using a combination of:
44
49
  * Avoiding calling Ruby VM APIs after doing dynamic allocations
45
50
  * Wrapping dynamic allocations into Ruby GC-managed objects (using `TypedData_Wrap_Struct`), so that Ruby will manage
46
51
  their lifetime and call `free` when the GC-managed object is no longer being referenced
52
+ * Using [`rb_protect` and similar APIs](https://silverhammermba.github.io/emberb/c/?#rescue) to run cleanup code on
53
+ exception cases
47
54
 
48
55
  Non-exhaustive list of APIs that cause exceptions to be raised:
49
56
 
50
- * `Check_TypedStruct`, `Check_Type`
57
+ * `Check_TypedStruct`, `Check_Type`, `ENFORCE_TYPE`
51
58
  * `rb_funcall`
52
59
  * `rb_thread_call_without_gvl`, `rb_thread_call_without_gvl2`
53
- * [Numeric conversion APIs, e.g. `NUM2LONG`, `NUM2INT`, etc.](https://silverhammermba.github.io/emberb/c/?utm_source=pocket_mylist#translation)
60
+ * [Numeric conversion APIs, e.g. `NUM2LONG`, `NUM2INT`, etc.](https://silverhammermba.github.io/emberb/c/?#translation)
54
61
  * Our `char_slice_from_ruby_string` helper
55
62
 
56
63
  ## Usage of private VM headers
@@ -65,6 +72,8 @@ Because these private header files are not included in regular Ruby installation
65
72
 
66
73
  Functions which make use of these headers are defined in the <private_vm_api_acccess.c> file.
67
74
 
75
+ There is currently no way for disabling usage of the private MJIT header for Ruby 2.6+.
76
+
68
77
  **Important Note**: Our medium/long-term plan is to stop relying on all private Ruby headers, and instead request and
69
78
  contribute upstream changes so that they become official public VM APIs.
70
79
 
@@ -90,7 +99,6 @@ Thus, even though a regular Ruby installation does not include these files, we c
90
99
  ## Feature: Getting thread CPU-time clock_ids
91
100
 
92
101
  * **OS support**: Linux
93
- * **Ruby support**: 2.6+
94
102
 
95
103
  To enable CPU-time profiling, we use the `pthread_getcpuclockid(pthread_t thread, clockid_t *clockid)` C function to
96
104
  obtain a `clockid_t` that can then be used with the `Process.clock_gettime` method (or directly with the
@@ -1,4 +1,24 @@
1
1
  #pragma once
2
2
 
3
- void self_test_clock_id();
3
+ #include <stdbool.h>
4
+ #include <time.h>
5
+
6
+ // Contains the operating-system specific identifier needed to fetch CPU-time, and a flag to indicate if we failed to fetch it
7
+ typedef struct thread_cpu_time_id {
8
+ bool valid;
9
+ clockid_t clock_id;
10
+ } thread_cpu_time_id;
11
+
12
+ // Contains the current cpu time, and a flag to indicate if we failed to fetch it
13
+ typedef struct thread_cpu_time {
14
+ bool valid;
15
+ long result_ns;
16
+ } thread_cpu_time;
17
+
18
+ void self_test_clock_id(void);
19
+
20
+ // TODO: Remove this after the OldStack profiler gets removed
4
21
  VALUE clock_id_for(VALUE self, VALUE thread);
22
+
23
+ thread_cpu_time_id thread_cpu_time_id_for(VALUE thread);
24
+ thread_cpu_time thread_cpu_time_for(thread_cpu_time_id time_id);
@@ -9,18 +9,20 @@
9
9
  #include <errno.h>
10
10
 
11
11
  #include <ruby.h>
12
+ #include "helpers.h"
12
13
  #include "private_vm_api_access.h"
13
14
  #include "clock_id.h"
14
15
 
15
16
  // Validate that our home-cooked pthread_id_for() matches pthread_self() for the current thread
16
- void self_test_clock_id() {
17
+ void self_test_clock_id(void) {
17
18
  rb_nativethread_id_t expected_pthread_id = pthread_self();
18
19
  rb_nativethread_id_t actual_pthread_id = pthread_id_for(rb_thread_current());
19
20
 
20
21
  if (expected_pthread_id != actual_pthread_id) rb_raise(rb_eRuntimeError, "pthread_id_for() self-test failed");
21
22
  }
22
23
 
23
- VALUE clock_id_for(VALUE self, VALUE thread) {
24
+ // TODO: Remove this after the OldStack profiler gets removed
25
+ VALUE clock_id_for(DDTRACE_UNUSED VALUE _self, VALUE thread) {
24
26
  rb_nativethread_id_t thread_id = pthread_id_for(thread);
25
27
 
26
28
  clockid_t clock_id;
@@ -41,4 +43,31 @@ VALUE clock_id_for(VALUE self, VALUE thread) {
41
43
  }
42
44
  }
43
45
 
46
+ thread_cpu_time_id thread_cpu_time_id_for(VALUE thread) {
47
+ rb_nativethread_id_t thread_id = pthread_id_for(thread);
48
+ clockid_t clock_id;
49
+
50
+ int error = pthread_getcpuclockid(thread_id, &clock_id);
51
+
52
+ if (error == 0) {
53
+ return (thread_cpu_time_id) {.valid = true, .clock_id = clock_id};
54
+ } else {
55
+ // TODO: Include the error code in some way in the output?
56
+ return (thread_cpu_time_id) {.valid = false};
57
+ }
58
+ }
59
+
60
+ thread_cpu_time thread_cpu_time_for(thread_cpu_time_id time_id) {
61
+ thread_cpu_time error = (thread_cpu_time) {.valid = false};
62
+
63
+ if (!time_id.valid) { return error; }
64
+
65
+ struct timespec current_cpu;
66
+
67
+ // TODO: Include the error code in some way in the output?
68
+ if (clock_gettime(time_id.clock_id, &current_cpu) != 0) return error;
69
+
70
+ return (thread_cpu_time) {.valid = true, .result_ns = current_cpu.tv_nsec + (current_cpu.tv_sec * 1000 * 1000 * 1000)};
71
+ }
72
+
44
73
  #endif
@@ -7,8 +7,17 @@
7
7
  #include <ruby.h>
8
8
 
9
9
  #include "clock_id.h"
10
+ #include "helpers.h"
10
11
 
11
- void self_test_clock_id() { } // Nothing to check
12
- VALUE clock_id_for(VALUE self, VALUE thread) { return Qnil; } // Nothing to return
12
+ void self_test_clock_id(void) { } // Nothing to check
13
+ VALUE clock_id_for(DDTRACE_UNUSED VALUE _self, DDTRACE_UNUSED VALUE _thread) { return Qnil; } // Nothing to return
14
+
15
+ thread_cpu_time_id thread_cpu_time_id_for(DDTRACE_UNUSED VALUE _thread) {
16
+ return (thread_cpu_time_id) {.valid = false};
17
+ }
18
+
19
+ thread_cpu_time thread_cpu_time_for(DDTRACE_UNUSED thread_cpu_time_id _time_id) {
20
+ return (thread_cpu_time) {.valid = false};
21
+ }
13
22
 
14
23
  #endif