me
/
guix
Archived
1
0
Fork 0

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.
master
Christopher Baines 2022-02-04 10:00:50 +00:00
parent ff093f5739
commit 71d2bdfa9f
No known key found for this signature in database
GPG Key ID: 5E28A33B0B84F577
2 changed files with 29 additions and 3 deletions

View File

@ -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 another string. Currently, only one criteria is supported, checking if a
nar is stored on another Nar Herder instance. 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 table
@end deftp @end deftp

View File

@ -774,7 +774,12 @@ ca-certificates.crt file in the system profile."
(default "none")) (default "none"))
(storage-nar-removal-criteria (storage-nar-removal-criteria
nar-herder-configuration-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) (define (nar-herder-shepherd-services config)
(match-record config <nar-herder-configuration> (match-record config <nar-herder-configuration>
@ -782,7 +787,8 @@ ca-certificates.crt file in the system profile."
mirror mirror
database database-dump database database-dump
host port host port
storage storage-limit storage-nar-removal-criteria) storage storage-limit storage-nar-removal-criteria
ttl negative-ttl)
(unless (or mirror storage) (unless (or mirror storage)
(error "nar-herder: mirror or storage must be set")) (error "nar-herder: mirror or storage must be set"))
@ -817,7 +823,13 @@ ca-certificates.crt file in the system profile."
(match criteria (match criteria
((k . v) (simple-format #f "~A=~A" k v)) ((k . v) (simple-format #f "~A=~A" k v))
(str str)))) (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 #:user #$user
#:group #$group #:group #$group
#:pid-file "/var/run/nar-herder/pid" #:pid-file "/var/run/nar-herder/pid"