Koji 1.30.0 Release notes

All changes can be found in the roadmap. Most important changes are listed here.

Migrating from Koji 1.29/1.29.1

For details on migrating see Migrating to Koji 1.30

Security Fixes


Client Changes

Remove –paths option from list-buildroot

This option was not used and was deprecated. Now it was removed.

list-channels with specific arch

New filtering --arch option.

download-task retry download file

Additional place where we retry download in case of temporary network issues.

Add a utility function to watch builds

For CLI plugin development we’ve separated wait_repo function to library.

Rewritten download-task

download-task command was rewritten to solve some long-standing issues. E.g. downloading image scratch builds or some conflicting files. Command should be backward-compatible but allows additional options like --dir-per-arch and additional filtering.

API Changes

Remove force option from groupPackageListRemove hub call

Deprecated unused option was finally removed.

Remove deprecated remove-channel/removeChannel

Same here - same functionality is available via disable-channel/editChannel.

Use compression_type in addArchiveType

Archive files had available listing for some specific extensions (zip, tar). Other archives couldn’t been displayed even if they had the same compression format (e.g. jar which is hidden zip). Explicitly specifying compression type via addArchiveType allows also these other types to be inspected.

Library Changes

Fix rpm_hdr_size file closing

Simple fix for potential file descriptor leak in user scripts.

Authtype as enum and getSessionInfo prints authtype name

koji.AUTHTYPE_* were converted to enum like other koji.* constants. It unifies the usage + prints human-readable strings instead of numeric IDs.

parse_arches allows string and list of arches

Utility conversion function now accepts more types than before.

System Changes

Server-side clonetag

Major rehaul of clone-tag command. It was completely removed from CLI-side and everything happens at hub now. It is immensely faster in real workload (for big tags from hours to seconds). Nevertheless, we’ve lost some functionality - typically verbose mode is no more possible as everything happens in one transaction now, so there is almost no text output. We believe it is worth the speed improvements. There are also very minor semantical changes (e.g. event ids for separate steps) which shouldn’t be noticed by vast majority of users.

If target tag doesn’t exist, things are even more faster as we don’t need to check what is there, etc.

New API calls related to this behaviour are now available: massTag, snapshotTag, snapshotTagModify. Especially massTag could be used by many admins as it is basically batch call of tagBuildBypass (‘tag’ permission needed) dropping need of tagBuildBypass multicall overhead.

Note, that this is breaking change. If you use new client with older hub, you’ll not be able to run clone-tag command at all. In such a case we would recommend temporarily using older client (1.29.1 - e.g. installed via pip if it is not available as rpm)

Drop old indices

Few unused old indices could still exists in some deployments. Migration script will drop them.

Correct getAverageDuration values for most GC builds

getAverageDuration was not making much sense for packages which had also imported content. Now we ignore zero times for imported content getting better estimation of real koji builds.

Consistence pre/postPackageListChange sequence

If packageListAdd ended with no action because package is already in the list, only prePackageListChange callback was run. In such case no callback should be run.

Check release/version format in cg_import

Failed builds could have had non-sense in release/version. It was never true for completed builds as koji wouldn’t allow such build to finish. Anyway, it was confusing to see such items in failed builds list, so we’ve denied it from the beginning.

Expect dict for chainmaven builds

Regression fix for chainMaven API call which was refusing correct input from 1.29.

Builder Changes

Catch koji.AuthError and bail out

kojid and kojira now fail on authentication errors and don’t try forever. Anyway, daemons will be restarted via systemd (possibly loading updated certificates, keytabs, …) so it could help in some situations.

Don’t propagate SIGHUP ignore to child processes

Some packages are testing SIGHUP behaviour (e.g. cpython) in their test suite. Previously we’ve been blocking SIGHUP in child processes (mock), so it needed some care from packagers. There is no need to do that, so we’ve dropped this behaviour.

Beautify logged commands issued by koji

In few cases (e.g. createrepo) koji logs very long command lines. They are now wrapped to 80 characters for easier log reading.

Don’t crash in _checkImageState if there’s no image.os_plugin

In some cases ImageFactory tried to tear down the VM even in case there wasn’t right code/plugin for that.

Web Changes

archivelist and rpmlist raise error when imageID is unknown

Don’t crash on non-existing IDs.

Set SameSite and Set-Cookie2

We’ve added these http headers to increase the security.

Convert data to string in escapeHTML first

Better rendering of some non-textual (int, datetime) values.

Plugin Changes

proton: save messages when connection fails

Further improvement of handling message bus issues. Some types of errors were not treated as a connection problem (DNS resolution) thus losing messages.

kiwi: fix arches check

Regression fix.


Increase unit tests