Running actions by engine
Now:
Mistral actions can be run only by executors. Needed action information must be sent to an executor over RPC. In many cases this additional RPC overhead is bigger than the action execution time itself. So it doesn't make a lot of sense to have this overhead at all. Additionally, an RPC call reduces reliability and exposes more opportunities for outages/errors.
The goal:
Mistral should be able to run actions run on the engine side. This behavior should either be configured in the configuration and/or be part of an action property.
Solution ideas:
* Add a configuration option to allow action to run on the engine side
* Add an action property that says that the action must run on executor only ("target" is what we can use here)
Testing:
* Unit tests to run actions w/o executors
Questions:
Notes:
* After running an action on the engine side engine still needs to put a message into an engine queue so that possible a different engine instance could process action result
* Engine can actually store an action immediately itself into DB. And send just a notification to MQ that a next task needs to be processed (e.g. on_action_
Blueprint information
- Status:
- Complete
- Approver:
- Renat Akhmerov
- Priority:
- High
- Drafter:
- Renat Akhmerov
- Direction:
- Approved
- Assignee:
- Winson Chan
- Definition:
- Approved
- Series goal:
- Accepted for pike
- Implementation:
- Implemented
- Milestone target:
- pike-2
- Started by
- Renat Akhmerov
- Completed by
- Renat Akhmerov
Related branches
Related bugs
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
Add option to run actions locally on the engine
Addressed by: https:/
Move EventEngine to event_engine base