Message ID | 288643093baa2855c7b5f8cf1d9f6da2b378f965.1705315426.git.attila@lendvai.name |
---|---|
State | New |
Headers | show |
Series | [bug#68468] gnu: services: Add respawn-limit and respawn-delay. | expand |
Hi, Attila Lendvai <attila.lendvai@gmail.com> skribis: > * gnu/services/shepherd.scm (<shepherd-service>): Add respawn-limit and > respawn-delay. > > Change-Id: I54408e8fb4bcc0956d9610771bf5c566fdc2914c Neat! Please also mention the changes in ‘shepherd-service-file’. > + (respawn-limit shepherd-service-respawn-limit > + (default #f)) > + (respawn-delay shepherd-service-respawn-delay > + (default #f)) Could you document them in ‘doc/guix.texi’? > + #$@(if (shepherd-service-respawn-limit service) > + `(#:respawn-limit > + ,(shepherd-service-respawn-limit service)) > + '()) > + #$@(if (shepherd-service-respawn-delay service) > + `(#:respawn-delay > + ,(shepherd-service-respawn-delay service)) > + '()) In theory, we could end up loading code that uses #:respawn-limit in a running shepherd that does not support it (too old). To properly address that, we’d need to check what shepherd version we’re talking to. But… I think we can ignore this issue, as long as we don’t use it in gnu/services/*.scm until some time has passed. Thanks! Ludo’.
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 5ebac129cec..f5bcde721fe 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -55,6 +55,8 @@ (define-module (gnu services shepherd) shepherd-service-canonical-name shepherd-service-requirement shepherd-service-one-shot? + shepherd-service-respawn-limit + shepherd-service-respawn-delay shepherd-service-respawn? shepherd-service-start shepherd-service-stop @@ -211,6 +213,10 @@ (define-record-type* <shepherd-service> (default #f)) (respawn? shepherd-service-respawn? ;Boolean (default #t)) + (respawn-limit shepherd-service-respawn-limit + (default #f)) + (respawn-delay shepherd-service-respawn-delay + (default #f)) (start shepherd-service-start) ;g-expression (procedure) (stop shepherd-service-stop ;g-expression (procedure) (default #~(const #f))) @@ -309,6 +315,14 @@ (define (shepherd-service-file service) #:one-shot? '#$(shepherd-service-one-shot? service) #:respawn? '#$(shepherd-service-respawn? service) + #$@(if (shepherd-service-respawn-limit service) + `(#:respawn-limit + ,(shepherd-service-respawn-limit service)) + '()) + #$@(if (shepherd-service-respawn-delay service) + `(#:respawn-delay + ,(shepherd-service-respawn-delay service)) + '()) #:start #$(shepherd-service-start service) #:stop #$(shepherd-service-stop service) #:actions