Subject: bug#64317: closed (Re: bug#64317: [Cuirass] Download products can disappear, leading to HTTP 500)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 24 Aug 2023 15:23:02 +0000

Your bug report

#64317: [Cuirass] Download products can disappear, leading to HTTP 500

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
64317: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=64317
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#64317: [Cuirass] Download products can disappear, leading to HTTP 500
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Date: Thu, 24 Aug 2023 17:22:18 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Ludovic Courtès <[email-masked]> skribis:

> The /download endpoint refers directly to store items.  However, they
> can be GC’d in the meantime, in which case the HTTP handler fails
> gracelessly (HTTP 500 or so) as shown here:
>
> 2023-06-27 16:02:24 GET /download/718
> 2023-06-27 16:02:24 Uncaught exception in task:
> 2023-06-27 16:02:24 In fibers.scm:
> 2023-06-27 16:02:24     172:8  1 (_)
> 2023-06-27 16:02:24 In ice-9/boot-9.scm:
> 2023-06-27 16:02:24   1685:16  0 (raise-exception _ #:continuable? _)
> 2023-06-27 16:02:24 ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> 2023-06-27 16:02:24 In procedure open-file: No such file or directory: "/gnu/store/bnsh1yk4l913af8swqi3x7xp1xsa8gq7-guix-binary.tar.xz"
>
> The solution IMO is to (1) register GC roots for these, (2) periodically
> remove old GC roots, and (3) return 404 when the file has vanished.

Fixed with these Cuirass commits:

  9e897d8 'create-build-outputs' registers a GC root on build products.
  103a6ec http: Gracefully handle missing files in "/download".
  5e3e49c http: "/download" returns 404 rather than 500 for "not found".

Ludo’.

Subject: [Cuirass] Download products can disappear, leading to HTTP 500
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Date: Tue, 27 Jun 2023 16:09:16 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

The /download endpoint refers directly to store items.  However, they
can be GC’d in the meantime, in which case the HTTP handler fails
gracelessly (HTTP 500 or so) as shown here:

--8<---------------cut here---------------start------------->8---
2023-06-27 16:02:24 GET /download/718
2023-06-27 16:02:24 Uncaught exception in task:
2023-06-27 16:02:24 In fibers.scm:
2023-06-27 16:02:24     172:8  1 (_)
2023-06-27 16:02:24 In ice-9/boot-9.scm:
2023-06-27 16:02:24   1685:16  0 (raise-exception _ #:continuable? _)
2023-06-27 16:02:24 ice-9/boot-9.scm:1685:16: In procedure raise-exception:
2023-06-27 16:02:24 In procedure open-file: No such file or directory: "/gnu/store/bnsh1yk4l913af8swqi3x7xp1xsa8gq7-guix-binary.tar.xz"
--8<---------------cut here---------------end--------------->8---

The solution IMO is to (1) register GC roots for these, (2) periodically
remove old GC roots, and (3) return 404 when the file has vanished.

Ludo’.