From c06685b097a6f0996f00a407c610db5481a6ad19 Mon Sep 17 00:00:00 2001 From: Timothy Maxwell Date: Fri, 31 Jan 2025 15:20:22 -0800 Subject: [PATCH 1/3] Make trace_api.use_span() record BaseException as well as Exception --- .../src/opentelemetry/trace/__init__.py | 2 +- opentelemetry-api/tests/trace/test_globals.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/opentelemetry-api/src/opentelemetry/trace/__init__.py b/opentelemetry-api/src/opentelemetry/trace/__init__.py index d38a7bc8df4..19b728ec15a 100644 --- a/opentelemetry-api/src/opentelemetry/trace/__init__.py +++ b/opentelemetry-api/src/opentelemetry/trace/__init__.py @@ -590,7 +590,7 @@ def use_span( finally: context_api.detach(token) - except Exception as exc: # pylint: disable=broad-exception-caught + except BaseException as exc: # pylint: disable=broad-exception-caught if isinstance(span, Span) and span.is_recording(): # Record the exception as an event if record_exception: diff --git a/opentelemetry-api/tests/trace/test_globals.py b/opentelemetry-api/tests/trace/test_globals.py index f5475cb8eba..31358226b6a 100644 --- a/opentelemetry-api/tests/trace/test_globals.py +++ b/opentelemetry-api/tests/trace/test_globals.py @@ -133,6 +133,18 @@ class TestUseSpanException(Exception): self.assertEqual(test_span.recorded_exception, exception) + def test_use_span_base_exception(self): + class TestUseSpanBaseException(BaseException): + pass + + test_span = SpanTest(trace.INVALID_SPAN_CONTEXT) + exception = TestUseSpanBaseException("test exception") + with self.assertRaises(TestUseSpanBaseException): + with trace.use_span(test_span): + raise exception + + self.assertEqual(test_span.recorded_exception, exception) + def test_use_span_set_status(self): class TestUseSpanException(Exception): pass From 44a67552fd6dc904ac29a8dcef393a861fa2f904 Mon Sep 17 00:00:00 2001 From: Timothy Maxwell Date: Fri, 31 Jan 2025 15:44:30 -0800 Subject: [PATCH 2/3] Update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4af1d1a3561..20b4edf380e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ([#4361](https://github.com/open-telemetry/opentelemetry-python/pull/4361)) - semantic-conventions: Bump to 1.30.0 ([#4337](https://github.com/open-telemetry/opentelemetry-python/pull/4397)) +- Make `trace_api.use_span()` record `BaseException` as well as `Exception` + ([#4406](https://github.com/open-telemetry/opentelemetry-python/pull/4406)) ## Version 1.29.0/0.50b0 (2024-12-11) From 0c7ff6c892dfc87edd19e6cc9cd3711a4e543c0b Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Fri, 28 Feb 2025 11:28:32 +0100 Subject: [PATCH 3/3] Update CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02ca40af65d..f32fe98ecc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ([#4444](https://github.com/open-telemetry/opentelemetry-python/pull/4444)) - Updated `tracecontext-integration-test` gitref to `d782773b2cf2fa4afd6a80a93b289d8a74ca894d` ([#4448](https://github.com/open-telemetry/opentelemetry-python/pull/4448)) +- Make `trace_api.use_span()` record `BaseException` as well as `Exception` + ([#4406](https://github.com/open-telemetry/opentelemetry-python/pull/4406)) ## Version 1.30.0/0.51b0 (2025-02-03) @@ -39,8 +41,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ([#4361](https://github.com/open-telemetry/opentelemetry-python/pull/4361)) - semantic-conventions: Bump to 1.30.0 ([#4337](https://github.com/open-telemetry/opentelemetry-python/pull/4397)) -- Make `trace_api.use_span()` record `BaseException` as well as `Exception` - ([#4406](https://github.com/open-telemetry/opentelemetry-python/pull/4406)) ## Version 1.29.0/0.50b0 (2024-12-11)