Subject: bug#49781: Successful build on ci.guix not available as substitute

From: Mathieu Othacehe <[email-masked]>
Date: Fri, 30 Jul 2021 12:11:17 +0200

Hello Ludo,

> It’s the first time I see this.  My understanding is that Cuirass makes
> a GET request on ‘guix publish’ upon build completion.  Could there be a
> race condition or something that can explain this?

Your understanding is correct :). However, looking at the
cuirass-remote-server.log file, I found:

--8<---------------cut here---------------start------------->8---
2021-07-29T22:31:48 fetching '/gnu/store/hrn9hj7v1img3il6afh3r036aczvwnyd-xnnpack-0.0-1.bbe8824.drv' from http://141.80.167.185:5558
2021-07-29T22:31:48 Failed to add /gnu/store/slm0x0j05vyl3vqbjhgc0nch6jca9fp3-xnnpack-0.0-1.bbe8824 to store.
--8<---------------cut here---------------end--------------->8---

There are quite a few other "Failed to add" traces in the log, and they
all seem to involve the machine behind the .185 IP address.

Fetching the substitute manually from Berlin works:

--8<---------------cut here---------------start------------->8---
 wget http://141.80.167.185:5558/nar/slm0x0j05vyl3vqbjhgc0nch6jca9fp3-xnnpack-0.0-1.bbe8824 --no-http-keep-alive
--8<---------------cut here---------------end--------------->8---

but using "ensure-path" fails this way:

--8<---------------cut here---------------start------------->8---
scheme@(guix-user)> (set-build-options* s "http://141.80.167.185:5558")
$1 = #t
scheme@(guix-user)> (ensure-path s "/gnu/store/slm0x0j05vyl3vqbjhgc0nch6jca9fp3-xnnpack-0.0-1.bbe8824")
substitute: updating substitutes from 'http://141.80.167.185:5558'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
ice-9/boot-9.scm:1669:16: In procedure raise-exception:
ERROR:
  1. &store-protocol-error:
      message: "path `/gnu/store/slm0x0j05vyl3vqbjhgc0nch6jca9fp3-xnnpack-0.0-1.bbe8824' does not exist and cannot be created"
      status: 1

Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
--8<---------------cut here---------------end--------------->8---

Do you see any reason why ensure-path would fail while wget works?

Thanks,

Mathieu