From my observations, there are two separate aspects to this.
First, subiquity waits for cloud-init (it takes ~30 seconds to complete in my runs). I'm not sure if there is any way to reduce this delay.
Perhaps more importantly tough, after Subiquity reports {"state": "WAITING"}, it still takes 30 more seconds until the loading animation is shown.
It looks like the UI is blocking (without a visible animation) until Subiquity sends a response to /refresh ; which times out after 30 seconds when the network is down:
From my observations, there are two separate aspects to this.
First, subiquity waits for cloud-init (it takes ~30 seconds to complete in my runs). I'm not sure if there is any way to reduce this delay.
Perhaps more importantly tough, after Subiquity reports {"state": "WAITING"}, it still takes 30 more seconds until the loading animation is shown.
It looks like the UI is blocking (without a visible animation) until Subiquity sends a response to /refresh ; which times out after 30 seconds when the network is down:
24-04-05 12:24:15,379 DEBUG root:30 start: subiquity/ Refresh/ check_for_ update: utils:119 arun_command called: ['/usr/sbin/realm', 'discover'] OEM/load_ metapackages_ list: OEM/load_ metapackages_ list/wait_ confirmation: Install/ install: Filesystem/ _probe: Filesystem/ _probe/ probe_once: restricted=False Meta/status_ GET: Meta/status_ GET: SUCCESS: 200 {"state": "WAITING", "confirming_tty": "", "error": null, "nonreportable_ erro... Meta/client_ variant_ POST: Meta/client_ variant_ POST: SUCCESS: 200 null Refresh/ GET: connectionpool: 453 http:// localhost:None "GET /v2/snaps/ ubuntu- desktop- bootstrap HTTP/1.1" 200 1348 Refresh/ configure_ snapd/get_ details: SUCCESS: current version of snap is: '0+git.046d4c30' server. controllers. refresh: 139 snap tracking , not resetting based on .disk/info Refresh/ configure_ snapd: SUCCESS:
2024-04-05 12:24:15,380 DEBUG subiquitycore.
2024-04-05 12:24:15,396 DEBUG root:30 start: subiquity/
2024-04-05 12:24:15,396 DEBUG root:30 start: subiquity/
2024-04-05 12:24:15,396 DEBUG root:30 start: subiquity/
2024-04-05 12:24:15,397 DEBUG root:30 start: subiquity/
2024-04-05 12:24:15,397 DEBUG root:30 start: subiquity/
2024-04-05 12:24:15,398 DEBUG asyncio:54 Using selector: EpollSelector
2024-04-05 12:24:15,400 INFO root:30 start: subiquity/
2024-04-05 12:24:15,401 INFO root:30 finish: subiquity/
2024-04-05 12:24:15,425 INFO root:30 start: subiquity/
2024-04-05 12:24:15,426 INFO root:30 finish: subiquity/
2024-04-05 12:24:15,426 DEBUG root:30 start: subiquity/
2024-04-05 12:24:15,445 DEBUG urllib3.
2024-04-05 12:24:15,461 DEBUG root:30 finish: subiquity/
2024-04-05 12:24:15,462 DEBUG subiquity.
2024-04-05 12:24:15,462 DEBUG root:30 finish: subiquity/
[...]
2024-04-05 12:24:48,179 DEBUG urllib3. connectionpool: 453 http:// localhost:None "GET /v2/find? select= refresh HTTP/1.1" 500 234 server. controllers. refresh: 197 checking for snap update failed ubuntu- desktop- bootstrap/ 75/bin/ subiquity/ subiquity/ server/ controllers/ refresh. py", line 195, in check_for_update snapdapi. v2.find. GET(select= "refresh" ) ubuntu- desktop- bootstrap/ 75/bin/ subiquity/ subiquity/ common/ api/client. py", line 47, in impl ubuntu- desktop- bootstrap/ 75/usr/ lib/python3. 10/contextlib. py", line 199, in __aenter__ ubuntu- desktop- bootstrap/ 75/bin/ subiquity/ subiquity/ server/ snapdapi. py", line 298, in make_request get(path[ 1:], **params) ubuntu- desktop- bootstrap/ 75/bin/ subiquity/ subiquitycore/ snapd.py" , line 226, in get raise_for_ status( ) ubuntu- desktop- bootstrap/ 75/usr/ lib/python3/ dist-packages/ requests/ models. py", line 943, in raise_for_status http_error_ msg, response=self) exceptions. HTTPError: 500 Server Error: Internal Server Error for url: http+unix: //%2Frun% 2Fsnapd. socket/ v2/find? select= refresh Refresh/ check_for_ update: SUCCESS: checking for snap update failed Refresh/ GET: SUCCESS: 200 {"availability": "UNKNOWN", "current_ snap_version" : "0+git.046d4c30", "new_sn...
2024-04-05 12:24:48,182 ERROR subiquity.
Traceback (most recent call last):
File "/snap/
result = await self.app.
File "/snap/
async with make_request(
File "/snap/
return await anext(self.gen)
File "/snap/
content = await async_snapd.
File "/snap/
response.
File "/snap/
raise HTTPError(
requests.
2024-04-05 12:24:48,187 DEBUG root:30 finish: subiquity/
2024-04-05 12:24:48,188 DEBUG root:30 finish: subiquity/
I think this call should be made a non-blocking call (non-blocking from the UI standpoint that is)