Ludovic Courtès writes: > Ludovic Courtès skribis: > >> This significantly speeds up things like substituting the closure of a >> .drv. This is a followup to 5ff521452b9ec2aae9ed8e4bb7bdc250a581f203. >> >> * guix/scripts/substitute.scm (http-multiple-get): Add #:open-connection >> and #:keep-alive? and honor them. >> (open-connection-for-uri/maybe): Use 'open-connection-for-uri/cached' >> instead of 'guix:open-connection-for-uri'. Call 'http-multiple-get' >> within 'call-with-cached-connection'. >> (open-connection-for-uri/cached): Add #:timeout and #:verify-certificate? >> and honor them. >> (call-with-cached-connection): Add 'open-connection' parameter and >> honor it. >> --- >> guix/scripts/substitute.scm | 97 ++++++++++++++++++++++--------------- >> 1 file changed, 59 insertions(+), 38 deletions(-) > > Pushed as be5a75ebb5988b87b2392e2113f6590f353dd6cd! > > You can check the effect by running ‘guix build XYZ.drv’, where XYZ.drv > is not available locally yet. Hey, I did do some testing of this, and didn't spot any issues, but I think it might be causing some issues when things go wrong. The Guix Build Coordinator uses code from this script, and I'm sometimes seeing exceptions like [1] when running with these changes. This is when calling lookup-narinfos. 1: #<&compound-exception components: (#<&error> #<&irritants irritants: (# write_to_session_record_port)> #<&exception-with-kind-and-args kind: gnutls-error args: (# write_to_session_record_port)>)>, When this happens, things seem to get stuck and retrying calling lookup-narinfos leads to the same exception. I'm guessing this might be happening because the broken connection is being cached and reused. Any ideas? Thanks, Chris