Description
The orchestrator can receive a timeout when it's first called. When it calls the evaluator, it can supply a timeout of (timeout - time_elapsed_so_far). Likewise, the evaluator can do the same when it makes reentrant calls to the orchestrator.
Desired behavior/Acceptance criteria (returned value, expected error, performance expectations, etc.)
- have a discussion about this solution!
- if this solution is decided on, then ...
- allow each backend service to track time elapsed between being called and calling back to another service
- timeout propagated should be the difference between the original timeout and time elapsed
- if time elapsed exceeds timeout, we just straight-up shouldn't call the other service
- if this solution is rejected, then ...
- figure out how to obviate fork bombs with reentrant functions
- if this solution is decided on, then ...
Remove all the non-applicable tags from the "Tags" field, leave only the tags of the projects/repositories related to this task
Completion checklist
- Extend the orchestrator<->evaluator API to track the remaining time
- Change the orchestrator to use this new API to adjust time tracking
- Change the evaluator to use this new API to adjust time tracking
- Have the terminate evaluation when the timer runs out
- Allow the starting timer to be configured
- Before closing this task, review one by one the checklist available here: https://www.mediawiki.org/wiki/Abstract_Wikipedia_team/Definition_of_Done#Back-end_Task/Bug_completion_checklist