Failure strategy
We need to adopt a more formal failure strategy for transient operations. Basically, any transient operation can result in three outcomes:
- Success
- Failure
- Timeout
As a long term goal, I believe we should encapsulate any such transient requests in an object container and specify what happens exactly in of the three cases. This would probably require a lot of asynchronous design re-tooling for functions that expect synchronous responses.
This issue is prevalent most in Guide and Focus modules, where sometimes the module keeps retrying almost indefinitely without actually failing. This might not allow external controls (e.g. scheduler) to take corrective actions to reset the sequence. Please share your thoughts on this. Shall we begin by ensuring the modules DO fail when they need to instead of retrying needlessly, or shall we work on creating the infrastructure for transient operations and then apply such cases to it?