Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-opentelemetry-sdk for
openSUSE:Factory checked in at 2026-11-03 17:53:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-opentelemetry-sdk (Old)
and /work/SRC/openSUSE:Factory/.python-opentelemetry-sdk.new.1257 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-opentelemetry-sdk"
Tue Nov 3 17:53:05 2026 rev:24 rq:1394630 version:1.45.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-opentelemetry-sdk/python-opentelemetry-sdk.changes
2026-09-30 16:23:24.412240408 +0200
+++
/work/SRC/openSUSE:Factory/.python-opentelemetry-sdk.new.1257/python-opentelemetry-sdk.changes
2026-11-03 17:53:38.074478010 +0100
@@ -1,0 +2,8 @@
+Sun Nov 1 15:12:22 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to 1.45.1:
+ * Fix thread leak in resource initialization for long
+ running resource detectors.
+ * Require opentelemetry-semantic-conventions 0.66b1.
+
+-------------------------------------------------------------------
Old:
----
opentelemetry_sdk-1.45.0.tar.gz
New:
----
opentelemetry_sdk-1.45.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-opentelemetry-sdk.spec ++++++
--- /var/tmp/diff_new_pack.rn19Ru/_old 2026-11-03 17:53:40.849593999 +0100
+++ /var/tmp/diff_new_pack.rn19Ru/_new 2026-11-03 17:53:40.852594124 +0100
@@ -26,7 +26,7 @@
%endif
%{?sle15_python_module_pythons}
Name: python-opentelemetry-sdk%{psuffix}
-Version: 1.45.0
+Version: 1.45.1
Release: 0
Summary: OpenTelemetry Python SDK
License: Apache-2.0
@@ -41,7 +41,7 @@
BuildRequires: %{python_module flaky}
BuildRequires: %{python_module jsonschema}
BuildRequires: %{python_module opentelemetry-sdk = %{version}}
-BuildRequires: %{python_module opentelemetry-test-utils = 0.66b0}
+BuildRequires: %{python_module opentelemetry-test-utils = 0.66b1}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module typing-extensions >= 4.5.0}
@@ -49,7 +49,7 @@
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-opentelemetry-api = %{version}
-Requires: python-opentelemetry-semantic-conventions = 0.66b0
+Requires: python-opentelemetry-semantic-conventions = 0.66b1
Requires: python-typing-extensions >= 4.5.0
BuildArch: noarch
%python_subpackages
++++++ opentelemetry_sdk-1.45.0.tar.gz -> opentelemetry_sdk-1.45.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/opentelemetry_sdk-1.45.0/PKG-INFO
new/opentelemetry_sdk-1.45.1/PKG-INFO
--- old/opentelemetry_sdk-1.45.0/PKG-INFO 2020-02-02 01:00:00.000000000
+0100
+++ new/opentelemetry_sdk-1.45.1/PKG-INFO 2020-02-02 01:00:00.000000000
+0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.5
Name: opentelemetry-sdk
-Version: 1.45.0
+Version: 1.45.1
Summary: OpenTelemetry Python SDK
Project-URL: Homepage,
https://github.com/open-telemetry/opentelemetry-python/tree/main/opentelemetry-sdk
Project-URL: Repository, https://github.com/open-telemetry/opentelemetry-python
@@ -19,11 +19,11 @@
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
Requires-Python: >=3.10
-Requires-Dist: opentelemetry-api==1.45.0
-Requires-Dist: opentelemetry-semantic-conventions==0.66b0
+Requires-Dist: opentelemetry-api==1.45.1
+Requires-Dist: opentelemetry-semantic-conventions==0.66b1
Requires-Dist: typing-extensions>=4.5.0
Provides-Extra: file-configuration
-Requires-Dist: opentelemetry-configuration==0.66b0; extra ==
'file-configuration'
+Requires-Dist: opentelemetry-configuration==0.66b1; extra ==
'file-configuration'
Description-Content-Type: text/x-rst
OpenTelemetry Python SDK
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/opentelemetry_sdk-1.45.0/pyproject.toml
new/opentelemetry_sdk-1.45.1/pyproject.toml
--- old/opentelemetry_sdk-1.45.0/pyproject.toml 2020-02-02 01:00:00.000000000
+0100
+++ new/opentelemetry_sdk-1.45.1/pyproject.toml 2020-02-02 01:00:00.000000000
+0100
@@ -26,8 +26,8 @@
"Typing :: Typed",
]
dependencies = [
- "opentelemetry-api == 1.45.0",
- "opentelemetry-semantic-conventions == 0.66b0",
+ "opentelemetry-api == 1.45.1",
+ "opentelemetry-semantic-conventions == 0.66b1",
"typing-extensions >= 4.5.0",
]
@@ -37,7 +37,7 @@
# existing `opentelemetry-sdk[file-configuration]` install lines keep
# working; new users should install `opentelemetry-configuration` directly.
file-configuration = [
- "opentelemetry-configuration == 0.66b0",
+ "opentelemetry-configuration == 0.66b1",
]
[project.entry-points.opentelemetry_environment_variables]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/opentelemetry_sdk-1.45.0/src/opentelemetry/sdk/resources/__init__.py
new/opentelemetry_sdk-1.45.1/src/opentelemetry/sdk/resources/__init__.py
--- old/opentelemetry_sdk-1.45.0/src/opentelemetry/sdk/resources/__init__.py
2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_sdk-1.45.1/src/opentelemetry/sdk/resources/__init__.py
2020-02-02 01:00:00.000000000 +0100
@@ -743,12 +743,10 @@
"""
detectors_merged_resource = initial_resource or Resource.create()
- # The executor is not used as a context manager: exiting it would call
- # `shutdown(wait=True)` and join still-running workers, so a detector that
- # blocks longer than `timeout` would hold up the whole call regardless of
- # `future.result(timeout=...)`. Shut down without waiting instead so the
- # timeout actually bounds this call. A detector that outlives the timeout
- # continues in its worker thread until detect() returns.
+ # A detector that exceeds `timeout` is skipped, but shutdown still joins
+ # its worker so no threads outlive this call. A detector that blocks
+ # indefinitely therefore blocks this call. `cancel_futures=True` drops
+ # detectors that have not started yet if a `raise_on_error` detector
raises.
executor = concurrent.futures.ThreadPoolExecutor(max_workers=4)
try:
futures = [executor.submit(detector.detect) for detector in detectors]
@@ -773,6 +771,6 @@
finally:
detectors_merged_resource =
detectors_merged_resource.merge(detected_resource)
finally:
- executor.shutdown(wait=False, cancel_futures=True)
+ executor.shutdown(wait=True, cancel_futures=True)
return detectors_merged_resource
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/opentelemetry_sdk-1.45.0/src/opentelemetry/sdk/version/__init__.py
new/opentelemetry_sdk-1.45.1/src/opentelemetry/sdk/version/__init__.py
--- old/opentelemetry_sdk-1.45.0/src/opentelemetry/sdk/version/__init__.py
2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_sdk-1.45.1/src/opentelemetry/sdk/version/__init__.py
2020-02-02 01:00:00.000000000 +0100
@@ -1,4 +1,4 @@
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0
-__version__ = "1.45.0"
+__version__ = "1.45.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/opentelemetry_sdk-1.45.0/tests/resources/test_resources.py
new/opentelemetry_sdk-1.45.1/tests/resources/test_resources.py
--- old/opentelemetry_sdk-1.45.0/tests/resources/test_resources.py
2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_sdk-1.45.1/tests/resources/test_resources.py
2020-02-02 01:00:00.000000000 +0100
@@ -7,6 +7,7 @@
import platform
import subprocess
import sys
+import threading
import time
import unittest
import uuid
@@ -472,14 +473,20 @@
resource_detector.raise_on_error = True
self.assertRaises(Exception, get_aggregated_resources,
[resource_detector])
- def test_aggregated_resources_timeout_bounds_wait(self):
- # A detector that takes longer than the timeout must not hold up the
- # call beyond the timeout: the skip warning fires, but the wait is
bounded.
+ def test_aggregated_resources_joins_detector_threads(self):
+ # A detector that takes longer than the timeout is skipped, but its
+ # worker thread must be joined before the call returns so no threads
+ # outlive resource creation.
+ worker_threads = []
+
+ def slow_detect():
+ worker_threads.append(threading.current_thread())
+ time.sleep(0.5)
+
resource_detector = Mock(spec=ResourceDetector)
- resource_detector.detect.side_effect = lambda: time.sleep(2)
+ resource_detector.detect.side_effect = slow_detect
resource_detector.raise_on_error = False
- start = time.time()
with self.assertLogs(level=WARNING) as log_entry:
self.assertEqual(
get_aggregated_resources(
@@ -489,10 +496,10 @@
),
_DEFAULT_RESOURCE,
)
- elapsed = time.time() - start
- self.assertLess(elapsed, 1.0)
self.assertIn("took longer than", log_entry.output[0])
+ self.assertEqual(len(worker_threads), 1)
+ self.assertFalse(worker_threads[0].is_alive())
def test_resource_detector_is_not_process_dependent_by_default(self):
self.assertFalse(DefaultResourceDetector().is_process_dependent())