* daemon: establish a cancelation chain for incoming API requests
Establish a cancelation chain for incoming API requests, to ensure orderly
shutdown. This prevents a situation in which an API request, such as notices
wait can block snapd shtudown for a long time.
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
* daemon: return 500 when the request context gets canceled
Request's can be canceled based on the code actually issuing a cancel on the
associted context, hence an Internal Server Error seems more appropriate.
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
* o/snapstate: leave TODOs about using caller provided context
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
* daemon: pass down request context where possible
Pass the context from the API request further down.
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
* daemon: set context in snap instruction for many-snap operation
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
* daemon: pass context as an explicit parameter to request handlers
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
* daemon: pass context
Thanks to @ZeyadYasser
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
* daemon: comment on Start() taking a context.
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
* daemon: add unit tests targeting context passed to Start()
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
* daemon: drop unit test for hijacked context
The test isn't very useful. Another option to trigger this would be to call
Stop() without a prior call to Start(), but this segfaults on
d.standbyOpinions.Stop(), so it'c clear this needs a followup fix or callign
Stop() this way isn't supported.
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
---------
Signed-off-by: Maciej Borzecki <maciej.borzecki@canonical.com>
this helps avoiding passing *Command around which complicates exposing
helpers if they actually want to be tested
with this we don't need to export ThemesCmd to the tests anymore