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
parent
ff093f5739
commit
71d2bdfa9f
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Reference in New Issue