From eb5f7bc683fc961ec3b9a0a8511639962f367750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferenc=20G=C3=A9czi?= Date: Mon, 29 Jul 2024 12:00:01 +0000 Subject: [PATCH] fix: Prioritize trace level from current context MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ferenc Géczi --- src/instana/propagators/base_propagator.py | 4 ++-- src/instana/propagators/http_propagator.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/instana/propagators/base_propagator.py b/src/instana/propagators/base_propagator.py index a70d032d0..7c9d1fa6a 100644 --- a/src/instana/propagators/base_propagator.py +++ b/src/instana/propagators/base_propagator.py @@ -207,7 +207,7 @@ def __determine_span_context(self, trace_id, span_id, level, synthetic, tracepar return ctx - def __extract_instana_headers(self, dc): + def extract_instana_headers(self, dc): """ Search carrier for the *HEADER* keys and return the tracing key-values @@ -283,7 +283,7 @@ def extract(self, carrier, disable_w3c_trace_context=False): return None headers = {k.lower(): v for k, v in headers.items()} - trace_id, span_id, level, synthetic = self.__extract_instana_headers(dc=headers) + trace_id, span_id, level, synthetic = self.extract_instana_headers(dc=headers) if not disable_w3c_trace_context: traceparent, tracestate = self.__extract_w3c_trace_context_headers(dc=headers) diff --git a/src/instana/propagators/http_propagator.py b/src/instana/propagators/http_propagator.py index 00f4afbc1..4fa536d80 100644 --- a/src/instana/propagators/http_propagator.py +++ b/src/instana/propagators/http_propagator.py @@ -20,6 +20,10 @@ def __init__(self): def inject(self, span_context, carrier, disable_w3c_trace_context=False): trace_id = span_context.trace_id span_id = span_context.span_id + # Suppression `level` made in the child context or in the parent context + # has priority over any non-suppressed `level` setting + child_level = int(self.extract_instana_headers(carrier)[2] or "1") + span_context.level = min(child_level, span_context.level) serializable_level = str(span_context.level) if disable_w3c_trace_context: