Subject: Re: bug#57978: the fallback machanism for substitute servers doesn't work?

From: Ludovic Courtès <[email-masked]>
Date: Thu, 22 Sep 2022 11:47:56 +0200

Hi,

Attila Lendvai <[email-masked]> skribis:

> guix substitute: warning: ci.guix.gnu.org: connection failed: No route to host
>  qemu-minimal-7.1.0-doc  3.4MiB                                                                                                  876.6MiB/s 00:00 [##################] 100.0%
> guix substitute: error: connect*: No route to host
> substitution of /gnu/store/7czrnkybr466v69wdj6i2sn6vpsg0ks3-cdrkit-libre-1.1.11 failed
> guix system: error: corrupt input while restoring archive from #<closed: file 7f37458bd000>

I observed the same yesterday when ci.guix was down.

Note that the following command, where 203.* is unroutable, does not
reproduce it:

  guix build --substitute-urls="http://203.0.113.1 https://ci.guix.gnu.org" \
    --no-grafts pandoc    # pick a package not in store

So I believe what we experienced yesterday goes along these lines:

  1. We had cached narinfos for ci.guix available locally so the daemon
     assumed it could go ahead and download from ci.guix;

  2. When ‘guix substitute --substitute’ when to download stuff from
     ci.guix, which it assumed was possible because there was a valid
     narinfo for that, it didn’t handle the connection failure.  (The
     same happens if you get, say, 404 while substituting even though
     you have a valid substitute at hand.)

Trying to come up with a fix…

Ludo’.