diff --git a/query-engine/core/src/telemetry/capturing/mod.rs b/query-engine/core/src/telemetry/capturing/mod.rs index 47145e4e1a2e..7bcbde7fa847 100644 --- a/query-engine/core/src/telemetry/capturing/mod.rs +++ b/query-engine/core/src/telemetry/capturing/mod.rs @@ -4,75 +4,75 @@ //! The interaction diagram below (soorry width!) shows the different roles at play during telemetry //! capturing. A textual explanatation follows it. For the sake of example a server environment //! --the query-engine crate-- is assumed. -//! -//! -//! ╔═══════════════════════╗ ╔═══════════════╗ ╔═══════════════════════╗ -//! ║<> ║ ║ Storage ║ ║<>║ ╔═══════════════════╗ -//! ┌───────────────────┐ ║ EXPORTER ║ ║ ║ ║ PROCESSOR ║ ║ TRACER ║ -//! │ Server │ ╚═══════════╦═══════════╝ ╚═══════╦═══════╝ ╚═══════════╦═══════════╝ ╚═════════╦═════════╝ -//! └─────────┬─────────┘ │ │ │ │ -//! │ │ │ │ │ -//! │ │ │ │ │ -//! POST │ │ │ │ │ -//! (body, headers)│ │ │ │ │ -//! ──────────▶┌┴┐ │ │ │ │ -//! [1] │ │new(headers)╔════════════╗ │ │ │ │ -//! │ ├───────────▶║s: Settings ║ │ │ │ │ -//! │ │ [2] ╚════════════╝ │ │ │ │ -//! │ │ │ │ │ │ -//! │ │ ╔═══════════════════╗ │ │ │ │ -//! │ │ ║ Capturer::Enabled ║ │ │ │ │ ┌────────────┐ -//! │ │ ╚═══════════════════╝ │ │ │ │ │<│ -//! │ │ │ │ │ │ │ └──────┬─────┘ -//! │ │ new(trace_id, s) │ │ │ │ │ │ -//! │ ├─────────────────────────────▶│ │ │ │ │ │ -//! │ │ [2] │ │ │ │ │ │ -//! │ │ │ │ │ │ │ │ -//! │ │ start_capturing() │ │ │ │ │ │ -//! │ ├─────────────────────────────▶│ │ │ │ │ │ -//! │ │ [3] │ │ │ │ │ │ -//! │ │ │ start_capturing │ │ │ │ │ -//! │ │ │ (trace_id, s) │ │ │ │ │ -//! │ │ ├─────────────────────▶│ insert(trace_id, s) │ │ │ │ -//! │ │ │ ├────────────────────▶│ │ │ │ -//! │ │ │ │ [4] │ │ │ │ -//! │ │ │ │ │ │ │ process_query │ -//! │ │──────────────────────────────┼──────────────────────┼─────────────────────┼─────────────────────┼───────────────────────┼──────────────────▶┌┴┐ -//! │ │ │ │ │ │ │ [5] │ │ -//! │ │ │ │ │ │ │ │ │ -//! │ │ │ │ │ │ │ log! / span! │ │ ┌─────────────────────┐ -//! │ │ │ │ │ │ on_start / on_end ◀───────────────────│ │ │ res: PrismaResponse │ -//! │ │ │ │ │ │◀──────────────────────┤ [6] │ │ └──────────┬──────────┘ -//! │ │ │ │ export(Vec) [8] │ [7] │ │ │ new │ -//! │ │ │ │◀────────────────────┼─────────────────────│ │ │ │────────────▶│ -//! │ │ │ │ │ │ │ │ │ │ -//! │ │ │ │ append(trace_id, │ │ │ │ │ │ -//! │ │ │ │ logs, traces) │ │ │ │ │ │ -//! │ │ │ ├────────────────────▶│ │ │ │ │ │ -//! │ │ │ │ [9] │ │ │ │ │ │ -//! │ │ res: PrismaResponse [10]│ │ │ │ │ │ │ │ -//! │ │◁ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─└┬┘ │ -//! │ │ fetch_captures() │ │ │ │ │ │ │ -//! │ ├─────────────────────────────▶│ fetch_captures │ │ │ │ │ │ -//! │ │ [11] │ (trace_id) │ │ │ │ │ │ -//! │ │ ├─────────────────────▶│ │ Flush()[12] │ │ x │ -//! │ │ │ ├─────────────────────┼────────────────────▶│ │ │ -//! │ │ │ │ │ │ │ │ -//! │ │ │ │ export(pending: Vec) │ │ │ -//! │ │ │ │◀────────────────────┼─────────────────────│ │ │ -//! │ │ │ │ │ │ │ │ -//! │ │ │ get logs/traces for trace_id │ │ │ -//! │ │ │ ├────────────────────▶│ │ │ │ -//! │ │ ◁ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ [13] │ │ │ │ -//! │ │◁─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ │ │ │ -//! │ │ logs, traces x │ │ │ │ res.set_extension(logs) │ -//! │ ├─────────────────────────────────────────────────────┼─────────────────────┼─────────────────────┼───────────────────────┼─[14]─────────────────────────────▶│ -//! │ │ │ │ │ │ res.set_extension(traces) │ -//! │ ├─────────────────────────────────────────────────────┼─────────────────────┼─────────────────────┼───────────────────────┼──────────────────────────────────▶│ -//! ◀ ─ ─ ─└┬┘ │ │ │ │ x -//! json!(res) -//! [15] -//! +//! # +//! # +//! # ╔═══════════════════════╗ ╔═══════════════╗ ╔═══════════════════════╗ +//! # ║<> ║ ║ Storage ║ ║<>║ ╔═══════════════════╗ +//! # ┌───────────────────┐ ║ EXPORTER ║ ║ ║ ║ PROCESSOR ║ ║ TRACER ║ +//! # │ Server │ ╚═══════════╦═══════════╝ ╚═══════╦═══════╝ ╚═══════════╦═══════════╝ ╚═════════╦═════════╝ +//! # └─────────┬─────────┘ │ │ │ │ +//! # │ │ │ │ │ +//! # │ │ │ │ │ +//! # POST │ │ │ │ │ +//! # (body, headers)│ │ │ │ │ +//! # ──────────▶┌┴┐ │ │ │ │ +//! # [1] │ │new(headers)╔════════════╗ │ │ │ │ +//! # │ ├───────────▶║s: Settings ║ │ │ │ │ +//! # │ │ [2] ╚════════════╝ │ │ │ │ +//! # │ │ │ │ │ │ +//! # │ │ ╔═══════════════════╗ │ │ │ │ +//! # │ │ ║ Capturer::Enabled ║ │ │ │ │ ┌────────────┐ +//! # │ │ ╚═══════════════════╝ │ │ │ │ │<│ +//! # │ │ │ │ │ │ │ └──────┬─────┘ +//! # │ │ new(trace_id, s) │ │ │ │ │ │ +//! # │ ├─────────────────────────────▶│ │ │ │ │ │ +//! # │ │ [2] │ │ │ │ │ │ +//! # │ │ │ │ │ │ │ │ +//! # │ │ start_capturing() │ │ │ │ │ │ +//! # │ ├─────────────────────────────▶│ │ │ │ │ │ +//! # │ │ [3] │ │ │ │ │ │ +//! # │ │ │ start_capturing │ │ │ │ │ +//! # │ │ │ (trace_id, s) │ │ │ │ │ +//! # │ │ ├─────────────────────▶│ insert(trace_id, s) │ │ │ │ +//! # │ │ │ ├────────────────────▶│ │ │ │ +//! # │ │ │ │ [4] │ │ │ │ +//! # │ │ │ │ │ │ │ process_query │ +//! # │ │──────────────────────────────┼──────────────────────┼─────────────────────┼─────────────────────┼───────────────────────┼──────────────────▶┌┴┐ +//! # │ │ │ │ │ │ │ [5] │ │ +//! # │ │ │ │ │ │ │ │ │ +//! # │ │ │ │ │ │ │ log! / span! │ │ ┌─────────────────────┐ +//! # │ │ │ │ │ │ on_start / on_end ◀───────────────────│ │ │ res: PrismaResponse │ +//! # │ │ │ │ │ │◀──────────────────────┤ [6] │ │ └──────────┬──────────┘ +//! # │ │ │ │ export(Vec) [8] │ [7] │ │ │ new │ +//! # │ │ │ │◀────────────────────┼─────────────────────│ │ │ │────────────▶│ +//! # │ │ │ │ │ │ │ │ │ │ +//! # │ │ │ │ append(trace_id, │ │ │ │ │ │ +//! # │ │ │ │ logs, traces) │ │ │ │ │ │ +//! # │ │ │ ├────────────────────▶│ │ │ │ │ │ +//! # │ │ │ │ [9] │ │ │ │ │ │ +//! # │ │ res: PrismaResponse [10]│ │ │ │ │ │ │ │ +//! # │ │◁ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─└┬┘ │ +//! # │ │ fetch_captures() │ │ │ │ │ │ │ +//! # │ ├─────────────────────────────▶│ fetch_captures │ │ │ │ │ │ +//! # │ │ [11] │ (trace_id) │ │ │ │ │ │ +//! # │ │ ├─────────────────────▶│ │ Flush()[12] │ │ x │ +//! # │ │ │ ├─────────────────────┼────────────────────▶│ │ │ +//! # │ │ │ │ │ │ │ │ +//! # │ │ │ │ export(pending: Vec) │ │ │ +//! # │ │ │ │◀────────────────────┼─────────────────────│ │ │ +//! # │ │ │ │ │ │ │ │ +//! # │ │ │ get logs/traces for trace_id │ │ │ +//! # │ │ │ ├────────────────────▶│ │ │ │ +//! # │ │ ◁ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ [13] │ │ │ │ +//! # │ │◁─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ │ │ │ +//! # │ │ logs, traces x │ │ │ │ res.set_extension(logs) │ +//! # │ ├─────────────────────────────────────────────────────┼─────────────────────┼─────────────────────┼───────────────────────┼─[14]─────────────────────────────▶│ +//! # │ │ │ │ │ │ res.set_extension(traces) │ +//! # │ ├─────────────────────────────────────────────────────┼─────────────────────┼─────────────────────┼───────────────────────┼──────────────────────────────────▶│ +//! # ◀ ─ ─ ─└┬┘ │ │ │ │ x +//! # json!(res) +//! # [15] +//! # //! //! In the diagram, you will see objects whose lifetime is static. The boxes for those have a double //! width margin. These are: