Skip to content

Conversation

@imobachgs
Copy link
Contributor

@imobachgs imobachgs commented May 23, 2025

Problem

Follow-up of #2379.

It is a known problem that the software service can get blocked at several stages and it has an impact in the UI and the CLI. We handled part of that problem in #2364 and #2379, but there are still some cases that are not handled properly.

For instance, during software probing, Agama is not able to return the current progress.

Solution

This PR implements a new ProgressService which handles and caches the progress for any service.

Apart from caching the progress, it offers a centralized way of keeping track of the progress, listening for changes in single place (instead of building and processing an stream of events for each of the services).

The service uses Tokio channels and message passing to share the state.

As part of this change, I have decided to introduce a new ProgressChanged signal, which carries the information we need, instead of relying on the generic PropertiesChanged.

Testing

@coveralls
Copy link

coveralls commented May 23, 2025

Coverage Status

coverage: 62.765% (-0.01%) from 62.776%
when pulling 9fcfb7f on non-blocking-progress
into e2fe591 on master.

@imobachgs imobachgs marked this pull request as ready for review May 23, 2025 12:00
@imobachgs imobachgs merged commit 316b014 into master May 23, 2025
15 checks passed
@imobachgs imobachgs deleted the non-blocking-progress branch May 23, 2025 12:27
imobachgs added a commit that referenced this pull request May 23, 2025
Fix a wrong call to start_progress_with_descriptions (introduced in
#2389).
@imobachgs imobachgs mentioned this pull request May 26, 2025
imobachgs added a commit that referenced this pull request May 26, 2025
bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request May 27, 2025
https://build.opensuse.org/request/show/1280489
by user IGonzalezSosa + anag_factory
- Version 15

- Proper handling of WebSocket secure connections (gh#agama-project/agama#2391):
  - "agama monitor" does not use "insecure" by default.
  - Do not encrypt the connection when using ws: URLs.

- Cache progress reporting to avoid blocking the clients
  (gh#agama-project/agama#2389).

- Update schema of the storage model (gh#agama-project/agama#2346).

- Provide software conflicts HTTP API (gh#agama-project/agama#2348)

- Cache issues to avoid blocking the clients
  (gh#agama-project/agama#2379).

- Cache the software configuration and products in the web server,
  the software backend is blocked during package installation
  (bsc#1241208)

- Add support for bridge connections (gh#agama-project/agama#2258).

- Do not crash when network events do not contain "addresses",
  "nameserver
bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jun 13, 2025
…a SR 1282418

https://build.opensuse.org/request/show/1282418
by user IGonzalezSosa + anag_factory
- Propose to move existing connections to disk if there is no one
  to be persisted (custom config provided)
  (gh#agama-project/agama#2402).

- Copy Agama generated systemd network link files to the target
  system (bsc#1237327, bsc#1241969).

- Version 15

- Set stopOnBootMenu to "true" when a negative timeout is
  set in the bootloader section of an AutoYaST profile
  (bsc#1243623).

- Add checks to the storage config to avoid using wrong devices as
  target for boot partitions (gh#agama-project/agama#2390).

- Introduce a new ProgressChanged signal which should be used
  instead of PropertiesChanged (gh#agama-project/agama#2389).

- Properly report if registration failed when adding new libzypp
  service obtained from registration server (bsc#1238851)

- Allow to specify a software
imobachgs added a commit that referenced this pull request Jul 22, 2025
## Problem

When we introduced [the
ProgressService](#2389) we
stop logging the `ProgressChanged` events.

## Solution

Log those events too. Move the logic to log the events to a helper
function.

## Testing

- Tested manually
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants