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):