bootc-dev / bootc-dev/bootc

Rollback after bootc switch sets rollback deployment as default

Open
#946 2 comments 0 reactions 0 assignees View on GitHub
area/client bug
Dominant language
Rust
Stars
2.3k
Forks
230
Avg merge
3d 12h
Merged PRs (30d)
38

Description

On a fresh boot (no previous updates), running the following results in rebooting into the rollback deployment instead of the booted one

When calling rollback after switch, we expect to throw away the staged deployment. But instead, rollback throws it away and then sets the rollback deployment as default.

Bootc is built from https://github.com/containers/bootc/pull/921

```bash
bazzite@antheas-ally-x:~$ sudo ./bootc status
● Booted image: ghcr.io/ublue-os/bazzite-deck:testing
Digest: sha256:fbbeb28c7cc5c6d3240e8d019e9160f6796920c3f3d86305970d3f2729d94e75
Version: testing-41.20241204.4 (2024-12-05 02:55:02 UTC)

Rollback image: ghcr.io/ublue-os/bazzite-deck:stable
Digest: sha256:f44bebbf15932d9edc4e0b28b91614be1e172dba004c0cad6f7a3d46c00837eb
Version: 41.20241125 (2024-11-26 03:48:17 UTC)

# Rebase (notice indicator here is wrong; ball should be in staged)
bazzite@antheas-ally-x:~$ sudo ./bootc switch ghcr.io/ublue-os/bazzite-deck:testing-41.20241204.3
bazzite@antheas-ally-x:~$ sudo ./bootc status
Staged image: ghcr.io/ublue-os/bazzite-deck:testing-41.20241204.3
Digest: sha256:0f0c2d9eb66102d0878030853e5ffeb8b3360ece0fa6879c2e3b9db03eb31fe1
Version: testing-41.20241204.3 (2024-12-05 01:56:42 UTC)

● Booted image: ghcr.io/ublue-os/bazzite-deck:testing
Digest: sha256:fbbeb28c7cc5c6d3240e8d019e9160f6796920c3f3d86305970d3f2729d94e75
Version: testing-41.20241204.4 (2024-12-05 02:55:02 UTC)

Rollback image: ghcr.io/ublue-os/bazzite-deck:stable
Digest: sha256:f44bebbf15932d9edc4e0b28b91614be1e172dba004c0cad6f7a3d46c00837eb
Version: 41.20241125 (2024-11-26 03:48:17 UTC)

# Rollback, here again indicator is stuck on booted, but status --json lists next deployment to be rollback
bazzite@antheas-ally-x:~$ sudo ./bootc rollback
Next boot: rollback deployment
bazzite@antheas-ally-x:~$ sudo ./bootc status
● Booted image: ghcr.io/ublue-os/bazzite-deck:testing
Digest: sha256:fbbeb28c7cc5c6d3240e8d019e9160f6796920c3f3d86305970d3f2729d94e75
Version: testing-41.20241204.4 (2024-12-05 02:55:02 UTC)

Rollback image: ghcr.io/ublue-os/bazzite-deck:stable
Digest: sha256:f44bebbf15932d9edc4e0b28b91614be1e172dba004c0cad6f7a3d46c00837eb
Version: 41.20241125 (2024-11-26 03:48:17 UTC)
```

Here are the status jsons before and after the switch
```
bazzite@antheas-ally-x:~$ sudo ./bootc status --json
{"apiVersion":"org.containers.bootc/v1","kind":"BootcHost","metadata":{"name":"host"},"spec":{"image":{"image":"ghcr.io/ublue-os/bazzite-deck:testing-41.20241204.3","transport":"registry"},"bootOrder":"default"},"status":{"staged":{"image":{"image":{"image":"ghcr.io/ublue-os/bazzite-deck:testing-41.20241204.3","transport":"registry"},"version":"testing-41.20241204.3","timestamp":"2024-12-05T01:56:42Z","imageDigest":"sha256:0f0c2d9eb66102d0878030853e5ffeb8b3360ece0fa6879c2e3b9db03eb31fe1"},"cachedUpdate":null,"incompatible":false,"pinned":false,"store":"ostreeContainer","ostree":{"checksum":"7f3937d3e9906f383a234b1fc82ebe01c79eda2242eac412973ee31c71fa6975","deploySerial":0}},"booted":{"image":{"image":{"image":"ghcr.io/ublue-os/bazzite-deck:testing","transport":"registry"},"version":"testing-41.20241204.4","timestamp":"2024-12-05T02:55:02Z","imageDigest":"sha256:fbbeb28c7cc5c6d3240e8d019e9160f6796920c3f3d86305970d3f2729d94e75"},"cachedUpdate":null,"incompatible":false,"pinned":false,"store":"ostreeContainer","ostree":{"checksum":"d4dabc03bbbda6ecee9e6b155c8657dc8fa28c718907c6553923aed279169ad8","deploySerial":1}},"rollback":{"image":{"image":{"image":"ghcr.io/ublue-os/bazzite-deck:stable","transport":"registry"},"version":"41.20241125","timestamp":"2024-11-26T03:48:17Z","imageDigest":"sha256:f44bebbf15932d9edc4e0b28b91614be1e172dba004c0cad6f7a3d46c00837eb"},"cachedUpdate":null,"incompatible":false,"pinned":false,"store":"ostreeContainer","ostree":{"checksum":"cc5ea15f6591d3e039bcf20d7f89130f1e2a8de29937d123e3db060696525c21","deploySerial":0}},"rollbackQueued":false,"type":"bootcHost"}}
sudo ./bootc status --json
{"apiVersion":"org.containers.bootc/v1","kind":"BootcHost","metadata":{"name":"host"},"spec":{"image":{"image":"ghcr.io/ublue-os/bazzite-deck:testing","transport":"registry"},"bootOrder":"rollback"},"status":{"staged":null,"booted":{"image":{"image":{"image":"ghcr.io/ublue-os/bazzite-deck:testing","transport":"registry"},"version":"testing-41.20241204.4","timestamp":"2024-12-05T02:55:02Z","imageDigest":"sha256:fbbeb28c7cc5c6d3240e8d019e9160f6796920c3f3d86305970d3f2729d94e75"},"cachedUpdate":null,"incompatible":false,"pinned":false,"store":"ostreeContainer","ostree":{"checksum":"d4dabc03bbbda6ecee9e6b155c8657dc8fa28c718907c6553923aed279169ad8","deploySerial":1}},"rollback":{"image":{"image":{"image":"ghcr.io/ublue-os/bazzite-deck:stable","transport":"registry"},"version":"41.20241125","timestamp":"2024-11-26T03:48:17Z","imageDigest":"sha256:f44bebbf15932d9edc4e0b28b91614be1e172dba004c0cad6f7a3d46c00837eb"},"cachedUpdate":null,"incompatible":false,"pinned":false,"store":"ostreeContainer","ostree":{"checksum":"cc5ea15f6591d3e039bcf20d7f89130f1e2a8de29937d123e3db060696525c21","deploySerial":0}},"rollbackQueued":true,"type":"bootcHost"}}
```

The issue was verified by rebooting and ending up in the rollback deployment.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.