UI shows loading screen for entire install while doing fully automated install

Bug #2063124 reported by Dan Bungert
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
subiquity
Triaged
Medium
Olivier Gayot
ubuntu-desktop-provision
Triaged
Undecided
Unassigned
subiquity (Ubuntu)
Triaged
Medium
Olivier Gayot

Bug Description

While testing build 20240422 of noble-desktop daily-live with a fully-automated install, I observed that the loading screen never moved on from "Preparing Ubuntu".

The install did complete successfully otherwise. During the install I observed that /meta/status was returning a RUNNING state.

Revision history for this message
Dan Bungert (dbungert) wrote :
Revision history for this message
Dan Bungert (dbungert) wrote :

A second install produced the same result. The first two installs used refresh-installer: {update: yes}.
A third install used refresh-installer: {update: no} and behave correctly.

Dennis observed the following:
> in subiquity-server-debug.log.3845 from your logs I see
> 2024-04-22 14:41:41,983 INFO root:38 start: subiquity/Meta/status_GET:
> which is not followed by a subiquity/Meta/status_GET: SUCCESS: 200 ...
> possibly what causes the broken state in the UI

Revision history for this message
Dan Bungert (dbungert) wrote :

I believe that Subiquity-side, on shutdown of the server process, the outstanding waiting API calls are returning null. This is outside the API contract of /meta/status, which claims to only return ApplicationStatus.

Changed in subiquity:
status: New → Triaged
importance: Undecided → Medium
Olivier Gayot (ogayot)
tags: added: foundations-todo
Dan Bungert (dbungert)
tags: added: fr-7714
Dan Bungert (dbungert)
Changed in subiquity (Ubuntu):
status: New → Triaged
importance: Undecided → Medium
Dan Bungert (dbungert)
Changed in subiquity:
assignee: nobody → Olivier Gayot (ogayot)
Changed in subiquity (Ubuntu):
assignee: nobody → Olivier Gayot (ogayot)
Dan Bungert (dbungert)
tags: removed: foundations-todo
Dan Bungert (dbungert)
tags: removed: fr-7714
Dan Bungert (dbungert)
tags: added: foundations-todo
Revision history for this message
Olivier Gayot (ogayot) wrote :

> I believe that Subiquity-side, on shutdown of the server process, the outstanding waiting API calls are returning null. This is outside the API contract of /meta/status, which claims to only return ApplicationStatus.

This is not exactly what I observed. On shutdown, it seems that the server simply closes the connection without replying to the query:

+ curl --unix-socket .subiquity/socket 'http://a/meta/status?cur="WAITING"' -v
* Trying .subiquity/socket:0...
* Connected to a (.subiquity/socket) port 80
> GET /meta/status?cur="WAITING" HTTP/1.1
> Host: a
> User-Agent: curl/8.5.0
> Accept: */*
>
* Empty reply from server
* Closing connection
curl: (52) Empty reply from server

Revision history for this message
Olivier Gayot (ogayot) wrote :

I believe the "null" status is internal to ubuntu-desktop-provision and is set as the result of the stream calling onError when the socket gets closed:

https://github.com/canonical/ubuntu-desktop-provision/blob/9957a5b31a5f4cb4cd5e94ac893f6af06750f98b/packages/subiquity_client/lib/src/status_monitor.dart#L57

Revision history for this message
Dennis Loose (dloose) wrote :

Thanks Olivier, you're right - the UI's status monitor currently enters a 'null' state which it can't recover from when subiquity restarts. We should probably handle this more gracefully and attempt to re-connect to subiquity a certain number of times.

Dennis Loose (dloose)
Changed in ubuntu-desktop-provision:
status: New → Triaged
Revision history for this message
Olivier Gayot (ogayot) wrote :

I merged https://github.com/canonical/subiquity/pull/1996 ; which documents what happens when the server restarts. TBD if further change in Subiquity is needed.

Olivier Gayot (ogayot)
tags: removed: foundations-todo
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.