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())

Reply via email to