diff --git a/sentry_sdk/hub.py b/sentry_sdk/hub.py index 0d6d7fbc40..eab2fea111 100644 --- a/sentry_sdk/hub.py +++ b/sentry_sdk/hub.py @@ -805,7 +805,10 @@ def trace_propagation_meta(self, span=None): baggage = self.get_baggage() if baggage is not None: - meta += '' % (BAGGAGE_HEADER_NAME, baggage) + meta += '' % ( + BAGGAGE_HEADER_NAME, + baggage, + ) return meta diff --git a/sentry_sdk/integrations/flask.py b/sentry_sdk/integrations/flask.py index 47e96edd3c..61f2e315da 100644 --- a/sentry_sdk/integrations/flask.py +++ b/sentry_sdk/integrations/flask.py @@ -6,7 +6,7 @@ from sentry_sdk.integrations._wsgi_common import RequestExtractor from sentry_sdk.integrations.wsgi import SentryWsgiMiddleware from sentry_sdk.scope import Scope -from sentry_sdk.tracing import SENTRY_TRACE_HEADER_NAME, SOURCE_FOR_STYLE +from sentry_sdk.tracing import SOURCE_FOR_STYLE from sentry_sdk.utils import ( capture_internal_exceptions, event_from_exception, @@ -93,22 +93,13 @@ def sentry_patched_wsgi_app(self, environ, start_response): def _add_sentry_trace(sender, template, context, **extra): # type: (Flask, Any, Dict[str, Any], **Any) -> None - if "sentry_trace" in context: return - sentry_span = Hub.current.scope.span - context["sentry_trace"] = ( - Markup( - '' - % ( - SENTRY_TRACE_HEADER_NAME, - sentry_span.to_traceparent(), - ) - ) - if sentry_span - else "" - ) + hub = Hub.current + trace_meta = Markup(hub.trace_propagation_meta()) + context["sentry_trace"] = trace_meta # for backwards compatibility + context["sentry_trace_meta"] = trace_meta def _set_transaction_name_and_source(scope, transaction_style, request): diff --git a/tests/integrations/flask/test_flask.py b/tests/integrations/flask/test_flask.py index 097edd48c2..0e66c7507a 100644 --- a/tests/integrations/flask/test_flask.py +++ b/tests/integrations/flask/test_flask.py @@ -806,22 +806,33 @@ def dispatch_request(self): assert event["transaction"] == "hello_class" -def test_sentry_trace_context(sentry_init, app, capture_events): - sentry_init(integrations=[flask_sentry.FlaskIntegration()]) +@pytest.mark.parametrize( + "template_string", ["{{ sentry_trace }}", "{{ sentry_trace_meta }}"] +) +def test_sentry_trace_context(sentry_init, app, capture_events, template_string): + sentry_init(integrations=[flask_sentry.FlaskIntegration()], traces_sample_rate=1.0) events = capture_events() @app.route("/") def index(): - sentry_span = Hub.current.scope.span - capture_message(sentry_span.to_traceparent()) - return render_template_string("{{ sentry_trace }}") + hub = Hub.current + capture_message(hub.get_traceparent() + "\n" + hub.get_baggage()) + return render_template_string(template_string) with app.test_client() as client: response = client.get("/") assert response.status_code == 200 - assert response.data.decode( - "utf-8" - ) == '' % (events[0]["message"],) + + rendered_meta = response.data.decode("utf-8") + traceparent, baggage = events[0]["message"].split("\n") + expected_meta = ( + '' + % ( + traceparent, + baggage, + ) + ) + assert rendered_meta == expected_meta def test_dont_override_sentry_trace_context(sentry_init, app):