Unreleased Release Notes¶
4.4.1-8¶
New Features¶
The oslo.service implements the required signal hanlders when service is launched in the main process. The below signals are captured and their respective handles are called:
SIGTERMSIGINTSIGHUPSIGALRM
Added oslo_service._multiprocessing module providing
get_spawn_context()andget_spawn_pool()utilities. These enforce thespawnstart method to avoid fork-inherited lock deadlocks, as explained in: https://pythonspeed.com/articles/python-multiprocessing/
The threading backend now supports the
spawnmultiprocessing start method. If a service is spawn-safe (picklable),spawnwill be used as the default start method. Otherwise, the backend will automatically fall back toforkif available. This prevents inherited threading locks during worker respawn and improves compatibility with Python 3.12+.For more information about spawn-safe services, see spawn.
Bug Fixes¶
oslo.service SignalHanlder in
Threadingbackend execute the signal handlers in a new thread, which does not work because the signal only works in the main thread. This issue has been fixed now by executing the signal handlers in the main thread.
4.4.1¶
Upgrade Notes¶
The
ThreadGroup.max_threadsattribute has been restored for backward compatibility. It previously disappeared during the backend refactor (commit8c74d0718dc11ed5), which caused consumers such as Heat to fail when upgrading to oslo.service 4.4.0. The attribute now maps tothread_pool_sizeand emits aDeprecationWarning. Applications should migrate tothread_pool_size. The deprecated attribute may be removed in a future release.
4.4.0¶
Upgrade Notes¶
Support for Python 3.9 has been removed. Now the minimum python version supported is 3.10.
The
oslo.service.wsgi.Serverclass now includes backend compatibility checks to prevent improper usage with the threading backend. Applications using the threading backend that attempt to instantiate the WSGI Server will now receive an immediateUnsupportedBackendErrorexception with a clear error message.This is an intentional breaking change to prevent potential runtime issues and security concerns that could arise from using a component designed for eventlet in a threading environment. The fail-fast behavior ensures that applications using the threading backend are guided towards the correct deployment patterns.
Migration Path: Users should migrate to deploying their WSGI applications using standard WSGI servers such as
uwsgi,gunicorn, or similar alternatives instead of relying on the deprecated oslo.service WSGI server.