From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 14 20:32:00 2021 Received: (at submit) by debbugs.gnu.org; 15 Mar 2021 00:32:00 +0000 Received: from localhost ([127.0.0.1]:34511 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lLb9M-00086T-G5 for submit@debbugs.gnu.org; Sun, 14 Mar 2021 20:32:00 -0400 Received: from lists.gnu.org ([209.51.188.17]:47694) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lLb9K-00086K-C2 for submit@debbugs.gnu.org; Sun, 14 Mar 2021 20:31:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52528) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lLb9K-0002TE-5U for bug-guix@gnu.org; Sun, 14 Mar 2021 20:31:58 -0400 Received: from mail-40132.protonmail.ch ([185.70.40.132]:58960) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lLb9E-00067B-Hv for bug-guix@gnu.org; Sun, 14 Mar 2021 20:31:57 -0400 Date: Mon, 15 Mar 2021 00:31:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail; t=1615768309; bh=wWDZHl+KmPfpfGfCPhAFGTG7AdjtYdUOT8mISVp5WNo=; h=Date:To:From:Reply-To:Subject:From; b=Mtj6LyfhYFqKe7lfoVbD2gAZoN61XPZshcJpw9++1Go+5nUoZvT16kzqXoMufEnBy C+VBoQamxVbT57EZ2QxFXDPoWBiynuw+WHqfOEjxfxXswV2inr0ce5E7RlyAprantA HVYVyey63/sQyOaH0ru+as88ZGTUwB4uMepGKpM0= To: "bug-guix@gnu.org" From: raid5atemyhomework Subject: Guix substituter gives up too easily, causing higher-level commands to fail catastrophically Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM shortcircuit=no autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mailout.protonmail.ch Received-SPF: pass client-ip=185.70.40.132; envelope-from=raid5atemyhomework@protonmail.com; helo=mail-40132.protonmail.ch X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: raid5atemyhomework Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Split off from 46942 I recently had to rebuild a Guix OS. I ran a modified installer that used t= wo substitute URLs: the SJTUG mirror, and the official Cuirass server in Be= rlin, listed in that order. Unfortunately, it seems the SJTUG mirror has some reliability problems, dur= ing install the guided installation repeatedly failed during downloading of= a `e2fsck` archive; I was unable to save the error since this occurred dur= ing an install when I had no easy way to copy-paste error messages. But that's tangential to *this* particular report. My expectation when I g= ive multiple substitute URLs is that if one substitute server is failing, i= t should automatically try other substitute servers. So even if it gets *a= ny* kind of error on the first listed server, the substituter should make a= n effort to talk to some other server listed in the `substitute-urls`, not = give up immediately. My expectation is this: * For each substitute server: * If package exists in server: * Try downloading * If downloading completed with signature OK, exit function with succ= ess. * else continue * If we reach here, build locally if `--fallback` is specified. But it looks like: * For each substitute server: * If package exists in server: * Try downloading * If downloading completed with signature OK, exit function with succ= ess. * else error out of the function * If we reach here, build locally if `--fallback` is specified. The simple fact of the matter is that Internet connectivity ***IS NOT RELIA= BLE***, so failure to download MUST NOT mean that the substituter should as= sume the worst and should just fail catastrophically and abort, which then = leads to higher-level constructions *also* aborting, sometimes throwing sev= eral minutes' worth of processing and downloading down the drain just becau= se some package was not downloaded from a particular substitute server. So what I would really like is: * The substituter should really make at least a token effort to *resume* a = partial download that failed midway through. Even just have it try a resum= e *once* would be good. * The substituter should really fall back to the next item in the list of s= ubstitute URLs if the first one is not behaving properly, instead of decidi= ng that the first substitute URL is the canonical version and further subst= itute URLs are to be ignored. Is there any reason why the above is not feasible for Guix? Thanks raid5atemyhomework