Activity log for bug #1968729

Date Who What changed Old value New value Message
2022-04-12 13:09:17 Olivier Gayot bug added bug
2022-04-12 13:21:27 Olivier Gayot description It seems that cancelling HTTP calls from the client side of Subiquity end-up causing failures on the server side. It is easy to reproduce for the drivers controller but other components (such as storage, snaplist, ...) are also affected. HTTP calls are automatically cancelled on the client side when an asyncio.CancelledError is raised. This can happen for various reasons. One way to test how the server responds to such events is to use curl and send it a SIGINT (ctrl-c). The issue can be reproduced in dry-run mode: $ make dry-run $ curl --unix-socket .subiquity/socket 'http://a/drivers?wait=true' ^C $ tail .subiquity/subiquity-server-debug.log [...] 2022-04-12 12:59:21,268 DEBUG root:39 finish: subiquity/Refresh/check_for_update: SUCCESS: new version of snap available: '19.07.2' 2022-04-12 12:59:22,597 ERROR root:39 finish: subiquity/Drivers/_list_drivers/wait_apt: FAIL: cancelled 2022-04-12 12:59:22,597 ERROR root:39 finish: subiquity/Drivers/_list_drivers: FAIL: cancelled 2022-04-12 12:59:22,597 ERROR root:39 finish: subiquity/Drivers/GET: FAIL: cancelled $ curl --unix-socket .subiquity/socket 'http://a/drivers?wait=true' curl: (52) Empty reply from server $ tail .subiquity/subiquity-server-debug.log 2022-04-12 12:59:22,597 ERROR root:39 finish: subiquity/Drivers/_list_drivers: FAIL: cancelled 2022-04-12 12:59:22,597 ERROR root:39 finish: subiquity/Drivers/GET: FAIL: cancelled 2022-04-12 13:01:29,533 DEBUG root:39 start: subiquity/Drivers/GET: 2022-04-12 13:01:29,533 ERROR root:39 finish: subiquity/Drivers/GET: FAIL: cancelled The consequences vary from one controller to another, but in most cases it results in a crash in the installer or the GUI showing the progress screen indefinitely. It seems that cancelling HTTP calls from the client side of Subiquity end-up causing failures on the server side. It is easy to reproduce for the drivers controller but other components (such as storage, snaplist, ...) are also affected. Context: this happened to me in the storage controller when implementing cancellation of probing tasks in the end_ui() method. HTTP calls are automatically cancelled on the client side when an asyncio.CancelledError is raised. This can happen for various reasons. One way to test how the server responds to such events is to use curl and send it a SIGINT (ctrl-c). The issue can be reproduced in dry-run mode: $ make dry-run $ curl --unix-socket .subiquity/socket 'http://a/drivers?wait=true' ^C $ tail .subiquity/subiquity-server-debug.log [...] 2022-04-12 12:59:21,268 DEBUG root:39 finish: subiquity/Refresh/check_for_update: SUCCESS: new version of snap available: '19.07.2' 2022-04-12 12:59:22,597 ERROR root:39 finish: subiquity/Drivers/_list_drivers/wait_apt: FAIL: cancelled 2022-04-12 12:59:22,597 ERROR root:39 finish: subiquity/Drivers/_list_drivers: FAIL: cancelled 2022-04-12 12:59:22,597 ERROR root:39 finish: subiquity/Drivers/GET: FAIL: cancelled $ curl --unix-socket .subiquity/socket 'http://a/drivers?wait=true' curl: (52) Empty reply from server $ tail .subiquity/subiquity-server-debug.log 2022-04-12 12:59:22,597 ERROR root:39 finish: subiquity/Drivers/_list_drivers: FAIL: cancelled 2022-04-12 12:59:22,597 ERROR root:39 finish: subiquity/Drivers/GET: FAIL: cancelled 2022-04-12 13:01:29,533 DEBUG root:39 start: subiquity/Drivers/GET: 2022-04-12 13:01:29,533 ERROR root:39 finish: subiquity/Drivers/GET: FAIL: cancelled The consequences vary from one controller to another, but in most cases it results in a crash in the installer or the GUI showing the progress screen indefinitely.
2022-04-14 13:44:23 Olivier Gayot tags fr-2253