dnf icon indicating copy to clipboard operation
dnf copied to clipboard

`makecache` always refreshes repositories

Open evan-goode opened this issue 6 months ago • 1 comments

The makecache command always refreshes repositories even if they are not expired, contrary to its documentation:

Downloads and caches metadata for enabled repositories. Tries to avoid downloading whenever possible (e.g. when the local metadata hasn’t expired yet or when the metadata timestamp hasn’t changed).

To reproduce, run sudo dnf4 makecache, then another sudo dnf4 makecache and observe in /var/log/dnf.log:

2025-05-22T20:39:36+0000 DEBUG fedora: has expired and will be refreshed.

sudo dnf4 rq --available hello for example does use the metadata cache.

More specifically, the problem is that Base.update_cache and/or Repo._metadata_expire_in do not query the cache correctly. At least within DNF, both functions are only used by makecache.

We probably shouldn't change this now as users may have come to expect the unintended behavior from makecache, but we should change makecache's documentation to be correct.

See also https://bugzilla.redhat.com/show_bug.cgi?id=2324177.

evan-goode avatar May 22 '25 20:05 evan-goode

I agree it's a bug in an optimization which could be just documented.

ppisar avatar May 26 '25 12:05 ppisar