Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

broken opensuse-leap-15.1-aarch64 configuration #553

Closed
praiskup opened this issue Mar 31, 2020 · 28 comments
Closed

broken opensuse-leap-15.1-aarch64 configuration #553

praiskup opened this issue Mar 31, 2020 · 28 comments
Labels
bug configs Issue in mock-core-configs package

Comments

@praiskup
Copy link
Member

I had a report https://bugzilla.redhat.com/show_bug.cgi?id=1817570 but I thought
that core configs v32.5 will fix the problem. But now I see:

https://copr-be.cloud.fedoraproject.org/results/praiskup/ping/opensuse-leap-15.1-aarch64/01324088-dummy-pkg/chroot_scan/var/lib/mock/1324088-opensuse-leap-15.1-aarch64-1585640902.925873/root/var/log/dnf.librepo.log

2020-03-31T07:48:43Z INFO Downloading: http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/repomd.xml
2020-03-31T07:48:47Z INFO Downloading: http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz
2020-03-31T07:48:47Z INFO Downloading: http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz
2020-03-31T07:48:47Z INFO Downloading: http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/08f5db46961356acb79074c2861d72c20bb49ebc284bd4d7129b3cbe4b7f1668-updateinfo.xml.gz
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz (IP: 128.112.18.21)
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/08f5db46961356acb79074c2861d72c20bb49ebc284bd4d7129b3cbe4b7f1668-updateinfo.xml.gz (IP: 128.112.18.21)
2020-03-31T07:48:47Z INFO Downloading: http://mirror.vtti.vt.edu/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz
2020-03-31T07:48:47Z INFO Downloading: http://mirror.vtti.vt.edu/opensuse/ports/update/leap/15.1/oss/repodata/08f5db46961356acb79074c2861d72c20bb49ebc284bd4d7129b3cbe4b7f1668-updateinfo.xml.gz
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz (IP: 128.112.18.21)
2020-03-31T07:48:47Z INFO Downloading: http://mirror.vtti.vt.edu/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://mirror.vtti.vt.edu/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz (IP: 198.82.152.116)
2020-03-31T07:48:47Z INFO Downloading: http://distro.ibiblio.org/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://mirror.vtti.vt.edu/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz (IP: 198.82.152.116)
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://mirror.vtti.vt.edu/opensuse/ports/update/leap/15.1/oss/repodata/08f5db46961356acb79074c2861d72c20bb49ebc284bd4d7129b3cbe4b7f1668-updateinfo.xml.gz (IP: 198.82.152.116)
2020-03-31T07:48:47Z INFO Downloading: http://distro.ibiblio.org/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz
2020-03-31T07:48:47Z INFO Downloading: http://distro.ibiblio.org/opensuse/ports/update/leap/15.1/oss/repodata/08f5db46961356acb79074c2861d72c20bb49ebc284bd4d7129b3cbe4b7f1668-updateinfo.xml.gz
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://distro.ibiblio.org/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz (IP: 152.19.134.43)
2020-03-31T07:48:47Z INFO Downloading: http://plug-mirror.rcac.purdue.edu/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://distro.ibiblio.org/opensuse/ports/update/leap/15.1/oss/repodata/08f5db46961356acb79074c2861d72c20bb49ebc284bd4d7129b3cbe4b7f1668-updateinfo.xml.gz (IP: 152.19.134.43)
2020-03-31T07:48:47Z INFO Downloading: http://plug-mirror.rcac.purdue.edu/opensuse/ports/update/leap/15.1/oss/repodata/08f5db46961356acb79074c2861d72c20bb49ebc284bd4d7129b3cbe4b7f1668-updateinfo.xml.gz
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://distro.ibiblio.org/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz (IP: 152.19.134.43)
2020-03-31T07:48:47Z INFO Downloading: http://plug-mirror.rcac.purdue.edu/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://plug-mirror.rcac.purdue.edu/opensuse/ports/update/leap/15.1/oss/repodata/08f5db46961356acb79074c2861d72c20bb49ebc284bd4d7129b3cbe4b7f1668-updateinfo.xml.gz (IP: 128.211.151.254)
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://plug-mirror.rcac.purdue.edu/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz (IP: 128.211.151.254)
2020-03-31T07:48:47Z INFO Downloading: http://www.gtlib.gatech.edu/pub/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz
2020-03-31T07:48:47Z INFO Downloading: http://www.gtlib.gatech.edu/pub/opensuse/ports/update/leap/15.1/oss/repodata/08f5db46961356acb79074c2861d72c20bb49ebc284bd4d7129b3cbe4b7f1668-updateinfo.xml.gz
2020-03-31T07:48:47Z INFO Error during transfer: Status code: 404 for http://plug-mirror.rcac.purdue.edu/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz (IP: 128.211.151.254)
2020-03-31T07:48:47Z INFO Downloading: http://www.gtlib.gatech.edu/pub/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz
2020-03-31T07:48:48Z INFO Error during transfer: Status code: 404 for http://www.gtlib.gatech.edu/pub/opensuse/ports/update/leap/15.1/oss/repodata/08f5db46961356acb79074c2861d72c20bb49ebc284bd4d7129b3cbe4b7f1668-updateinfo.xml.gz (IP: 128.61.111.11)
2020-03-31T07:48:48Z INFO Error during transfer: Status code: 404 for http://www.gtlib.gatech.edu/pub/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz (IP: 128.61.111.11)
@praiskup praiskup added bug configs Issue in mock-core-configs package labels Mar 31, 2020
@praiskup praiskup changed the title broken opensuse-leap-15.1 configuration broken opensuse-leap-15.1-aarch64 configuration Mar 31, 2020
@praiskup
Copy link
Member Author

praiskup commented Apr 1, 2020

Works now.

@praiskup praiskup closed this as completed Apr 1, 2020
@praiskup praiskup reopened this Apr 21, 2020
@praiskup
Copy link
Member Author

Per new log, this is still the
same problem with the same mirror:

2020-04-20T19:52:04Z WARNING WARNING: Metalink xml parser: Unknown element "publisher"
2020-04-20T19:52:04Z INFO Downloading: http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/repomd.xml
2020-04-20T19:52:04Z INFO Downloading: http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/0326aeb25fd23ee3b5325ae93fe3076ffa1e3630f3e683ca18970e9a09df92a7-primary.xml.gz
2020-04-20T19:52:04Z INFO Downloading: http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz
2020-04-20T19:52:04Z INFO Error during transfer: Status code: 404 for http://mirror.math.princeton.edu/pub/opensuse-full/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz (IP: 128.112.18.21)
2020-04-20T19:52:04Z INFO Downloading: http://mirror.vtti.vt.edu/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz
2020-04-20T19:52:04Z INFO Error during transfer: Status code: 404 for http://mirror.vtti.vt.edu/opensuse/ports/update/leap/15.1/oss/repodata/982ff4c633343a1bdffe8e6b85070fe784cb19995a461ed4fc8cd219fc738ef8-filelists.xml.gz (IP: 198.82.152.116)
....

@praiskup
Copy link
Member Author

@Conan-Kudo @lnussel what can we do about this?

@lnussel
Copy link

lnussel commented Apr 21, 2020

Tricky. The mirror is outdated. repomd.xml is not meant to be served my mirrors but download.o.o directly. So if you curl http://download.opensuse.org/ports/update/leap/15.1/oss/repodata/repomd.xml you would get the file without redirection. I suppose the software that does the download in this case does not fetch the file like this though. Instead my guess is that it fetches http://download.opensuse.org/ports/update/leap/15.1/oss/repodata/repomd.xml.metalink and takes the decision where to fetch from locally. It then ends up on an outdated mirror with incomplete files.

So I guess the apache or mirrorbrain config on download.o.o needs to be adjusted to either not serve the repomd.xml.metalink either, or alternatively produce a correct one :-)

If what I wrote about he behavior of your download software is correct feel free to mail admin@opensuse.org. This will create a ticket for them to resolve.

@praiskup
Copy link
Member Author

Yes, that's the behavior, and that's how it is expected to work with
fedora/centos mirrors -- the repositories with outdated data/metadata are
dropped from the mirror manager if something like that happens.

So I guess that on opensuse, whatever alternative the metalink provides --
the repomd.xml file is always downloaded from the main mirror. Is that
right?

I'm not sure we can configure the needed behavior in libdnf ATM.

So I guess the apache or mirrorbrain config on download.o.o needs to be adjusted to either not serve the repomd.xml.metalink either, or alternatively produce a correct one :-)

What do you mean by that, what is wrong on the metalink content?

@lnussel
Copy link

lnussel commented Apr 23, 2020

with mirrorbrain the redirection is on file level. So it's fine for mirrors to have incomplete repos. That however also requires that changed files need to have different names. That works with rpms as OBS automatically increases the release counter on rebuild. For repo metadata there are checksums in the file name. repomd.xml however does not change it's name on updates. So it cannot be redirected as mirrorbrain cannot know which mirror has the most current version. So repomd.xml has to be served from download.o.o directly. That means a repomd.xml.metalink that contains a list of mirrors is broken.

@praiskup
Copy link
Member Author

praiskup commented Apr 23, 2020

Now I got it. We have this configuration:

[opensuse-leap-oss]
name=openSUSE Leap $releasever - aarch64 - OSS
#baseurl=http://download.opensuse.org/ports/aarch64/distribution/leap/$releasever/repo/oss/
metalink=http://download.opensuse.org/ports/aarch64/distribution/leap/$releasever/repo/oss/repodata/repomd.xml.metalink
gpgkey=file:///usr/share/distribution-gpg-keys/opensuse/RPM-GPG-KEY-openSUSE
gpgcheck=1

But since it is not expected to ever use metalink, we should probably switch
to the baseurl variant - and let mirrorbrain to do the redirection.
@Conan-Kudo what do you think?

@Conan-Kudo
Copy link
Member

@praiskup The problem with with that is that it means DNF cannot do mirror failover at all. If MirrorBrain gives a slow mirror to DNF, it cannot select a better one and things stall out. This happens frequently for me in the United States as MirrorBrain gives me a bad mirror most of the time.

I intentionally used the metalink because the MirrorBrain redirector gives me such poor performance that I can't do anything.

@lnussel
Copy link

lnussel commented Apr 23, 2020

that is a problem not specific to DNF then though. If you get a bad mirror then everyone else with zypper does too. That needs to be addressed

@lnussel
Copy link

lnussel commented Apr 23, 2020

@darix
Copy link

darix commented Apr 28, 2020

So I guess we will just disable metalink files for files we wouldnt redirect. that will ensure that the repomd.xml is downloaded from us. for the rest of the repodata you can use metalinks then again.

@darix
Copy link

darix commented Apr 28, 2020

just curious ... what is the user-agent for the requests we would see in this case?

@Conan-Kudo
Copy link
Member

@darix That's not how the metalink= behavior works in rpm-md repo configuration. It uses the list of mirrors returned when getting the repomd.xml metalink to populate an internal baseurl list of baseurls to use for fetching all content. You break it for repomd.xml, then redirection doesn't really happen properly anymore.

@darix
Copy link

darix commented Apr 28, 2020

we never redirect files without a version information in the filenames anyway.

that's why not using metalink for them makes sense.

@praiskup
Copy link
Member Author

@Conan-Kudo what do you think now? Should we change to the non-metalink
variant in mock configuration (since I plan to wrap a new release today)?

@Conan-Kudo
Copy link
Member

@praiskup I give up, since the infrastructure won't get fixed, I've made #584 to revert to the download redirector.

praiskup pushed a commit that referenced this issue May 22, 2020
openSUSE's MirrorBrain instance does the wrong thing with metalinks
and cannot guarantee the sanity of the repository content, so we
need to switch to the download redirector.

Hopefully one day we can switch back...

Fixes: #584, #553
@praiskup
Copy link
Member Author

Fixed by a7d588c

@praiskup
Copy link
Member Author

Thank you, @Conan-Kudo

@praiskup praiskup reopened this May 22, 2020
@praiskup
Copy link
Member Author

The fix a7d588c did not fix this problem completely. See #584.

@darix
Copy link

darix commented May 22, 2020 via email

@praiskup
Copy link
Member Author

When everything worked as expected, dnf should just fallback to other mirror.

@darix
Copy link

darix commented May 22, 2020

well that code seems broken then :)

@praiskup
Copy link
Member Author

I just suppose that the redirection was don wrongly on mirrorbrain side..?
What's the expected workflow in zypper here? (dnf with fedora repositories
tracks alternative download mirrors, and just fallbacks ... apparently dnf
had nothing to fallback to).

@Conan-Kudo
Copy link
Member

Zypper continually retries the same URL, expecting to get different results. It implements a definition of insanity. :)

@darix
Copy link

darix commented May 22, 2020

I just suppose that the redirection was don wrongly on mirrorbrain side..?
What's the expected workflow in zypper here? (dnf with fedora repositories
tracks alternative download mirrors, and just fallbacks ... apparently dnf
had nothing to fallback to).

zypper will tell you that downloading from the mirror failed. in most cases failures like the one seen above are temporary. there is a job that checks if the baseurl of the mirror is working. that runs once per minute. so if the 403 would also affect the base url, the mirror would go out of rotation.

@praiskup
Copy link
Member Author

that runs once per minute

That means that there's a possibility of up to 1-minute repo problems for all users, not only us (mock users), right?

I'm curious whether to go back to metalink in #585, or whether we shouldn't configure
package_manager_attempt_delay=30 and package_manager_max_attempts=3 by default for opensuse
configs. That should always overcome the 1-minute problems with broken mirrors.

The problem with metalink seemed to be much more than just 1-minute, ... when some broken mirror was
returned, it kept returning for hours from what I remember.

@praiskup
Copy link
Member Author

@darix, re-asking, maybe using better phrases...

So, if some mirror goes down, and it is still the preferred mirror for the given geographic location,
it may take up to 1-minute to fix things in the location (and so all users there - not only mock
users - will face the repo download problems).

If this is correct? I'm asking because in mock we have a solution for that (we can enable in-mock
automatic repo-download retries for the opensuse chroots).

@darix
Copy link

darix commented Jul 28, 2020

This is correct.

praiskup added a commit to praiskup/mock that referenced this issue Jul 31, 2020
Per discussion in rpm-software-management#553 it isn't correct to specify "metalink=" for
OpenSUSE repositories, but mirrored "baseurl=".  But the "baseurl="
links are expected to have up t0 1-minute downtimes.  Therefore we need
to re-try the dnf command in case of repo failure.

Fixes: rpm-software-management#553
Replaces: rpm-software-management#585
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug configs Issue in mock-core-configs package
Projects
None yet
4 participants