• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

agama-project / agama / 15191629254
72%

Build:
DEFAULT BRANCH: master
Ran 22 May 2025 04:23PM UTC
Jobs 3
Files 530
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 May 2025 04:14PM UTC coverage: 62.626% (-0.2%) from 62.794%
15191629254

push

github

web-flow
feat: non-blocking and centralized issues (#2379)

## Problem

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 mitigated
that problem in #2364 but there are still some cases that are not
handled properly.

For instance, during software probing, Agama is not able to return the
list of issues. we could argue whether the list of issues is still
valid, but that's a different topic. At least, Agama should return
something.

## Solution

This PR implements a new `IssuesService` which handles and caches the
issues for any service. At this point, it is only used by the software
service, but the idea is to use it from all the services.

Apart from caching the issues, it offers a centralized way of keeping
track of the issues, listening for changes in single place (instead of
building and processing an stream of events for each of the services).
For instance, the iSCSI API was not emitting the `IssuesChanged` events
because we forgot to add the call to `issues_stream`. Now, it is done
automatically.

The service uses [Tokio
channels](https://tokio.rs/tokio/tutorial/channels) and message passing
to [share the state](https://tokio.rs/tokio/tutorial/shared-state).

> [!NOTE]
> The problem is not fully solved because the "can_install" function
still relies on D-Bus, which still blocks.

## Testing

- Tested manually

## Tasks

- [x] Implement an IssuesService.
- [x] Emit the events from the service itself.
- [x] Adopt `IssuesService` in other services.

## Follow ups

Most probably, we should implement a mechanism like this for progress
tracking too, although given to the amount of progress signals it is
rarely a problem.

92 of 132 branches covered (69.7%)

Branch coverage included in aggregate %.

0 of 35 new or added lines in 5 files covered. (0.0%)

24 existing lines in 1 file now uncovered.

10949 of 17498 relevant lines covered (62.57%)

42.73 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
1
0.0
0.0% rust/agama-server/src/storage/web/iscsi.rs
5
0.0
0.0% rust/agama-server/src/web.rs
5
0.0
0.0% rust/agama-utils/src/dbus.rs
7
0.0
rust/agama-server/src/web/common/issues.rs
17
0.0
0.0% rust/agama-lib/src/issue.rs

Uncovered Existing Lines

Lines Coverage ∆ File
24
0.0
0.0% rust/agama-lib/src/software/client.rs
Subprojects
ID Flag name Job ID Ran Files Coverage
3 rust 15191629254.3 22 May 2025 04:23PM UTC 117
1.34
GitHub Action Run
2 service 15105665303.2 19 May 2025 06:19AM UTC 377
89.12
GitHub Action Run
3 web 15190028538.3 22 May 2025 03:02PM UTC 36
82.3
GitHub Action Run
Source Files on build 15191629254
  • Tree
  • List 530
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #15191629254
  • 7ba2a452 on github
  • Prev Build on master (#15190028538)
  • Next Build on master (#15203364908)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc