From 6fca1851d371dcd8c176ff59a665a19c704a6719 Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Mon, 18 Apr 2022 10:25:05 -0700 Subject: [PATCH 1/3] async --- CHANGELOG.md | 3 +++ .../src/opentelemetry/sdk/_metrics/instrument.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b5069a4b9b..6696e2c7633 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v1.11.0-0.30b0...HEAD) +- Fix unhandled callback exceptions on async instruments + ([#2602](https://github.com/open-telemetry/opentelemetry-python/pull/2602)) + ## [1.11.0-0.30b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.11.0-0.30b0) - 2022-04-18 - Add support for zero or more callbacks diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/instrument.py b/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/instrument.py index c6e6e4c273b..831dee44391 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/instrument.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/instrument.py @@ -97,6 +97,10 @@ def callback(self) -> Iterable[Measurement]: ) except StopIteration: pass + except Exception: # pylint: disable=broad-except + _logger.warning( + "Callback failed for instrument %s.", self.name + ) class Counter(_Synchronous, APICounter): From 47c0af8062b417f7cf4d543e39a37a4b5dbd99a7 Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Mon, 18 Apr 2022 11:01:23 -0700 Subject: [PATCH 2/3] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6696e2c7633..4ff73c1c25a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v1.11.0-0.30b0...HEAD) - Fix unhandled callback exceptions on async instruments - ([#2602](https://github.com/open-telemetry/opentelemetry-python/pull/2602)) + ([#2614](https://github.com/open-telemetry/opentelemetry-python/pull/2614)) ## [1.11.0-0.30b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.11.0-0.30b0) - 2022-04-18 From ea9ca2af0e474aab974766fd5ff22ebf7a97fbb8 Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Mon, 18 Apr 2022 12:04:10 -0700 Subject: [PATCH 3/3] exception --- opentelemetry-sdk/src/opentelemetry/sdk/_metrics/instrument.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/instrument.py b/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/instrument.py index 831dee44391..260a9a77670 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/instrument.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/instrument.py @@ -98,7 +98,7 @@ def callback(self) -> Iterable[Measurement]: except StopIteration: pass except Exception: # pylint: disable=broad-except - _logger.warning( + _logger.exception( "Callback failed for instrument %s.", self.name )