~ruther/guix-local

b538c1d7b95587d3f111a7bb610747e93c5f2468 — Christopher Baines 1 year, 11 months ago 9b399ad
services: nar-herder: Add new configuration options.

* gnu/services/guix.scm (nar-herder-configuration-new-ttl,
nar-herder-cached-compression-configuration-unused-removal-duration,
nar-herder-cached-compression-configuration-ttl,
nar-herder-cached-compression-configuration-new-ttl): New procedure.
(nar-herder-shepherd-services): Handle the new options.
* doc/guix.texi (Guix Services): Document the new nar-herder options.

Change-Id: I161e490221a3ce394e32ada685dca27df60638bb
2 files changed, 60 insertions(+), 3 deletions(-)

M doc/guix.texi
M gnu/services/guix.scm
M doc/guix.texi => doc/guix.texi +23 -0
@@ 39670,6 39670,14 @@ 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{new-ttl} (default: @code{#f})
If specified, this will override the @code{ttl} setting when used for
the @code{Cache-Control} headers, but this value will be used when
scheduling the removal of nars.

Use this setting when the TTL is being reduced to avoid removing nars
while clients still have cached narinfos.

@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


@@ 39719,6 39727,21 @@ in /var/cache/nar-herder/nar/TYPE.
@item @code{directory-max-size} (default: @code{#f})
Maximum size in bytes of the directory.

@item @code{unused-removal-duration} (default: @code{#f})
If a cached nar isn't used for @code{unused-removal-duration}, it will
be scheduled for removal.

@var{unused-removal-duration} must denote a duration: @code{5d} means 5
days, @code{1m} means 1 month, and so on.

@item @code{ttl} (default: @code{#f})
If specified this overrides the @code{ttl} used for narinfos when this
cached compression is available.

@item @code{new-ttl} (default: @code{#f})
As with the @code{new-ttl} option for @code{nar-herder-configuration},
this value will override the @code{ttl} when used for narinfo requests.

@end table
@end deftp


M gnu/services/guix.scm => gnu/services/guix.scm +37 -3
@@ 719,6 719,8 @@ ca-certificates.crt file in the system profile."
   (default '()))
  (ttl           nar-herder-configuration-ttl
                 (default #f))
  (new-ttl       nar-herder-configuration-new-ttl
                 (default #f))
  (negative-ttl  nar-herder-configuration-negative-ttl
                 (default #f))
  (log-level     nar-herder-configuration-log-level


@@ 750,14 752,22 @@ ca-certificates.crt file in the system profile."
                       (default #f))
  (directory-max-size
   nar-herder-cached-compression-configuration-directory-max-size
   (default #f)))
   (default #f))
  (unused-removal-duration
   nar-herder-cached-compression-configuration-unused-removal-duration
   (default #f))
  (ttl                 nar-herder-cached-compression-configuration-ttl
                       (default #f))
  (new-ttl             nar-herder-cached-compression-configuration-new-ttl
                       (default #f)))

(define (nar-herder-shepherd-services config)
  (define (cached-compression-configuration->options cached-compression)
    (match-record
        cached-compression
        <nar-herder-cached-compression-configuration>
      (type level directory directory-max-size)
        (type level directory directory-max-size
              unused-removal-duration ttl new-ttl)

      `(,(simple-format #f "--enable-cached-compression=~A~A"
                        type


@@ 775,6 785,27 @@ ca-certificates.crt file in the system profile."
               (simple-format #f "--cached-compression-directory-max-size=~A=~A"
                              type
                              directory-max-size))
              '())
        ,@(if unused-removal-duration
              (list
               (simple-format
                #f "--cached-compression-unused-removal-duration=~A=~A"
                type
                unused-removal-duration))
              '())
        ,@(if ttl
              (list
               (simple-format
                #f "--cached-compression-ttl=~A=~A"
                type
                ttl))
              '())
        ,@(if new-ttl
              (list
               (simple-format
                #f "--cached-compression-new-ttl=~A=~A"
                type
                new-ttl))
              '()))))

  (match-record config <nar-herder-configuration>


@@ 783,7 814,7 @@ ca-certificates.crt file in the system profile."
             database database-dump
             host port
             storage storage-limit storage-nar-removal-criteria
             ttl negative-ttl log-level
             ttl new-ttl negative-ttl log-level
             cached-compressions cached-compression-min-uses
             cached-compression-workers cached-compression-nar-source
             extra-environment-variables)


@@ 825,6 856,9 @@ ca-certificates.crt file in the system profile."
                      #$@(if ttl
                             (list (string-append "--ttl=" ttl))
                             '())
                      #$@(if new-ttl
                             (list (string-append "--new-ttl=" new-ttl))
                             '())
                      #$@(if negative-ttl
                             (list (string-append "--negative-ttl=" negative-ttl))
                             '())