diff --git a/engine/packages/gasoline/src/builder/workflow/lupe.rs b/engine/packages/gasoline/src/builder/workflow/lupe.rs index 8f3af9f550..0a76b64554 100644 --- a/engine/packages/gasoline/src/builder/workflow/lupe.rs +++ b/engine/packages/gasoline/src/builder/workflow/lupe.rs @@ -1,8 +1,10 @@ use std::time::{Duration, Instant}; use anyhow::Result; +use opentelemetry::trace::TraceContextExt; use serde::{Serialize, de::DeserializeOwned}; use tracing::Instrument; +use tracing_opentelemetry::OpenTelemetrySpanExt; use crate::{ ctx::WorkflowCtx, @@ -140,6 +142,16 @@ impl<'a, S: Serialize + DeserializeOwned> LoopBuilder<'a, S> { let previous_iteration = iteration; + let parent_span_ctx = tracing::Span::current() + .context() + .span() + .span_context() + .clone(); + + let iteration_span = + tracing::info_span!(parent: None, "iteration", iteration=%previous_iteration); + iteration_span.add_link(parent_span_ctx); + // Async block for instrumentation purposes let res = async { let db2 = ctx.db().clone(); @@ -281,7 +293,7 @@ impl<'a, S: Serialize + DeserializeOwned> LoopBuilder<'a, S> { } } } - .instrument(tracing::info_span!("iteration", iteration=%previous_iteration)) + .instrument(iteration_span) .await?; // Validate no leftover events