getsentry / sentry-python

The official Python SDK for Sentry.io
https://sentry.io/for/python/
MIT License
1.93k stars 509 forks source link

Unpack custom_sampling_context into attributes in ASGI #3764

Closed sentrivana closed 1 week ago

sentrivana commented 1 week ago

Replace custom_sampling_context={"asgi_scope": scope} with several span attributes. Also, add sampling_context["transaction_context"]["source"], which was previously missing.

With the switch to OTel, custom_sampling_context can't continue to work as before. We've opted for making all necessary data accessible in the traces_sampler via span attributes instead. In order to use span attributes, we need to unpack any objects with serializable OTel-friendly data.

Part of https://github.com/getsentry/sentry-python/issues/3746

codecov[bot] commented 1 week ago

:x: 1613 Tests Failed:

Tests completed Failed Passed Skipped
19831 1613 18218 4413
View the top 1 failed tests by shortest run time > > ```python > tests.test_utils test_datetime_from_isoformat[2021-01-01T00:00:00.000000-00:00-expected_output4] > ``` > >
Stack Traces | 0.001s run time > > > > > ```python > > tests/test_utils.py:109: in test_datetime_from_isoformat > > assert datetime_from_isoformat(input_str) == expected_output, input_str > > E NameError: name 'datetime_from_isoformat' is not defined > > ``` > >

View the full list of 2 :snowflake: flaky tests > > ```python > tests.test_utils test_datetime_from_isoformat[2021-01-01T00:00:00.000000-0000-expected_output6] > ``` > > **Flake rate in main:** 50.00% (Passed 32 times, Failed 32 times) >
Stack Traces | 0.001s run time > > > > > ```python > > tests/test_utils.py:109: in test_datetime_from_isoformat > > assert datetime_from_isoformat(input_str) == expected_output, input_str > > E NameError: name 'datetime_from_isoformat' is not defined > > ``` > >
tests.test_scope test_with_isolation_scope_data

Flake rate in main: 99.11% (Passed 2 times, Failed 223 times)

Stack Traces | 0.001s run time > > ```python > tests/test_scope.py:387: in test_with_isolation_scope_data > assert scope._tags == {"before_isolation_scope": 1} > E AssertionError: assert {} == {'before_isolation_scope': 1} > E > E Right contains 1 more item: > E {'before_isolation_scope': 1} > E > E Full diff: > E + {} > E - { > E - 'before_isolation_scope': 1, > E - } > ```

To view more test analytics, go to the Test Analytics Dashboard Got feedback? Let us know on Github

sentrivana commented 1 week ago

Making this a draft, will try to fix sampler-related asgi tests here too