To support threading mode in the applier, this patch switches taskflow
engine to serial when eventlet is not patched. This avoids an issue
caused by the multiple threads reading/writing Action objects when
running with parallel engine. This limitation should be adressed in
a different patch which may also require a refactoring in database api
and how watcher manages its sessions and contexts.
Changes:
1. Add InlineThread class
- Executes functions synchronously while maintaining thread interface
2. Use serial engine for threading mode
- Switches to taskflow serial engine when eventlet is not patched
3. Replace default GreenThreadPoolExecutor in TriggerActionPlan
- A new executor will be created based on the thread mode configured
4. Adds helper functions to spawn, start, wait and kill threads
- The thread will be handled based on the thread mode configured
5. Threading mode job and tox-threading updated to include applier
- These jobs will now enable threading mode for the applier content
and service
Assisted-By: claude-code sonnet-4.5
Co-Authored-By: Sean Mooney <work@seanmooney.info>
Change-Id: I85926cdd1e4393be42fe6d543af50bf2948b5ce6
Signed-off-by: Douglas Viroel <viroel@gmail.com>
16 lines
863 B
YAML
16 lines
863 B
YAML
---
|
|
features:
|
|
- |
|
|
The Applier service now supports running with ``native threading``
|
|
mode enabled as opposed to the use of the Eventlet library. Note that the
|
|
use of ``native threading`` is still ``experimental``, and is disabled by
|
|
default. It should not be used in production. To switch from Eventlet to
|
|
native threading mode, the environment variable
|
|
``OS_WATCHER_DISABLE_EVENTLET_PATCHING=true`` needs to be added to the
|
|
applier service configuration. When running in native threading mode, the
|
|
default workflow engine (Taskflow) will be configured with a serial engine,
|
|
which will execute the actions sequentially, due to a limitation of the
|
|
current implementation of watcher services.
|
|
For more information, please check `eventlet
|
|
removal <https://wiki.openstack.org/wiki/Eventlet-removal>`__ documentation.
|