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>