guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/02: scripts: publish: Add a custom baking header.


From: guix-commits
Subject: 01/02: scripts: publish: Add a custom baking header.
Date: Sat, 7 Jan 2023 08:27:43 -0500 (EST)

mothacehe pushed a commit to branch master
in repository guix.

commit 62f9f345250d5e037634e7762f6404d5e868c179
Author: Mathieu Othacehe <othacehe@gnu.org>
AuthorDate: Wed Dec 28 15:12:46 2022 +0100

    scripts: publish: Add a custom baking header.
    
    Log the not-found responses and their reason (baking or not) to stdout. Also
    send the X-Baking custom header so that the client can be informed of the
    cause of the failure.
    
    * guix/scripts/publish.scm (not-found): Add a baking? argument to add the
    X-Baking HTTP header to the response if baking is in progress.  Also, log 
the
    404 responses to stdout, indicating if it is due to baking or not.
    (render-narinfo/cached): Pass the baking? argument.
---
 guix/scripts/publish.scm | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index 3bf3bd9c7c..6307ae54bb 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
-;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
+;;; Copyright © 2021, 2022 Mathieu Othacehe <othacehe@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -375,14 +375,28 @@ References: ~a~%"
                                            compression)))
                  compressions))))
 
+;; Custom header to indicate that baking is in progress.
+(declare-opaque-header! "X-Baking")
+
 (define* (not-found request
-                    #:key (phrase "Resource not found")
+                    #:key
+                    baking?
+                    (phrase "Resource not found")
                     ttl)
   "Render 404 response for REQUEST."
+  (format #t "-> ~a ~a: 404~a~%"
+          (request-method request)
+          (uri-path (request-uri request))
+          (if baking? " (baking)" ""))
   (values (build-response #:code 404
-                          #:headers (if ttl
-                                        `((cache-control (max-age . ,ttl)))
-                                        '()))
+                          #:headers
+                          (append
+                           (if ttl
+                               `((cache-control (max-age . ,ttl)))
+                               '())
+                           (if baking?
+                               '((x-baking . "1"))
+                               '())))
           (string-append phrase ": "
                          (uri-path (request-uri request)))))
 
@@ -587,6 +601,7 @@ requested using POOL."
                                #:nar-path nar-path
                                #:compressions compressions)
                (not-found request
+                          #:baking? #t
                           #:phrase "We're baking it"
                           #:ttl 300)))          ;should be available within 5m
           (else



reply via email to

[Prev in Thread] Current Thread [Next in Thread]