Phasing on delivering SRU updates¶
Why we do phasing, how to check the current state and much more is well explained in the SRU docs and doesn’t need outlining again here. There also is a way to override auto-halting the phasing, needed when a package is detected as crashing more frequently or has a new crash but that this is actually a false positive. The override action can be performed by Archive Admins or SRU team members.
Why?¶
The delivery of an SRU is phased to allow detecting and holding back the
delivery of regressions that have made it to the -updates
pocket in spite of
verification in -proposed
prior to release to -updates
.
It can be triggered in two ways: automated and manual.
Automated phasing stops are triggered by
errors.ubuntu.com
. If it detects a spike of crash reports with a new version, or an altogether new crash with the new package version, phasing is auto-halted. The tooling sets the phasing to zero which can be seen in phased updates, and notifies the sponsor of the upload.Manual phasing stops are due to humans, usually either the developer that tracks their upload or a severe and urgent case of a
regression-update
bug. In this case an SRU team member or Archive Admin would set the phasing to zero, to stop delivering the potentially bad update.
In both cases it now needs to be investigated urgently to come to a conclusion, choosing between one of the following paths:
replace/remove:
If a fix is needed, the improved new version is likely not immediately ready and verified enough to be pushed to
-updates
(superseding the former). In that case the bad version should be removed from -updates and the former version restored.continue phasing:
If instead it turns out to be a false alarm, phasing can be continued.
How?¶
Once certain that it is the right step, phasing can be changed via
change-override
. The relevant arguments are similar to other actions with
change-override
. In addition use --percentage
to set the new phasing ratio.
We only deliver (and thereby phase) binaries, but we usually want to set this
consistently for all binaries at once for a given source package, so we’d
usually use --source-and-binary
.
For example, to hold the phasing of containerd-app
in noble-updates
and set
it back to zero (to no longer provide this update), you’d run:
./change-override --percentage 0 --suite noble-updates --source-and-binary containerd-app
Important
From the wiki page, import the i386 whitelist updates content