ITADN

Flaky opentelemetry-sdk tests

#5113Openxrmx 创建于 2026-04-16
X
xrmxcommented
It looks like there something off regarding the shutdown of a span processor and some issues with the metric exporter as seen in the following logs. The failures and the errors we have below looks unrelated though. ``` =================================== FAILURES =================================== __________ TestEventLoggerProvider.test_event_logger_provider_default __________ self = <tests.events.test_events.TestEventLoggerProvider testMethod=test_event_logger_provider_default> def test_event_logger_provider_default(self): logger_provider = LoggerProvider() set_logger_provider(logger_provider) event_logger_provider = EventLoggerProvider() > self.assertEqual( event_logger_provider._logger_provider, logger_provider, ) E AssertionError: <opentelemetry.sdk._logs._internal.LoggerProvider object at 0x7f4f07441690> != <opentelemetry.sdk._logs._internal.LoggerProvider object at 0x7f4f075e3070> opentelemetry-sdk/tests/events/test_events.py:45: AssertionError ------------------------------ Captured log call ------------------------------- WARNING opentelemetry._logs._internal:__init__.py:425 Overriding of current LoggerProvider is not allowed ________ TestParentChildSpanException.test_child_parent_span_exception _________ self = <tests.trace.test_trace.TestParentChildSpanException testMethod=test_child_parent_span_exception> def test_child_parent_span_exception(self): """ Tests that a child span does not have its status set to ERROR when a parent span raises an exception and the parent span has its ``record_exception`` and ``set_status_on_exception`` attributes set to ``False``. """ set_tracer_provider(TracerProvider()) tracer = get_tracer(__name__) exception = Exception("exception") child_span = None try: with tracer.start_as_current_span( "parent", record_exception=False, set_status_on_exception=False, ) as parent_span: with tracer.start_as_current_span( "child", ) as child_span: pass raise exception except Exception: # pylint: disable=broad-exception-caught pass > self.assertIsNotNone(child_span) E AssertionError: unexpectedly None opentelemetry-sdk/tests/trace/test_trace.py:2297: AssertionError ------------------------------ Captured log call ------------------------------- WARNING opentelemetry.trace:__init__.py:567 Overriding of current TracerProvider is not allowed ________ TestParentChildSpanException.test_parent_child_span_exception _________ self = <tests.trace.test_trace.TestParentChildSpanException testMethod=test_parent_child_span_exception> def test_parent_child_span_exception(self): """ Tests that a parent span has its status set to ERROR when a child span raises an exception even when the child span has its ``record_exception`` and ``set_status_on_exception`` attributes set to ``False``. """ set_tracer_provider(TracerProvider()) tracer = get_tracer(__name__) exception = Exception("exception") exception_type = exception.__class__.__name__ exception_message = exception.args[0] child_span = None try: with tracer.start_as_current_span( "parent", ) as parent_span: with tracer.start_as_current_span( "child", record_exception=False, set_status_on_exception=False, ) as child_span: raise exception except Exception: # pylint: disable=broad-exception-caught pass > self.assertIsNotNone(child_span) E AssertionError: unexpectedly None opentelemetry-sdk/tests/trace/test_trace.py:2249: AssertionError =========================== short test summary info ============================ FAILED opentelemetry-sdk/tests/events/test_events.py::TestEventLoggerProvider::test_event_logger_provider_default FAILED opentelemetry-sdk/tests/trace/test_trace.py::TestParentChildSpanException::test_child_parent_span_exception FAILED opentelemetry-sdk/tests/trace/test_trace.py::TestParentChildSpanException::test_parent_child_span_exception ================= 3 failed, 960 passed, 84 warnings in 24.26s ================== Exception ignored in atexit callback: <bound method TracerProvider.shutdown of <opentelemetry.sdk.trace.TracerProvider object at 0x7f4ef4c2be50>> Traceback (most recent call last): File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py", line 1443, in shutdown self._active_span_processor.shutdown() File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py", line 200, in shutdown sp.shutdown() File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py", line 302, in shutdown self._submit_and_await(lambda sp: sp.shutdown) File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py", line 279, in _submit_and_await future = self._executor.submit(func(sp), *args, **kwargs) File "/opt/hostedtoolcache/Python/3.10.20/x64/lib/python3.10/concurrent/futures/thread.py", line 167, in submit Error: raise RuntimeError('cannot schedule new futures after shutdown') RuntimeError: cannot schedule new futures after shutdown Exception ignored in atexit callback: <bound method TracerProvider.shutdown of <opentelemetry.sdk.trace.TracerProvider object at 0x7f4ef4c50160>> Traceback (most recent call last): File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py", line 1443, in shutdown self._active_span_processor.shutdown() File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py", line 200, in shutdown sp.shutdown() File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py", line 302, in shutdown self._submit_and_await(lambda sp: sp.shutdown) File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py", line 279, in _submit_and_await future = self._executor.submit(func(sp), *args, **kwargs) File "/opt/hostedtoolcache/Python/3.10.20/x64/lib/python3.10/concurrent/futures/thread.py", line 167, in submit Error: raise RuntimeError('cannot schedule new futures after shutdown') RuntimeError: cannot schedule new futures after shutdown Can't shutdown multiple times Can't shutdown multiple times Exception while exporting metrics Traceback (most recent call last): File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py", line 575, in _receive_metrics self._exporter.export( File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py", line 176, in export self.out.write(self.formatter(metrics_data)) ValueError: I/O operation on closed file. Exception while exporting metrics Traceback (most recent call last): File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py", line 575, in _receive_metrics self._exporter.export( File "/home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py", line 176, in export self.out.write(self.formatter(metrics_data)) ValueError: I/O operation on closed file. py310-test-opentelemetry-sdk: exit 1 (24.96 seconds) /home/runner/work/opentelemetry-python/opentelemetry-python> pytest /home/runner/work/opentelemetry-python/opentelemetry-python/opentelemetry-sdk/tests -ra pid=2423 py310-test-opentelemetry-sdk: FAIL code 1 (26.39=setup[1.43]+cmd[24.96] seconds) evaluation failed :( (27.37 seconds) ``` Example run https://github.com/open-telemetry/opentelemetry-python/actions/runs/24402949044/job/71282531351?pr=4646
0 条评论