Skip to content

Active record async queries are considered separate traces #3465

Open
@agrobbin

Description

@agrobbin

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugInvolves a bugcommunityWas opened by a community member

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions