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>
Watcher
OpenStack Watcher provides a flexible and scalable resource optimization service for multi-tenant OpenStack-based clouds. Watcher provides a robust framework to realize a wide range of cloud optimization goals, including the reduction of data center operating costs, increased system performance via intelligent virtual machine migration, increased energy efficiency and more!
- Free software: Apache license
- Wiki: https://wiki.openstack.org/wiki/Watcher
- Source: https://opendev.org/openstack/watcher
- Bugs: https://bugs.launchpad.net/watcher
- Documentation: https://docs.openstack.org/watcher/latest/
- Release notes: https://docs.openstack.org/releasenotes/watcher/
- Design specifications: https://specs.openstack.org/openstack/watcher-specs/
Description
Languages
Python
99.7%
Shell
0.3%