#6957 Repos again broken
Closed: Upstream Opened by clime.

  • Describe what you need us to do:
    There are is again problem with repo syncing in Copr (but probably not only there). E.g. this build https://copr-be.cloud.fedoraproject.org/results/wanzenbug/firefox-nightly/fedora-28-x86_64/00756465-firefox-nightly/builder-live.log failed because of:

    Error: Failed to synchronize cache for repo 'updates'

Yesterday, there were those problem too.

You can see the error in the attached:

librepo.LibrepoException: (10, 'Cannot prepare internal mirrorlist: Status code: 503 for https://mirrors.fedoraproject.org/metalink?repo=updates-released-f28&arch=x86_64', 'Error HTTP/FTP status code')

  • When do you need this? (YYYY/MM/DD)
    2018-20-5

* When is this no longer needed or useful? (YYYY/MM/DD)

  • If we cannot complete your request, what is the impact?
    people are having problems downloading new software, Copr is not building properly

<!!image>
<!!image>


I just checked all our proxies, and all of them are serving mirrorlists correctly, and none of them have had an outage for a significant period of time.
That being said, the error dnf logged is of a temporary nature, that unfortunately will happen from time to time, and while we are doing are utmost best to remove any occurrences of this, that is a significant project.

It will most likely help significantly if you restore the DNF "retries" value back to its documented (http://dnf.readthedocs.io/en/latest/conf_ref.html) value of 10, from the seemingly current value of 1 ("07:16:09 check_transfer_statuses: No more retries (tried: 1)" from your log), since the retries value is explicitly to make dnf recover in the face of temporary service failures.

Also, note that you are already doing this for other distros (e.g. Tumbleweed) by setting retries=20: https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/copr/backend/files/provision/files/mock/opensuse-tumbleweed-x86_64.cfg#n18

Also note that IP is by design, and hence so is the internet, meant to be an unreliable protocol hence the reason dnf defaults to a sane level of retries to mitigate these sorts of issues.

retries=20 is defined for all the chroots by default mock configs. You can see the chroot mock config that have been used for the build here: https://copr-be.cloud.fedoraproject.org/results/wanzenbug/firefox-nightly/fedora-28-x86_64/00756465-firefox-nightly/configs/fedora-28-x86_64.cfg

That would be worth of investigating if the value is being properly respected. @msuchy , could you please, take a look at it with dnf team?

Complete mock config set:

child.cfg

fedora-28-x86_64.cfg

site-defaults.cfg

So, looking at the DNF code, it will not actually retry in this condition, which feels like a DNF error to me.

https://github.com/rpm-software-management/librepo/blob/master/librepo/downloader.c#L1327 - marks this situation as a transfer_err, not fatal_error and not serious_error.

With that combination, the only chance to get retry = TRUE is if can_try_more_mirrors() returns true, per https://github.com/rpm-software-management/librepo/blob/master/librepo/downloader.c#L1765.

In the case of Fedora metalink, it could actually be said that there are more mirrors available of the metalink: all of the (8 - 15) "mirrors" (proxies) that are returned by DNS to be serving this metalink, although I doubt that librepo takes that into account, meaning there aren't any other "mirrors" to try, and it won't retry further, from what I can read.

In other words, I think that this is a DNF bug/RFE to make it retry against the same, or (ideally), against the other DNS results for mirrors.fedoraproject.org.

So, can someone file that dnf bug?

It might also be good to know exactly when it's hitting this to see if we can tie it to any event on our side or network event, but really dnf should retry.

Metadata Update from @kevin:
- Issue close_status updated to: Upstream
- Issue status updated to: Closed (was: Open)

Sorry for delay, issue filed here:

https://bugzilla.redhat.com/show_bug.cgi?id=1591225

Metadata