ddtrace 1.12.1 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +388 -10
  3. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +3 -5
  4. data/ext/ddtrace_profiling_native_extension/clock_id.h +0 -3
  5. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +3 -22
  6. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +0 -1
  7. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +41 -6
  8. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +3 -0
  9. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +76 -24
  10. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +1 -1
  11. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +292 -27
  12. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +1 -1
  13. data/ext/ddtrace_profiling_native_extension/extconf.rb +40 -10
  14. data/ext/ddtrace_profiling_native_extension/http_transport.c +48 -16
  15. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.c +42 -0
  16. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +6 -0
  17. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +1 -1
  18. data/ext/ddtrace_profiling_native_extension/pid_controller.c +57 -0
  19. data/ext/ddtrace_profiling_native_extension/pid_controller.h +45 -0
  20. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +136 -32
  21. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +12 -0
  22. data/ext/ddtrace_profiling_native_extension/profiling.c +1 -2
  23. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +81 -50
  24. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +13 -3
  25. data/ext/ddtrace_profiling_native_extension/time_helpers.c +40 -4
  26. data/ext/ddtrace_profiling_native_extension/time_helpers.h +14 -0
  27. data/lib/datadog/appsec/assets/waf_rules/processors.json +92 -0
  28. data/lib/datadog/appsec/assets/waf_rules/recommended.json +698 -75
  29. data/lib/datadog/appsec/assets/waf_rules/scanners.json +114 -0
  30. data/lib/datadog/appsec/assets/waf_rules/strict.json +98 -8
  31. data/lib/datadog/appsec/assets.rb +8 -0
  32. data/lib/datadog/appsec/component.rb +21 -2
  33. data/lib/datadog/appsec/configuration/settings.rb +167 -189
  34. data/lib/datadog/appsec/configuration.rb +0 -79
  35. data/lib/datadog/appsec/contrib/auto_instrument.rb +2 -4
  36. data/lib/datadog/appsec/contrib/devise/event.rb +57 -0
  37. data/lib/datadog/appsec/contrib/devise/ext.rb +13 -0
  38. data/lib/datadog/appsec/contrib/devise/integration.rb +42 -0
  39. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +76 -0
  40. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +54 -0
  41. data/lib/datadog/appsec/contrib/devise/patcher.rb +45 -0
  42. data/lib/datadog/appsec/contrib/devise/resource.rb +35 -0
  43. data/lib/datadog/appsec/contrib/devise/tracking.rb +49 -0
  44. data/lib/datadog/appsec/contrib/rack/ext.rb +2 -1
  45. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +6 -2
  46. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +8 -6
  47. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +3 -8
  48. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +3 -6
  49. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +3 -6
  50. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +3 -2
  51. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +36 -17
  52. data/lib/datadog/appsec/contrib/rails/ext.rb +3 -2
  53. data/lib/datadog/appsec/contrib/rails/framework.rb +1 -3
  54. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +3 -2
  55. data/lib/datadog/appsec/contrib/rails/patcher.rb +17 -11
  56. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +3 -6
  57. data/lib/datadog/appsec/contrib/sinatra/ext.rb +2 -1
  58. data/lib/datadog/appsec/contrib/sinatra/framework.rb +1 -3
  59. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +6 -4
  60. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +13 -7
  61. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +3 -6
  62. data/lib/datadog/appsec/event.rb +106 -50
  63. data/lib/datadog/appsec/extensions.rb +1 -130
  64. data/lib/datadog/appsec/monitor/gateway/watcher.rb +3 -3
  65. data/lib/datadog/appsec/monitor/reactive/set_user.rb +3 -6
  66. data/lib/datadog/appsec/processor/actions.rb +49 -0
  67. data/lib/datadog/appsec/processor/rule_loader.rb +60 -0
  68. data/lib/datadog/appsec/processor/rule_merger.rb +22 -2
  69. data/lib/datadog/appsec/processor.rb +35 -7
  70. data/lib/datadog/appsec/rate_limiter.rb +1 -1
  71. data/lib/datadog/appsec/remote.rb +17 -11
  72. data/lib/datadog/appsec/response.rb +82 -4
  73. data/lib/datadog/appsec/sample_rate.rb +21 -0
  74. data/lib/datadog/appsec.rb +3 -4
  75. data/lib/datadog/core/backport.rb +51 -0
  76. data/lib/datadog/core/configuration/agent_settings_resolver.rb +38 -29
  77. data/lib/datadog/core/configuration/base.rb +6 -16
  78. data/lib/datadog/core/configuration/components.rb +15 -3
  79. data/lib/datadog/core/configuration/ext.rb +28 -5
  80. data/lib/datadog/core/configuration/option.rb +269 -21
  81. data/lib/datadog/core/configuration/option_definition.rb +73 -32
  82. data/lib/datadog/core/configuration/options.rb +27 -15
  83. data/lib/datadog/core/configuration/settings.rb +182 -102
  84. data/lib/datadog/core/configuration.rb +4 -0
  85. data/lib/datadog/core/diagnostics/environment_logger.rb +130 -234
  86. data/lib/datadog/core/environment/execution.rb +103 -0
  87. data/lib/datadog/core/environment/ext.rb +13 -11
  88. data/lib/datadog/core/environment/variable_helpers.rb +0 -69
  89. data/lib/datadog/core/environment/yjit.rb +58 -0
  90. data/lib/datadog/core/error.rb +1 -0
  91. data/lib/datadog/core/git/ext.rb +26 -22
  92. data/lib/datadog/core/logging/ext.rb +3 -1
  93. data/lib/datadog/core/metrics/ext.rb +7 -5
  94. data/lib/datadog/core/remote/client/capabilities.rb +6 -1
  95. data/lib/datadog/core/remote/client.rb +3 -0
  96. data/lib/datadog/core/remote/component.rb +27 -36
  97. data/lib/datadog/core/remote/configuration/content.rb +28 -1
  98. data/lib/datadog/core/remote/configuration/repository.rb +3 -1
  99. data/lib/datadog/core/remote/ext.rb +1 -1
  100. data/lib/datadog/core/remote/negotiation.rb +19 -6
  101. data/lib/datadog/core/remote/transport/config.rb +60 -0
  102. data/lib/datadog/core/remote/transport/http/api/instance.rb +39 -0
  103. data/lib/datadog/core/remote/transport/http/api/spec.rb +21 -0
  104. data/lib/datadog/core/remote/transport/http/api.rb +58 -0
  105. data/lib/datadog/core/remote/transport/http/builder.rb +219 -0
  106. data/lib/datadog/core/remote/transport/http/client.rb +48 -0
  107. data/lib/datadog/core/remote/transport/http/config.rb +280 -0
  108. data/lib/datadog/core/remote/transport/http/negotiation.rb +146 -0
  109. data/lib/datadog/core/remote/transport/http.rb +179 -0
  110. data/lib/datadog/core/{transport → remote/transport}/negotiation.rb +25 -23
  111. data/lib/datadog/core/remote/worker.rb +4 -1
  112. data/lib/datadog/core/runtime/ext.rb +22 -12
  113. data/lib/datadog/core/runtime/metrics.rb +43 -0
  114. data/lib/datadog/core/telemetry/client.rb +12 -2
  115. data/lib/datadog/core/telemetry/collector.rb +13 -4
  116. data/lib/datadog/core/telemetry/emitter.rb +4 -2
  117. data/lib/datadog/core/telemetry/event.rb +19 -4
  118. data/lib/datadog/core/telemetry/ext.rb +4 -1
  119. data/lib/datadog/core/telemetry/heartbeat.rb +2 -4
  120. data/lib/datadog/core/telemetry/http/ext.rb +10 -8
  121. data/lib/datadog/core/telemetry/http/transport.rb +2 -0
  122. data/lib/datadog/core/telemetry/v2/app_client_configuration_change.rb +41 -0
  123. data/lib/datadog/core/telemetry/v2/request.rb +29 -0
  124. data/lib/datadog/core/transport/ext.rb +47 -0
  125. data/lib/datadog/core/transport/http/adapters/net.rb +168 -0
  126. data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
  127. data/lib/datadog/core/transport/http/adapters/test.rb +89 -0
  128. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
  129. data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
  130. data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
  131. data/lib/datadog/core/transport/http/api/map.rb +18 -0
  132. data/lib/datadog/core/transport/http/env.rb +62 -0
  133. data/lib/datadog/core/transport/http/response.rb +60 -0
  134. data/lib/datadog/core/transport/parcel.rb +22 -0
  135. data/lib/datadog/core/transport/request.rb +17 -0
  136. data/lib/datadog/core/transport/response.rb +64 -0
  137. data/lib/datadog/core/utils/duration.rb +52 -0
  138. data/lib/datadog/core/utils/hash.rb +47 -0
  139. data/lib/datadog/core/utils/network.rb +1 -1
  140. data/lib/datadog/core/utils/safe_dup.rb +27 -20
  141. data/lib/datadog/core/utils.rb +1 -1
  142. data/lib/datadog/core/workers/async.rb +3 -2
  143. data/lib/datadog/core/workers/polling.rb +2 -2
  144. data/lib/datadog/kit/appsec/events.rb +139 -89
  145. data/lib/datadog/kit/enable_core_dumps.rb +5 -6
  146. data/lib/datadog/kit/identity.rb +80 -65
  147. data/lib/datadog/opentelemetry/api/context.rb +10 -3
  148. data/lib/datadog/opentelemetry/sdk/propagator.rb +2 -1
  149. data/lib/datadog/opentelemetry/sdk/span_processor.rb +48 -5
  150. data/lib/datadog/opentelemetry/sdk/trace/span.rb +167 -0
  151. data/lib/datadog/opentelemetry/trace.rb +58 -0
  152. data/lib/datadog/opentelemetry.rb +1 -0
  153. data/lib/datadog/opentracer/text_map_propagator.rb +2 -1
  154. data/lib/datadog/opentracer.rb +9 -0
  155. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +16 -17
  156. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +3 -1
  157. data/lib/datadog/profiling/collectors/thread_context.rb +17 -2
  158. data/lib/datadog/profiling/component.rb +69 -94
  159. data/lib/datadog/profiling/diagnostics/environment_logger.rb +39 -0
  160. data/lib/datadog/profiling/exporter.rb +5 -1
  161. data/lib/datadog/profiling/ext.rb +0 -12
  162. data/lib/datadog/profiling/flush.rb +7 -5
  163. data/lib/datadog/profiling/http_transport.rb +19 -6
  164. data/lib/datadog/profiling/load_native_extension.rb +7 -1
  165. data/lib/datadog/profiling/native_extension.rb +0 -21
  166. data/lib/datadog/profiling/profiler.rb +36 -13
  167. data/lib/datadog/profiling/scheduler.rb +16 -9
  168. data/lib/datadog/profiling.rb +16 -78
  169. data/lib/datadog/tracing/component.rb +70 -11
  170. data/lib/datadog/tracing/configuration/agent_settings_resolver.rb +13 -0
  171. data/lib/datadog/tracing/configuration/dynamic/option.rb +71 -0
  172. data/lib/datadog/tracing/configuration/dynamic.rb +64 -0
  173. data/lib/datadog/tracing/configuration/ext.rb +40 -32
  174. data/lib/datadog/tracing/configuration/http.rb +74 -0
  175. data/lib/datadog/tracing/configuration/settings.rb +134 -98
  176. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +9 -6
  177. data/lib/datadog/tracing/contrib/action_cable/ext.rb +20 -18
  178. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +9 -6
  179. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +20 -18
  180. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +9 -7
  181. data/lib/datadog/tracing/contrib/action_pack/ext.rb +10 -8
  182. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +9 -6
  183. data/lib/datadog/tracing/contrib/action_view/ext.rb +12 -10
  184. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +13 -7
  185. data/lib/datadog/tracing/contrib/active_job/ext.rb +25 -23
  186. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +1 -1
  187. data/lib/datadog/tracing/contrib/active_job/patcher.rb +1 -1
  188. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +9 -6
  189. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +12 -10
  190. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +18 -11
  191. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +9 -7
  192. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +2 -6
  193. data/lib/datadog/tracing/contrib/active_record/ext.rb +17 -15
  194. data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -1
  195. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +106 -202
  196. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +3 -0
  197. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +9 -7
  198. data/lib/datadog/tracing/contrib/active_support/ext.rb +18 -16
  199. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +14 -7
  200. data/lib/datadog/tracing/contrib/aws/ext.rb +37 -24
  201. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +16 -5
  202. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +3 -2
  203. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +14 -14
  204. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +4 -2
  205. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +3 -10
  206. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +2 -1
  207. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +8 -1
  208. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
  209. data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -1
  210. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +20 -7
  211. data/lib/datadog/tracing/contrib/dalli/ext.rb +26 -11
  212. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +17 -8
  213. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +13 -7
  214. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +16 -14
  215. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +14 -7
  216. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +21 -15
  217. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +104 -99
  218. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +16 -9
  219. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +48 -3
  220. data/lib/datadog/tracing/contrib/ethon/ext.rb +19 -11
  221. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +6 -3
  222. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +19 -10
  223. data/lib/datadog/tracing/contrib/excon/ext.rb +16 -8
  224. data/lib/datadog/tracing/contrib/excon/middleware.rb +25 -5
  225. data/lib/datadog/tracing/contrib/ext.rb +26 -1
  226. data/lib/datadog/tracing/contrib/extensions.rb +32 -0
  227. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +20 -10
  228. data/lib/datadog/tracing/contrib/faraday/ext.rb +16 -8
  229. data/lib/datadog/tracing/contrib/faraday/middleware.rb +21 -5
  230. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +8 -6
  231. data/lib/datadog/tracing/contrib/grape/ext.rb +16 -14
  232. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +8 -6
  233. data/lib/datadog/tracing/contrib/graphql/ext.rb +7 -5
  234. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +39 -9
  235. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +39 -20
  236. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +37 -18
  237. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +0 -4
  238. data/lib/datadog/tracing/contrib/grpc/ext.rb +16 -13
  239. data/lib/datadog/tracing/contrib/grpc/formatting.rb +127 -0
  240. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +3 -2
  241. data/lib/datadog/tracing/contrib/hanami/ext.rb +10 -8
  242. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +5 -8
  243. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +33 -11
  244. data/lib/datadog/tracing/contrib/http/ext.rb +16 -9
  245. data/lib/datadog/tracing/contrib/http/instrumentation.rb +27 -7
  246. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +33 -11
  247. data/lib/datadog/tracing/contrib/httpclient/ext.rb +17 -9
  248. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +22 -5
  249. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +33 -11
  250. data/lib/datadog/tracing/contrib/httprb/ext.rb +16 -9
  251. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +22 -5
  252. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +9 -6
  253. data/lib/datadog/tracing/contrib/kafka/ext.rb +42 -39
  254. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +3 -2
  255. data/lib/datadog/tracing/contrib/lograge/ext.rb +3 -1
  256. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +2 -17
  257. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +14 -7
  258. data/lib/datadog/tracing/contrib/mongodb/ext.rb +20 -16
  259. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +16 -5
  260. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +17 -14
  261. data/lib/datadog/tracing/contrib/mysql2/ext.rb +15 -10
  262. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +20 -6
  263. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +52 -0
  264. data/lib/datadog/tracing/contrib/opensearch/ext.rb +37 -0
  265. data/lib/datadog/tracing/contrib/opensearch/integration.rb +44 -0
  266. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +135 -0
  267. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +81 -0
  268. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +22 -14
  269. data/lib/datadog/tracing/contrib/pg/ext.rb +22 -19
  270. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +38 -5
  271. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +14 -7
  272. data/lib/datadog/tracing/contrib/presto/ext.rb +25 -20
  273. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +14 -5
  274. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +12 -10
  275. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  276. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +12 -8
  277. data/lib/datadog/tracing/contrib/qless/ext.rb +14 -12
  278. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +21 -12
  279. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +9 -7
  280. data/lib/datadog/tracing/contrib/racecar/event.rb +5 -5
  281. data/lib/datadog/tracing/contrib/racecar/ext.rb +20 -18
  282. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +16 -12
  283. data/lib/datadog/tracing/contrib/rack/ext.rb +18 -16
  284. data/lib/datadog/tracing/contrib/rack/header_collection.rb +3 -0
  285. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +63 -0
  286. data/lib/datadog/tracing/contrib/rack/middlewares.rb +8 -49
  287. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +19 -15
  288. data/lib/datadog/tracing/contrib/rails/ext.rb +7 -5
  289. data/lib/datadog/tracing/contrib/rails/log_injection.rb +7 -10
  290. data/lib/datadog/tracing/contrib/rails/patcher.rb +10 -41
  291. data/lib/datadog/tracing/contrib/rails/railtie.rb +3 -3
  292. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +13 -10
  293. data/lib/datadog/tracing/contrib/rake/ext.rb +14 -12
  294. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +17 -9
  295. data/lib/datadog/tracing/contrib/redis/ext.rb +22 -15
  296. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +3 -38
  297. data/lib/datadog/tracing/contrib/redis/tags.rb +16 -7
  298. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +46 -33
  299. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +13 -7
  300. data/lib/datadog/tracing/contrib/resque/ext.rb +9 -7
  301. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +16 -9
  302. data/lib/datadog/tracing/contrib/rest_client/ext.rb +15 -8
  303. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +25 -5
  304. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +9 -6
  305. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +3 -2
  306. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +3 -1
  307. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +4 -20
  308. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +9 -6
  309. data/lib/datadog/tracing/contrib/sequel/ext.rb +10 -8
  310. data/lib/datadog/tracing/contrib/sequel/utils.rb +7 -7
  311. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +14 -8
  312. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +14 -12
  313. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +18 -11
  314. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +32 -30
  315. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +11 -9
  316. data/lib/datadog/tracing/contrib/sinatra/env.rb +0 -17
  317. data/lib/datadog/tracing/contrib/sinatra/ext.rb +21 -19
  318. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +3 -14
  319. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +14 -8
  320. data/lib/datadog/tracing/contrib/sneakers/ext.rb +1 -0
  321. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +1 -1
  322. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +74 -10
  323. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +9 -6
  324. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +9 -6
  325. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +15 -13
  326. data/lib/datadog/tracing/contrib/utils/database.rb +5 -3
  327. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +11 -11
  328. data/lib/datadog/tracing/contrib.rb +1 -0
  329. data/lib/datadog/tracing/correlation.rb +29 -12
  330. data/lib/datadog/tracing/diagnostics/environment_logger.rb +165 -0
  331. data/lib/datadog/tracing/diagnostics/ext.rb +21 -19
  332. data/lib/datadog/tracing/distributed/b3_multi.rb +2 -2
  333. data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
  334. data/lib/datadog/tracing/distributed/datadog.rb +0 -1
  335. data/lib/datadog/tracing/distributed/propagation.rb +35 -34
  336. data/lib/datadog/tracing/distributed/trace_context.rb +52 -17
  337. data/lib/datadog/tracing/metadata/ext.rb +9 -6
  338. data/lib/datadog/tracing/metadata/tagging.rb +3 -3
  339. data/lib/datadog/tracing/remote.rb +78 -0
  340. data/lib/datadog/tracing/sampling/rule_sampler.rb +29 -0
  341. data/lib/datadog/tracing/span_operation.rb +3 -15
  342. data/lib/datadog/tracing/sync_writer.rb +3 -3
  343. data/lib/datadog/tracing/trace_digest.rb +31 -0
  344. data/lib/datadog/tracing/trace_operation.rb +16 -3
  345. data/lib/datadog/tracing/trace_segment.rb +5 -2
  346. data/lib/datadog/tracing/tracer.rb +12 -1
  347. data/lib/datadog/{core → tracing}/transport/http/api/instance.rb +1 -1
  348. data/lib/datadog/{core → tracing}/transport/http/api/spec.rb +1 -1
  349. data/lib/datadog/tracing/transport/http/api.rb +43 -0
  350. data/lib/datadog/{core → tracing}/transport/http/builder.rb +13 -68
  351. data/lib/datadog/tracing/transport/http/client.rb +57 -0
  352. data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
  353. data/lib/datadog/tracing/transport/http/traces.rb +152 -0
  354. data/lib/datadog/tracing/transport/http.rb +124 -0
  355. data/lib/datadog/tracing/transport/io/client.rb +89 -0
  356. data/lib/datadog/tracing/transport/io/response.rb +27 -0
  357. data/lib/datadog/tracing/transport/io/traces.rb +101 -0
  358. data/lib/datadog/tracing/transport/io.rb +30 -0
  359. data/lib/datadog/tracing/transport/serializable_trace.rb +126 -0
  360. data/lib/datadog/tracing/transport/statistics.rb +77 -0
  361. data/lib/datadog/tracing/transport/trace_formatter.rb +209 -0
  362. data/lib/datadog/tracing/transport/traces.rb +224 -0
  363. data/lib/datadog/tracing/workers/trace_writer.rb +6 -4
  364. data/lib/datadog/tracing/workers.rb +4 -2
  365. data/lib/datadog/tracing/writer.rb +5 -2
  366. data/lib/ddtrace/transport/ext.rb +22 -14
  367. data/lib/ddtrace/version.rb +9 -12
  368. data/lib/ddtrace.rb +1 -1
  369. metadata +101 -93
  370. data/lib/datadog/ci/configuration/components.rb +0 -32
  371. data/lib/datadog/ci/configuration/settings.rb +0 -53
  372. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +0 -33
  373. data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -20
  374. data/lib/datadog/ci/contrib/cucumber/formatter.rb +0 -94
  375. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +0 -28
  376. data/lib/datadog/ci/contrib/cucumber/integration.rb +0 -47
  377. data/lib/datadog/ci/contrib/cucumber/patcher.rb +0 -27
  378. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +0 -33
  379. data/lib/datadog/ci/contrib/rspec/example.rb +0 -68
  380. data/lib/datadog/ci/contrib/rspec/ext.rb +0 -19
  381. data/lib/datadog/ci/contrib/rspec/integration.rb +0 -48
  382. data/lib/datadog/ci/contrib/rspec/patcher.rb +0 -27
  383. data/lib/datadog/ci/ext/app_types.rb +0 -9
  384. data/lib/datadog/ci/ext/environment.rb +0 -575
  385. data/lib/datadog/ci/ext/settings.rb +0 -10
  386. data/lib/datadog/ci/ext/test.rb +0 -35
  387. data/lib/datadog/ci/extensions.rb +0 -19
  388. data/lib/datadog/ci/flush.rb +0 -38
  389. data/lib/datadog/ci/test.rb +0 -81
  390. data/lib/datadog/ci.rb +0 -20
  391. data/lib/datadog/core/configuration/dependency_resolver.rb +0 -28
  392. data/lib/datadog/core/configuration/option_definition_set.rb +0 -22
  393. data/lib/datadog/core/configuration/option_set.rb +0 -10
  394. data/lib/datadog/core/transport/config.rb +0 -58
  395. data/lib/datadog/core/transport/http/api.rb +0 -57
  396. data/lib/datadog/core/transport/http/client.rb +0 -45
  397. data/lib/datadog/core/transport/http/config.rb +0 -268
  398. data/lib/datadog/core/transport/http/negotiation.rb +0 -144
  399. data/lib/datadog/core/transport/http.rb +0 -169
  400. data/lib/datadog/core/utils/object_set.rb +0 -43
  401. data/lib/datadog/core/utils/string_table.rb +0 -47
  402. data/lib/datadog/profiling/backtrace_location.rb +0 -34
  403. data/lib/datadog/profiling/buffer.rb +0 -43
  404. data/lib/datadog/profiling/collectors/old_stack.rb +0 -301
  405. data/lib/datadog/profiling/encoding/profile.rb +0 -41
  406. data/lib/datadog/profiling/event.rb +0 -15
  407. data/lib/datadog/profiling/events/stack.rb +0 -82
  408. data/lib/datadog/profiling/old_recorder.rb +0 -107
  409. data/lib/datadog/profiling/pprof/builder.rb +0 -125
  410. data/lib/datadog/profiling/pprof/converter.rb +0 -102
  411. data/lib/datadog/profiling/pprof/message_set.rb +0 -16
  412. data/lib/datadog/profiling/pprof/payload.rb +0 -20
  413. data/lib/datadog/profiling/pprof/pprof.proto +0 -212
  414. data/lib/datadog/profiling/pprof/pprof_pb.rb +0 -81
  415. data/lib/datadog/profiling/pprof/stack_sample.rb +0 -139
  416. data/lib/datadog/profiling/pprof/string_table.rb +0 -12
  417. data/lib/datadog/profiling/pprof/template.rb +0 -118
  418. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +0 -43
  419. data/lib/datadog/profiling/trace_identifiers/helper.rb +0 -45
  420. data/lib/datadog/tracing/contrib/sinatra/headers.rb +0 -35
  421. data/lib/ddtrace/transport/http/adapters/net.rb +0 -168
  422. data/lib/ddtrace/transport/http/adapters/registry.rb +0 -27
  423. data/lib/ddtrace/transport/http/adapters/test.rb +0 -85
  424. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -77
  425. data/lib/ddtrace/transport/http/api/endpoint.rb +0 -29
  426. data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -24
  427. data/lib/ddtrace/transport/http/api/instance.rb +0 -35
  428. data/lib/ddtrace/transport/http/api/map.rb +0 -16
  429. data/lib/ddtrace/transport/http/api/spec.rb +0 -17
  430. data/lib/ddtrace/transport/http/api.rb +0 -39
  431. data/lib/ddtrace/transport/http/builder.rb +0 -176
  432. data/lib/ddtrace/transport/http/client.rb +0 -52
  433. data/lib/ddtrace/transport/http/env.rb +0 -58
  434. data/lib/ddtrace/transport/http/response.rb +0 -58
  435. data/lib/ddtrace/transport/http/statistics.rb +0 -43
  436. data/lib/ddtrace/transport/http/traces.rb +0 -144
  437. data/lib/ddtrace/transport/http.rb +0 -117
  438. data/lib/ddtrace/transport/io/client.rb +0 -85
  439. data/lib/ddtrace/transport/io/response.rb +0 -25
  440. data/lib/ddtrace/transport/io/traces.rb +0 -99
  441. data/lib/ddtrace/transport/io.rb +0 -28
  442. data/lib/ddtrace/transport/parcel.rb +0 -20
  443. data/lib/ddtrace/transport/request.rb +0 -15
  444. data/lib/ddtrace/transport/response.rb +0 -60
  445. data/lib/ddtrace/transport/serializable_trace.rb +0 -122
  446. data/lib/ddtrace/transport/statistics.rb +0 -75
  447. data/lib/ddtrace/transport/trace_formatter.rb +0 -198
  448. data/lib/ddtrace/transport/traces.rb +0 -216
@@ -1,4 +1,6 @@
1
1
  require_relative '../../tracing/configuration/ext'
2
+ require_relative '../../core/environment/variable_helpers'
3
+ require_relative 'http'
2
4
 
3
5
  module Datadog
4
6
  module Tracing
@@ -26,8 +28,8 @@ module Datadog
26
28
  # @default `DD_TRACE_ANALYTICS_ENABLED` environment variable, otherwise `nil`
27
29
  # @return [Boolean,nil]
28
30
  option :enabled do |o|
29
- o.default { env_to_bool(Tracing::Configuration::Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED, nil) }
30
- o.lazy
31
+ o.type :bool, nilable: true
32
+ o.env Tracing::Configuration::Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED
31
33
  end
32
34
  end
33
35
 
@@ -51,24 +53,20 @@ module Datadog
51
53
  # otherwise `['Datadog','b3multi','b3']`.
52
54
  # @return [Array<String>]
53
55
  option :propagation_extract_style do |o|
54
- o.default do
55
- # DEV-2.0: Change default value to `tracecontext, Datadog`.
56
- # Look for all headers by default
57
- env_to_list(
58
- [
59
- Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT,
60
- Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT_OLD
61
- ],
62
- [
63
- Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG,
64
- Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_MULTI_HEADER,
65
- Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER
66
- ],
67
- comma_separated_only: true
68
- )
69
- end
70
-
71
- o.on_set do |styles|
56
+ o.type :array
57
+ o.deprecated_env Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT_OLD
58
+ o.env Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT
59
+ # DEV-2.0: Change default value to `tracecontext, Datadog`.
60
+ # Look for all headers by default
61
+ o.default(
62
+ [
63
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG,
64
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_MULTI_HEADER,
65
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER,
66
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_TRACE_CONTEXT,
67
+ ]
68
+ )
69
+ o.after_set do |styles|
72
70
  # Modernize B3 options
73
71
  # DEV-2.0: Can be removed with the removal of deprecated B3 constants.
74
72
  styles.map! do |style|
@@ -82,8 +80,6 @@ module Datadog
82
80
  end
83
81
  end
84
82
  end
85
-
86
- o.lazy
87
83
  end
88
84
 
89
85
  # The data propagation styles the tracer will use to inject distributed tracing propagation
@@ -94,19 +90,15 @@ module Datadog
94
90
  # @default `DD_TRACE_PROPAGATION_STYLE_INJECT` environment variable (comma-separated list), otherwise `['Datadog']`.
95
91
  # @return [Array<String>]
96
92
  option :propagation_inject_style do |o|
97
- o.default do
98
- # DEV-2.0: Change default value to `tracecontext, Datadog`.
99
- env_to_list(
100
- [
101
- Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT,
102
- Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT_OLD
103
- ],
104
- [Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG],
105
- comma_separated_only: true # Only inject Datadog headers by default
106
- )
107
- end
108
-
109
- o.on_set do |styles|
93
+ o.type :array
94
+ o.deprecated_env Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT_OLD
95
+ o.env Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT
96
+ # DEV-2.0: Change default value to `tracecontext, Datadog`.
97
+ o.default [
98
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG,
99
+ Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_TRACE_CONTEXT,
100
+ ]
101
+ o.after_set do |styles|
110
102
  # Modernize B3 options
111
103
  # DEV-2.0: Can be removed with the removal of deprecated B3 constants.
112
104
  styles.map! do |style|
@@ -120,8 +112,6 @@ module Datadog
120
112
  end
121
113
  end
122
114
  end
123
-
124
- o.lazy
125
115
  end
126
116
 
127
117
  # An ordered list of what data propagation styles the tracer will use to extract distributed tracing propagation
@@ -133,12 +123,11 @@ module Datadog
133
123
  # @default `DD_TRACE_PROPAGATION_STYLE` environment variable (comma-separated list).
134
124
  # @return [Array<String>]
135
125
  option :propagation_style do |o|
136
- o.default do
137
- env_to_list(Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE, nil, comma_separated_only: true)
138
- end
139
-
140
- o.on_set do |styles|
141
- next unless styles
126
+ o.type :array
127
+ o.env Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE
128
+ o.default []
129
+ o.after_set do |styles|
130
+ next if styles.empty?
142
131
 
143
132
  # Modernize B3 options
144
133
  # DEV-2.0: Can be removed with the removal of deprecated B3 constants.
@@ -156,8 +145,17 @@ module Datadog
156
145
  set_option(:propagation_extract_style, styles)
157
146
  set_option(:propagation_inject_style, styles)
158
147
  end
148
+ end
159
149
 
160
- o.lazy
150
+ # Strictly stop at the first successfully serialized style.
151
+ # This prevents the tracer from enriching the extracted context with information from
152
+ # other valid propagations styles present in the request.
153
+ # @default `DD_TRACE_PROPAGATION_EXTRACT_FIRST` environment variable, otherwise `false`.
154
+ # @return [Boolean]
155
+ option :propagation_extract_first do |o|
156
+ o.env Tracing::Configuration::Ext::Distributed::EXTRACT_FIRST
157
+ o.default false
158
+ o.type :bool
161
159
  end
162
160
  end
163
161
 
@@ -169,17 +167,37 @@ module Datadog
169
167
  # @default `DD_TRACE_ENABLED` environment variable, otherwise `true`
170
168
  # @return [Boolean]
171
169
  option :enabled do |o|
172
- o.default { env_to_bool(Tracing::Configuration::Ext::ENV_ENABLED, true) }
173
- o.lazy
170
+ o.env Tracing::Configuration::Ext::ENV_ENABLED
171
+ o.default true
172
+ o.type :bool
173
+ end
174
+
175
+ # Comma-separated, case-insensitive list of header names that are reported in incoming and outgoing HTTP requests.
176
+ #
177
+ # Each header in the list can either be:
178
+ # * A header name, which is mapped to the respective tags `http.request.headers.<header name>` and `http.response.headers.<header name>`.
179
+ # * A key value pair, "header name:tag name", which is mapped to the span tag `tag name`.
180
+ #
181
+ # You can mix the two types of header declaration in the same list.
182
+ # Tag names will be normalized based on the [Datadog tag normalization rules](https://docs.datadoghq.com/getting_started/tagging/#defining-tags).
183
+ #
184
+ # @default `DD_TRACE_HEADER_TAGS` environment variable, otherwise an empty set of tags
185
+ # @return [Array<String>]
186
+ option :header_tags do |o|
187
+ o.env Configuration::Ext::ENV_HEADER_TAGS
188
+ o.type :array
189
+ o.default []
190
+ o.setter { |header_tags, _| Configuration::HTTP::HeaderTags.new(header_tags) }
174
191
  end
175
192
 
176
193
  # Enable 128 bit trace id generation.
177
194
  #
178
- # @default `DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED` environment variable, otherwise `false`
195
+ # @default `DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED` environment variable, otherwise `true`
179
196
  # @return [Boolean]
180
197
  option :trace_id_128_bit_generation_enabled do |o|
181
- o.default { env_to_bool(Tracing::Configuration::Ext::ENV_TRACE_ID_128_BIT_GENERATION_ENABLED, false) }
182
- o.lazy
198
+ o.env Tracing::Configuration::Ext::ENV_TRACE_ID_128_BIT_GENERATION_ENABLED
199
+ o.default true
200
+ o.type :bool
183
201
  end
184
202
 
185
203
  # Enable 128 bit trace id injected for logging.
@@ -189,8 +207,9 @@ module Datadog
189
207
  #
190
208
  # It is not supported by our backend yet. Do not enable it.
191
209
  option :trace_id_128_bit_logging_enabled do |o|
192
- o.default { env_to_bool(Tracing::Configuration::Ext::Correlation::ENV_TRACE_ID_128_BIT_LOGGING_ENABLED, false) }
193
- o.lazy
210
+ o.env Tracing::Configuration::Ext::Correlation::ENV_TRACE_ID_128_BIT_LOGGING_ENABLED
211
+ o.default false
212
+ o.type :bool
194
213
  end
195
214
 
196
215
  # A custom tracer instance.
@@ -211,8 +230,9 @@ module Datadog
211
230
  # @see https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#trace-correlation
212
231
  # @return [Boolean]
213
232
  option :log_injection do |o|
214
- o.default { env_to_bool(Tracing::Configuration::Ext::Correlation::ENV_LOGS_INJECTION_ENABLED, true) }
215
- o.lazy
233
+ o.env Tracing::Configuration::Ext::Correlation::ENV_LOGS_INJECTION_ENABLED
234
+ o.default true
235
+ o.type :bool
216
236
  end
217
237
 
218
238
  # Configures an alternative trace transport behavior, where
@@ -229,7 +249,7 @@ module Datadog
229
249
  #
230
250
  # @default `false`
231
251
  # @return [Boolean]
232
- option :enabled, default: false
252
+ option :enabled, default: false, type: :bool
233
253
 
234
254
  # Minimum number of finished spans required in a single unfinished trace before
235
255
  # the tracer will consider that trace for partial flushing.
@@ -242,7 +262,7 @@ module Datadog
242
262
  #
243
263
  # @default 500
244
264
  # @return [Integer]
245
- option :min_spans_threshold, default: 500
265
+ option :min_spans_threshold, default: 500, type: :int
246
266
  end
247
267
 
248
268
  # Enables {https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/#datadog-intelligent-retention-filter
@@ -252,8 +272,9 @@ module Datadog
252
272
  option :priority_sampling
253
273
 
254
274
  option :report_hostname do |o|
255
- o.default { env_to_bool(Tracing::Configuration::Ext::NET::ENV_REPORT_HOSTNAME, false) }
256
- o.lazy
275
+ o.env Tracing::Configuration::Ext::NET::ENV_REPORT_HOSTNAME
276
+ o.default false
277
+ o.type :bool
257
278
  end
258
279
 
259
280
  # A custom sampler instance.
@@ -273,10 +294,10 @@ module Datadog
273
294
  # for resources not seen recently).
274
295
  #
275
296
  # @default `DD_TRACE_SAMPLE_RATE` environment variable, otherwise `nil`.
276
- # @return [Float,nil]
297
+ # @return [Float, nil]
277
298
  option :default_rate do |o|
278
- o.default { env_to_float(Tracing::Configuration::Ext::Sampling::ENV_SAMPLE_RATE, nil) }
279
- o.lazy
299
+ o.type :float, nilable: true
300
+ o.env Tracing::Configuration::Ext::Sampling::ENV_SAMPLE_RATE
280
301
  end
281
302
 
282
303
  # Rate limit for number of spans per second.
@@ -287,8 +308,25 @@ module Datadog
287
308
  # @default `DD_TRACE_RATE_LIMIT` environment variable, otherwise 100.
288
309
  # @return [Numeric,nil]
289
310
  option :rate_limit do |o|
290
- o.default { env_to_float(Tracing::Configuration::Ext::Sampling::ENV_RATE_LIMIT, 100) }
291
- o.lazy
311
+ o.type :int, nilable: true
312
+ o.env Tracing::Configuration::Ext::Sampling::ENV_RATE_LIMIT
313
+ o.default 100
314
+ end
315
+
316
+ # Trace sampling rules.
317
+ # These rules control whether a trace is kept or dropped by the tracer.
318
+ #
319
+ # The `rules` format is a String with a JSON array of objects:
320
+ # Each object must have a `sample_rate`, and the `name` and `service` fields
321
+ # are optional. The `sample_rate` value must be between 0.0 and 1.0 (inclusive).
322
+ # `name` and `service` are Strings that allow the `sample_rate` to be applied only
323
+ # to traces matching the `name` and `service`.
324
+ #
325
+ # @default `DD_TRACE_SAMPLING_RULES` environment variable. Otherwise `nil`.
326
+ # @return [String,nil]
327
+ # @public_api
328
+ option :rules do |o|
329
+ o.default { ENV.fetch(Configuration::Ext::Sampling::ENV_RULES, nil) }
292
330
  end
293
331
 
294
332
  # Single span sampling rules.
@@ -303,6 +341,7 @@ module Datadog
303
341
  # @return [String,nil]
304
342
  # @public_api
305
343
  option :span_rules do |o|
344
+ o.type :string, nilable: true
306
345
  o.default do
307
346
  rules = ENV[Tracing::Configuration::Ext::Sampling::Span::ENV_SPAN_SAMPLING_RULES]
308
347
  rules_file = ENV[Tracing::Configuration::Ext::Sampling::Span::ENV_SPAN_SAMPLING_RULES_FILE]
@@ -330,7 +369,6 @@ module Datadog
330
369
  end
331
370
  end
332
371
  end
333
- o.lazy
334
372
  end
335
373
  end
336
374
 
@@ -344,30 +382,36 @@ module Datadog
344
382
  # @default `DD_TRACE_TEST_MODE_ENABLED` environment variable, otherwise `false`
345
383
  # @return [Boolean]
346
384
  option :enabled do |o|
347
- o.default { env_to_bool(Tracing::Configuration::Ext::Test::ENV_MODE_ENABLED, false) }
348
- o.lazy
385
+ o.type :bool
386
+ o.default false
387
+ o.env Tracing::Configuration::Ext::Test::ENV_MODE_ENABLED
349
388
  end
350
389
 
351
- option :trace_flush do |o|
352
- o.default { nil }
353
- o.lazy
390
+ # Use async writer in test mode
391
+ option :async do |o|
392
+ o.type :bool
393
+ o.default false
354
394
  end
355
395
 
396
+ option :trace_flush
397
+
356
398
  option :writer_options do |o|
357
- o.default { {} }
358
- o.lazy
399
+ o.type :hash
400
+ o.default({})
359
401
  end
360
402
  end
361
403
 
362
404
  # @see file:docs/GettingStarted.md#configuring-the-transport-layer Configuring the transport layer
363
405
  #
364
406
  # A {Proc} that configures a custom tracer transport.
365
- # @yield Receives a {Datadog::Transport::HTTP} that can be modified with custom adapters and settings.
366
- # @yieldparam [Datadog::Transport::HTTP] t transport to be configured.
407
+ # @yield Receives a {Datadog::Tracing::Transport::HTTP} that can be modified with custom adapters and settings.
408
+ # @yieldparam [Datadog::Tracing::Transport::HTTP] t transport to be configured.
367
409
  # @default `nil`
368
410
  # @return [Proc,nil]
369
- option :transport_options, default: nil
370
-
411
+ option :transport_options do |o|
412
+ o.type :proc, nilable: true
413
+ o.default nil
414
+ end
371
415
  # A custom writer instance.
372
416
  # The object must respect the {Datadog::Tracing::Writer} interface.
373
417
  #
@@ -382,8 +426,11 @@ module Datadog
382
426
  # This option is recommended for internal use only.
383
427
  #
384
428
  # @default `{}`
385
- # @return [Hash,nil]
386
- option :writer_options, default: ->(_i) { {} }, lazy: true
429
+ # @return [Hash]
430
+ option :writer_options do |o|
431
+ o.type :hash
432
+ o.default({})
433
+ end
387
434
 
388
435
  # Client IP configuration
389
436
  # @public_api
@@ -398,21 +445,23 @@ module Datadog
398
445
  # @default `DD_TRACE_CLIENT_IP_ENABLED` environment variable, otherwise `false`.
399
446
  # @return [Boolean]
400
447
  option :enabled do |o|
448
+ o.type :bool
401
449
  o.default do
402
- disabled = env_to_bool(Tracing::Configuration::Ext::ClientIp::ENV_DISABLED)
450
+ disabled = Core::Environment::VariableHelpers.env_to_bool(Tracing::Configuration::Ext::ClientIp::ENV_DISABLED)
403
451
 
404
452
  enabled = if disabled.nil?
405
453
  false
406
454
  else
407
- Datadog.logger.warn { "#{Tracing::Configuration::Ext::ClientIp::ENV_DISABLED} environment variable is deprecated, found set to #{disabled}, use #{Tracing::Configuration::Ext::ClientIp::ENV_ENABLED}=#{!disabled}" }
455
+ Datadog::Core.log_deprecation do
456
+ "#{Tracing::Configuration::Ext::ClientIp::ENV_DISABLED} environment variable is deprecated, use #{Tracing::Configuration::Ext::ClientIp::ENV_ENABLED} instead."
457
+ end
408
458
 
409
459
  !disabled
410
460
  end
411
461
 
412
462
  # ENABLED env var takes precedence over deprecated DISABLED
413
- env_to_bool(Tracing::Configuration::Ext::ClientIp::ENV_ENABLED, enabled)
463
+ Core::Environment::VariableHelpers.env_to_bool(Tracing::Configuration::Ext::ClientIp::ENV_ENABLED, enabled)
414
464
  end
415
- o.lazy
416
465
  end
417
466
 
418
467
  # An optional name of a custom header to resolve the client IP from.
@@ -420,8 +469,8 @@ module Datadog
420
469
  # @default `DD_TRACE_CLIENT_IP_HEADER` environment variable, otherwise `nil`.
421
470
  # @return [String,nil]
422
471
  option :header_name do |o|
423
- o.default { ENV.fetch(Tracing::Configuration::Ext::ClientIp::ENV_HEADER_NAME, nil) }
424
- o.lazy
472
+ o.type :string, nilable: true
473
+ o.env Tracing::Configuration::Ext::ClientIp::ENV_HEADER_NAME
425
474
  end
426
475
  end
427
476
 
@@ -434,22 +483,9 @@ module Datadog
434
483
  # @default `DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH` environment variable, otherwise `512`
435
484
  # @return [Integer]
436
485
  option :x_datadog_tags_max_length do |o|
437
- o.default { env_to_int(Tracing::Configuration::Ext::Distributed::ENV_X_DATADOG_TAGS_MAX_LENGTH, 512) }
438
- o.lazy
439
- end
440
-
441
- # Schema version for span attributes that enables various features
442
- #
443
- # @default `DD_TRACE_SPAN_ATTRIBUTE_SCHEMA` environment variable, otherwise default `v0` currently
444
- # @return [String]
445
- option :span_attribute_schema do |o|
446
- o.default do
447
- ENV.fetch(
448
- Tracing::Configuration::Ext::SpanAttributeSchema::ENV_SPAN_ATTRIBUTE_SCHEMA,
449
- Tracing::Configuration::Ext::SpanAttributeSchema::DEFAULT_VERSION
450
- )
451
- end
452
- o.lazy
486
+ o.type :int
487
+ o.env Tracing::Configuration::Ext::Distributed::ENV_X_DATADOG_TAGS_MAX_LENGTH
488
+ o.default 512
453
489
  end
454
490
  end
455
491
  end
@@ -12,18 +12,21 @@ module Datadog
12
12
  # @public_api
13
13
  class Settings < Contrib::Configuration::Settings
14
14
  option :enabled do |o|
15
- o.default { env_to_bool(Ext::ENV_ENABLED, true) }
16
- o.lazy
15
+ o.type :bool
16
+ o.env Ext::ENV_ENABLED
17
+ o.default true
17
18
  end
18
19
 
19
20
  option :analytics_enabled do |o|
20
- o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
21
- o.lazy
21
+ o.type :bool
22
+ o.env Ext::ENV_ANALYTICS_ENABLED
23
+ o.default false
22
24
  end
23
25
 
24
26
  option :analytics_sample_rate do |o|
25
- o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
26
- o.lazy
27
+ o.type :float
28
+ o.env Ext::ENV_ANALYTICS_SAMPLE_RATE
29
+ o.default 1.0
27
30
  end
28
31
 
29
32
  option :service_name
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Datadog
2
4
  module Tracing
3
5
  module Contrib
@@ -5,24 +7,24 @@ module Datadog
5
7
  # ActionCable integration constants
6
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
7
9
  module Ext
8
- ENV_ENABLED = 'DD_TRACE_ACTION_CABLE_ENABLED'.freeze
9
- ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTION_CABLE_ANALYTICS_ENABLED'.freeze
10
- ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTION_CABLE_ANALYTICS_SAMPLE_RATE'.freeze
11
- SPAN_ACTION = 'action_cable.action'.freeze
12
- SPAN_BROADCAST = 'action_cable.broadcast'.freeze
13
- SPAN_ON_OPEN = 'action_cable.on_open'.freeze
14
- SPAN_TRANSMIT = 'action_cable.transmit'.freeze
15
- TAG_ACTION = 'action_cable.action'.freeze
16
- TAG_BROADCAST_CODER = 'action_cable.broadcast.coder'.freeze
17
- TAG_CHANNEL = 'action_cable.channel'.freeze
18
- TAG_CHANNEL_CLASS = 'action_cable.channel_class'.freeze
19
- TAG_COMPONENT = 'action_cable'.freeze
20
- TAG_CONNECTION = 'action_cable.connection'.freeze
21
- TAG_OPERATION_ACTION = 'action'.freeze
22
- TAG_OPERATION_BROADCAST = 'broadcast'.freeze
23
- TAG_OPERATION_ON_OPEN = 'on_open'.freeze
24
- TAG_OPERATION_TRANSMIT = 'transmit'.freeze
25
- TAG_TRANSMIT_VIA = 'action_cable.transmit.via'.freeze
10
+ ENV_ENABLED = 'DD_TRACE_ACTION_CABLE_ENABLED'
11
+ ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTION_CABLE_ANALYTICS_ENABLED'
12
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTION_CABLE_ANALYTICS_SAMPLE_RATE'
13
+ SPAN_ACTION = 'action_cable.action'
14
+ SPAN_BROADCAST = 'action_cable.broadcast'
15
+ SPAN_ON_OPEN = 'action_cable.on_open'
16
+ SPAN_TRANSMIT = 'action_cable.transmit'
17
+ TAG_ACTION = 'action_cable.action'
18
+ TAG_BROADCAST_CODER = 'action_cable.broadcast.coder'
19
+ TAG_CHANNEL = 'action_cable.channel'
20
+ TAG_CHANNEL_CLASS = 'action_cable.channel_class'
21
+ TAG_COMPONENT = 'action_cable'
22
+ TAG_CONNECTION = 'action_cable.connection'
23
+ TAG_OPERATION_ACTION = 'action'
24
+ TAG_OPERATION_BROADCAST = 'broadcast'
25
+ TAG_OPERATION_ON_OPEN = 'on_open'
26
+ TAG_OPERATION_TRANSMIT = 'transmit'
27
+ TAG_TRANSMIT_VIA = 'action_cable.transmit.via'
26
28
  end
27
29
  end
28
30
  end
@@ -12,18 +12,21 @@ module Datadog
12
12
  # @public_api
13
13
  class Settings < Contrib::Configuration::Settings
14
14
  option :enabled do |o|
15
- o.default { env_to_bool(Ext::ENV_ENABLED, true) }
16
- o.lazy
15
+ o.type :bool
16
+ o.env Ext::ENV_ENABLED
17
+ o.default true
17
18
  end
18
19
 
19
20
  option :analytics_enabled do |o|
20
- o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
21
- o.lazy
21
+ o.type :bool
22
+ o.env Ext::ENV_ANALYTICS_ENABLED
23
+ o.default false
22
24
  end
23
25
 
24
26
  option :analytics_sample_rate do |o|
25
- o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
26
- o.lazy
27
+ o.type :float
28
+ o.env Ext::ENV_ANALYTICS_SAMPLE_RATE
29
+ o.default 1.0
27
30
  end
28
31
 
29
32
  option :service_name
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Datadog
2
4
  module Tracing
3
5
  module Contrib
@@ -5,25 +7,25 @@ module Datadog
5
7
  # ActionMailer integration constants
6
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
7
9
  module Ext
8
- ENV_ENABLED = 'DD_TRACE_ACTION_MAILER_ENABLED'.freeze
9
- ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTION_MAILER_ANALYTICS_ENABLED'.freeze
10
- ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTION_MAILER_ANALYTICS_SAMPLE_RATE'.freeze
11
- SPAN_PROCESS = 'action_mailer.process'.freeze
12
- SPAN_DELIVER = 'action_mailer.deliver'.freeze
13
- TAG_COMPONENT = 'action_mailer'.freeze
14
- TAG_ACTION = 'action_mailer.action'.freeze
15
- TAG_MAILER = 'action_mailer.mailer'.freeze
16
- TAG_MSG_ID = 'action_mailer.message_id'.freeze
17
- TAG_OPERATION_DELIVER = 'deliver'.freeze
18
- TAG_OPERATION_PROCESS = 'process'.freeze
10
+ ENV_ENABLED = 'DD_TRACE_ACTION_MAILER_ENABLED'
11
+ ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTION_MAILER_ANALYTICS_ENABLED'
12
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTION_MAILER_ANALYTICS_SAMPLE_RATE'
13
+ SPAN_PROCESS = 'action_mailer.process'
14
+ SPAN_DELIVER = 'action_mailer.deliver'
15
+ TAG_COMPONENT = 'action_mailer'
16
+ TAG_ACTION = 'action_mailer.action'
17
+ TAG_MAILER = 'action_mailer.mailer'
18
+ TAG_MSG_ID = 'action_mailer.message_id'
19
+ TAG_OPERATION_DELIVER = 'deliver'
20
+ TAG_OPERATION_PROCESS = 'process'
19
21
 
20
- TAG_SUBJECT = 'action_mailer.subject'.freeze
21
- TAG_TO = 'action_mailer.to'.freeze
22
- TAG_FROM = 'action_mailer.from'.freeze
23
- TAG_BCC = 'action_mailer.bcc'.freeze
24
- TAG_CC = 'action_mailer.cc'.freeze
25
- TAG_DATE = 'action_mailer.date'.freeze
26
- TAG_PERFORM_DELIVERIES = 'action_mailer.perform_deliveries'.freeze
22
+ TAG_SUBJECT = 'action_mailer.subject'
23
+ TAG_TO = 'action_mailer.to'
24
+ TAG_FROM = 'action_mailer.from'
25
+ TAG_BCC = 'action_mailer.bcc'
26
+ TAG_CC = 'action_mailer.cc'
27
+ TAG_DATE = 'action_mailer.date'
28
+ TAG_PERFORM_DELIVERIES = 'action_mailer.perform_deliveries'
27
29
  end
28
30
  end
29
31
  end
@@ -12,23 +12,25 @@ module Datadog
12
12
  # @public_api
13
13
  class Settings < Contrib::Configuration::Settings
14
14
  option :enabled do |o|
15
- o.default { env_to_bool(Ext::ENV_ENABLED, true) }
16
- o.lazy
15
+ o.type :bool
16
+ o.env Ext::ENV_ENABLED
17
+ o.default true
17
18
  end
18
19
 
19
20
  option :analytics_enabled do |o|
20
- o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) }
21
- o.lazy
21
+ o.type :bool, nilable: true
22
+ o.env Ext::ENV_ANALYTICS_ENABLED
22
23
  end
23
24
 
24
25
  option :analytics_sample_rate do |o|
25
- o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
26
- o.lazy
26
+ o.type :float
27
+ o.env Ext::ENV_ANALYTICS_SAMPLE_RATE
28
+ o.default 1.0
27
29
  end
28
30
 
29
31
  # DEV-2.0: Breaking changes for removal.
30
32
  option :exception_controller do |o|
31
- o.on_set do |value|
33
+ o.after_set do |value|
32
34
  if value
33
35
  Datadog::Core.log_deprecation do
34
36
  'The error controller is now automatically detected. '\
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Datadog
2
4
  module Tracing
3
5
  module Contrib
@@ -5,14 +7,14 @@ module Datadog
5
7
  # ActionPack integration constants
6
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
7
9
  module Ext
8
- ENV_ENABLED = 'DD_TRACE_ACTION_PACK_ENABLED'.freeze
9
- ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTION_PACK_ANALYTICS_ENABLED'.freeze
10
- ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTION_PACK_ANALYTICS_SAMPLE_RATE'.freeze
11
- SPAN_ACTION_CONTROLLER = 'rails.action_controller'.freeze
12
- TAG_COMPONENT = 'action_pack'.freeze
13
- TAG_OPERATION_CONTROLLER = 'controller'.freeze
14
- TAG_ROUTE_ACTION = 'rails.route.action'.freeze
15
- TAG_ROUTE_CONTROLLER = 'rails.route.controller'.freeze
10
+ ENV_ENABLED = 'DD_TRACE_ACTION_PACK_ENABLED'
11
+ ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTION_PACK_ANALYTICS_ENABLED'
12
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTION_PACK_ANALYTICS_SAMPLE_RATE'
13
+ SPAN_ACTION_CONTROLLER = 'rails.action_controller'
14
+ TAG_COMPONENT = 'action_pack'
15
+ TAG_OPERATION_CONTROLLER = 'controller'
16
+ TAG_ROUTE_ACTION = 'rails.route.action'
17
+ TAG_ROUTE_CONTROLLER = 'rails.route.controller'
16
18
  end
17
19
  end
18
20
  end