diff mbox series

[bug#68468] gnu: services: Add respawn-limit and respawn-delay.

Message ID 288643093baa2855c7b5f8cf1d9f6da2b378f965.1705315426.git.attila@lendvai.name
State New
Headers show
Series [bug#68468] gnu: services: Add respawn-limit and respawn-delay. | expand

Commit Message

Attila Lendvai Jan. 15, 2024, 10:43 a.m. UTC
* gnu/services/shepherd.scm (<shepherd-service>): Add respawn-limit and
respawn-delay.

Change-Id: I54408e8fb4bcc0956d9610771bf5c566fdc2914c
---
 gnu/services/shepherd.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)


base-commit: 162d6a2fdd6af13272967c77347a54934ecb45e6
prerequisite-patch-id: 2adcd37ab1f0752ec27a4edabbabe1c65d88f122

Comments

Ludovic Courtès Jan. 24, 2024, 10:15 p.m. UTC | #1
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 mbox series

Patch

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