diff options
author | Christopher Baines <mail@cbaines.net> | 2022-02-04 10:00:50 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2022-02-04 10:09:01 +0000 |
commit | 71d2bdfa9fce546e8d8d5103aee4e1096ce65ecf (patch) | |
tree | bbdb35be712f18cea14c0d534962c3eea43a874a | |
parent | ff093f5739a61e77b296feccc48d260b9bb574c0 (diff) | |
download | guix-71d2bdfa9fce546e8d8d5103aee4e1096ce65ecf.tar guix-71d2bdfa9fce546e8d8d5103aee4e1096ce65ecf.tar.gz |
services: nar-herder: Support ttl and negative-ttl options.
* gnu/services/guix.scm (<nar-herder-configuration>): Add ttl and negative-ttl
fields.
(nar-herder-shepherd-services): Pass the ttl and negative-ttl values to the
service.
* doc/guix.texi (Guix Services): Document this.
-rw-r--r-- | doc/guix.texi | 14 | ||||
-rw-r--r-- | gnu/services/guix.scm | 18 |
2 files changed, 29 insertions, 3 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index aaa7cbb66f..0cf865a672 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -33721,6 +33721,20 @@ Each criteria is specified by a string, then an equals sign, then another string. Currently, only one criteria is supported, checking if a nar is stored on another Nar Herder instance. +@item @code{ttl} (default: @code{#f}) +Produce @code{Cache-Control} HTTP headers that advertise a time-to-live +(TTL) of @var{ttl}. @var{ttl} must denote a duration: @code{5d} means 5 +days, @code{1m} means 1 month, and so on. + +This allows the user's Guix to keep substitute information in cache for +@var{ttl}. + +@item @code{negative-ttl} (default: @code{#f}) +Similarly produce @code{Cache-Control} HTTP headers to advertise the +time-to-live (TTL) of @emph{negative} lookups---missing store items, for +which the HTTP 404 code is returned. By default, no negative TTL is +advertised. + @end table @end deftp diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm index 6a5b276b33..dc9bd8ad68 100644 --- a/gnu/services/guix.scm +++ b/gnu/services/guix.scm @@ -774,7 +774,12 @@ ca-certificates.crt file in the system profile." (default "none")) (storage-nar-removal-criteria nar-herder-configuration-storage-nar-removal-criteria - (default '()))) + (default '())) + (ttl nar-herder-configuration-ttl + (default #f)) + (negative-ttl nar-herder-configuration-negative-ttl + (default #f))) + (define (nar-herder-shepherd-services config) (match-record config <nar-herder-configuration> @@ -782,7 +787,8 @@ ca-certificates.crt file in the system profile." mirror database database-dump host port - storage storage-limit storage-nar-removal-criteria) + storage storage-limit storage-nar-removal-criteria + ttl negative-ttl) (unless (or mirror storage) (error "nar-herder: mirror or storage must be set")) @@ -817,7 +823,13 @@ ca-certificates.crt file in the system profile." (match criteria ((k . v) (simple-format #f "~A=~A" k v)) (str str)))) - storage-nar-removal-criteria)) + storage-nar-removal-criteria) + #$@(if ttl + (list (string-append "--ttl=" ttl)) + '()) + #$@(if negative-ttl + (list (string-append "--negative-ttl=" negative-ttl)) + '())) #:user #$user #:group #$group #:pid-file "/var/run/nar-herder/pid" |