all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Christopher Baines <mail@cbaines.net>
To: 70494@debbugs.gnu.org
Cc: "Christopher Baines" <guix@cbaines.net>,
	"Josselin Poiret" <dev@jpoiret.xyz>,
	"Ludovic Courtès" <ludo@gnu.org>,
	"Mathieu Othacehe" <othacehe@gnu.org>,
	"Ricardo Wurmus" <rekado@elephly.net>,
	"Simon Tournier" <zimon.toutoune@gmail.com>,
	"Tobias Geerinckx-Rice" <me@tobias.gr>
Subject: [bug#70494] [PATCH 23/23] substitutes: Add #:keep-alive? keyword argument to download-nar.
Date: Sun, 21 Apr 2024 10:42:41 +0100	[thread overview]
Message-ID: <bee16f1ada2abcf7e3cbc5c3eb6a16dad85a80a9.1713692561.git.mail@cbaines.net> (raw)
In-Reply-To: <87bk632h36.fsf@cbaines.net>

To be consistent with other procedures that make network requests.

* guix/substitutes.scm (download-nar): Add #:keep-alive? option.
* guix/scripts/substitute.scm (process-substitution/fallback,
process-substitution): Call download-nar with #:keep-alive? #t.

Change-Id: I83b27d0c3a0916d058fbbbeb7aa77dbb8a742768
---
 guix/scripts/substitute.scm |  6 ++++--
 guix/substitutes.scm        | 11 +++++++++--
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index c74da618b5..68c24820c6 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -410,7 +410,8 @@ (define* (process-substitution/fallback narinfo destination
                               #:prefer-fast-decompression?
                               prefer-fast-decompression?
                               #:open-connection-for-uri
-                              open-connection-for-uri/cached))
+                              open-connection-for-uri/cached
+                              #:keep-alive? #t))
               (loop rest)))
          (()
           (loop rest)))))))
@@ -463,7 +464,8 @@ (define* (process-substitution store-item destination
                          #:print-build-trace? print-build-trace?
                          #:prefer-fast-decompression? prefer-fast-decompression?
                          #:open-connection-for-uri
-                         open-connection-for-uri/cached))))
+                         open-connection-for-uri/cached
+                         #:keep-alive? #t))))
     (values narinfo
             expected-hash
             actual-hash)))
diff --git a/guix/substitutes.scm b/guix/substitutes.scm
index 5089f3a6da..7c8f8cc973 100644
--- a/guix/substitutes.scm
+++ b/guix/substitutes.scm
@@ -462,7 +462,8 @@ (define* (download-nar narinfo destination
                        #:key deduplicate? print-build-trace?
                        (fetch-timeout %fetch-timeout)
                        prefer-fast-decompression?
-                       (open-connection-for-uri guix:open-connection-for-uri))
+                       (open-connection-for-uri guix:open-connection-for-uri)
+                       (keep-alive? #f))
   "Download the nar prescribed in NARINFO, which is assumed to be authentic
 and authorized, and write it to DESTINATION.  When DEDUPLICATE? is true, and
 if DESTINATION is in the store, deduplicate its files."
@@ -505,7 +506,7 @@ (define* (download-nar narinfo destination
                           (raise c))))
              (http-fetch uri #:text? #f
                          #:port port
-                         #:keep-alive? #t
+                         #:keep-alive? keep-alive?
                          #:buffered? #f)))))
       (else
        (raise
@@ -586,6 +587,12 @@ (define* (download-nar narinfo destination
       ;; Wait for the reporter to finish.
       (every (compose zero? cdr waitpid) pids)
 
+      ;; TODO The port should also be closed if the relevant HTTP response
+      ;; header is set, but http-fetch doesn't currently share that
+      ;; information
+      (unless keep-alive?
+        (close-port raw))
+
       (values expected
               (get-hash)))))
 
-- 
2.41.0





      parent reply	other threads:[~2024-04-21  9:45 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-21  9:35 [bug#70494] [PATCH 00/23] Groundwork for the Guile guix-daemon Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 01/23] store: database: Register derivation outputs Christopher Baines
2024-05-07 14:30   ` Ludovic Courtès
2024-04-21  9:42 ` [bug#70494] [PATCH 02/23] gnu: linux-container: Make it more suitable for derivation-building Christopher Baines
2024-05-07 14:28   ` Ludovic Courtès
2024-04-21  9:42 ` [bug#70494] [PATCH 03/23] syscalls: Add missing pieces for derivation build environment Christopher Baines
2024-05-07 14:27   ` Ludovic Courtès
2024-04-21  9:42 ` [bug#70494] [PATCH 04/23] guix: store: environment: New module Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 05/23] store: build-derivations: " Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 06/23] store: Export protocol related constants Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 07/23] serialization: Export read-byte-string Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 08/23] store: Add text-output-path and text-output-path-from-hash Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 09/23] store: Add validate-store-name Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 10/23] store: database: Add procedures for querying valid paths Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 11/23] scripts: substitute: Untangle selecting fast vs small compressions Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 12/23] scripts: substitute: Extract script specific output from download-nar Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 13/23] syscalls: Add unshare Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 14/23] scripts: perform-download: Support configuring the %store-prefix Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 15/23] store: Export operation-id Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 16/23] store: database: Log when aborting transactions Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 17/23] store: database: Export transaction helpers Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 18/23] guix: http-client: Add network-error? Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 19/23] http-client: Include EPIPE in network-error? Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 20/23] scripts: substitute: Simplify with-timeout usage Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 21/23] scripts: substitute: Don't enforce cached connections in download-nar Christopher Baines
2024-04-21  9:42 ` [bug#70494] [PATCH 22/23] substitutes: Move download-nar from substitutes script to here Christopher Baines
2024-04-21  9:42 ` Christopher Baines [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bee16f1ada2abcf7e3cbc5c3eb6a16dad85a80a9.1713692561.git.mail@cbaines.net \
    --to=mail@cbaines.net \
    --cc=70494@debbugs.gnu.org \
    --cc=dev@jpoiret.xyz \
    --cc=guix@cbaines.net \
    --cc=ludo@gnu.org \
    --cc=me@tobias.gr \
    --cc=othacehe@gnu.org \
    --cc=rekado@elephly.net \
    --cc=zimon.toutoune@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.