From 6b69556662671a69cffae5ca1fa3bc33da747f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Thu, 24 Oct 2024 17:57:38 -0400 Subject: [PATCH 1/3] use `get_tags` from `Trigger` trait --- .../src/lifecycle/invocation/span_inferrer.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/bottlecap/src/lifecycle/invocation/span_inferrer.rs b/bottlecap/src/lifecycle/invocation/span_inferrer.rs index 70f86d7d9..b63f2a82d 100644 --- a/bottlecap/src/lifecycle/invocation/span_inferrer.rs +++ b/bottlecap/src/lifecycle/invocation/span_inferrer.rs @@ -17,9 +17,10 @@ const FUNCTION_TRIGGER_EVENT_SOURCE_TAG: &str = "function_trigger.event_source"; const FUNCTION_TRIGGER_EVENT_SOURCE_ARN_TAG: &str = "function_trigger.event_source_arn"; pub struct SpanInferrer { - inferred_span: Option, + pub inferred_span: Option, is_async_span: bool, carrier: Option>, + trigger_tags: Option>, } impl Default for SpanInferrer { @@ -35,6 +36,7 @@ impl SpanInferrer { inferred_span: None, is_async_span: false, carrier: None, + trigger_tags: None, } } @@ -64,6 +66,7 @@ impl SpanInferrer { ]); self.carrier = Some(t.get_carrier()); + self.trigger_tags = Some(t.get_tags()); self.is_async_span = t.is_async(); self.inferred_span = Some(span); } @@ -87,6 +90,7 @@ impl SpanInferrer { ]); self.carrier = Some(t.get_carrier()); + self.trigger_tags = Some(t.get_tags()); self.is_async_span = t.is_async(); self.inferred_span = Some(span); } @@ -142,15 +146,17 @@ impl SpanInferrer { rng.gen() } - /// Returns a reference to the inner `self.inferred_span` + /// Returns a clone of the carrier associated with the inferred span /// #[must_use] - pub fn get_inferred_span(&self) -> &Option { - &self.inferred_span + pub fn get_carrier(&self) -> Option> { + self.carrier.clone() } + /// Returns a clone of the tags associated with the inferred span + /// #[must_use] - pub fn get_carrier(&self) -> Option> { - self.carrier.clone() + pub fn get_trigger_tags(&self) -> Option> { + self.trigger_tags.clone() } } From 5930c79c5c4ce4c7c5348a479dbb5603d8519ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Thu, 24 Oct 2024 17:57:53 -0400 Subject: [PATCH 2/3] remove unneeded comment --- .../lifecycle/invocation/triggers/api_gateway_rest_event.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/bottlecap/src/lifecycle/invocation/triggers/api_gateway_rest_event.rs b/bottlecap/src/lifecycle/invocation/triggers/api_gateway_rest_event.rs index 2ae79c40a..d2588f37a 100644 --- a/bottlecap/src/lifecycle/invocation/triggers/api_gateway_rest_event.rs +++ b/bottlecap/src/lifecycle/invocation/triggers/api_gateway_rest_event.rs @@ -115,9 +115,6 @@ impl Trigger for APIGatewayRestEvent { self.request_context.resource_path.clone(), ), ])); - - debug!("Enriched Span: {:?}", span); - // todo: update global(? IsAsync if event payload is `Event` } fn get_tags(&self) -> HashMap { From c105a90319b7b3a483e1feb2e5be89a58a18a314 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Thu, 24 Oct 2024 17:59:34 -0400 Subject: [PATCH 3/3] add trigger tags to invocation span --- bottlecap/src/lifecycle/invocation/processor.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/bottlecap/src/lifecycle/invocation/processor.rs b/bottlecap/src/lifecycle/invocation/processor.rs index 112791e9a..aa9d3b3fb 100644 --- a/bottlecap/src/lifecycle/invocation/processor.rs +++ b/bottlecap/src/lifecycle/invocation/processor.rs @@ -126,16 +126,19 @@ impl Processor { // - error.msg // - error.type // - error.stack - // - trigger tags (from inferred spans) // - metrics tags (for asm) } + if let Some(trigger_tags) = self.inferrer.get_trigger_tags() { + self.span.meta.extend(trigger_tags); + } + self.inferrer.complete_inferred_span(&self.span); if self.tracer_detected { let mut body_size = std::mem::size_of_val(&self.span); let mut traces = vec![self.span.clone()]; - if let Some(inferred_span) = self.inferrer.get_inferred_span() { + if let Some(inferred_span) = &self.inferrer.inferred_span { body_size += std::mem::size_of_val(inferred_span); traces.push(inferred_span.clone()); } @@ -215,7 +218,7 @@ impl Processor { // Set the right data to the correct root level span, // If there's an inferred span, then that should be the root. - if self.inferrer.get_inferred_span().is_some() { + if self.inferrer.inferred_span.is_some() { self.inferrer.set_parent_id(sc.span_id); self.inferrer.extend_meta(sc.tags.clone()); } else { @@ -223,7 +226,7 @@ impl Processor { } } - if let Some(inferred_span) = self.inferrer.get_inferred_span() { + if let Some(inferred_span) = &self.inferrer.inferred_span { self.span.parent_id = inferred_span.span_id; } } @@ -267,7 +270,7 @@ impl Processor { self.span.trace_id = trace_id; self.span.span_id = span_id; - if self.inferrer.get_inferred_span().is_some() { + if self.inferrer.inferred_span.is_some() { if let Some(status_code) = status_code { self.inferrer.set_status_code(status_code); }