dd-trace-rb icon indicating copy to clipboard operation
dd-trace-rb copied to clipboard

Active record async queries are considered separate traces

Open agrobbin opened this issue 2 years ago • 0 comments

Current behaviour

When leveraging Active Record's async queries functionality (load_async, async_count, etc.), the queries that are executed, while noticed by ddtrace and wrapped in spans, are considered separate traces, and are therefore not easily discoverable / correlated to the overall trace (whether it be a web request, background job, or something else).

After looking briefly at the ddtrace source, my hunch is that the reason these are not all part of the same trace is that the query is executed in a different thread from the main trace, and ddtrace is not referencing the parent trace correctly.

Expected behaviour

Active Record async queries should be part of the overall trace.

Steps to reproduce

With diagnostics turned on locally, you can clearly see the trace ID attached to the async query spans is different for each query, and not the same as the overall request trace ID.

Environment

  • ddtrace version: 1.19.0
  • Configuration block (Datadog.configure ...):
  • Ruby version: 3.3.0
  • Operating system: macOS 14.3.1, Ubuntu 22.04
  • Relevant library versions: Rails / Active Record 7.1.3

agrobbin avatar Feb 20 '24 15:02 agrobbin