[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#74279: Shepherd service is not getting respawned.
From: |
Ludovic Courtès |
Subject: |
bug#74279: Shepherd service is not getting respawned. |
Date: |
Sun, 10 Nov 2024 12:32:48 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hi Tomas,
Tomas Volf <~@wolfsden.cz> skribis:
> (start #~(lambda _
> (let* ((cmd "/run/privileged/bin/ping -qc1 -W1 1.1.1.1")
> (status (system cmd)))
> (= 0 (status:exit-val status)))))
> (one-shot? #t)
> ;; Try every second.
> (respawn-delay 1)
> ;; Retry forever. Double-quoting is intentional.
> (respawn-limit ''(5 . 5)))))
[...]
> Nov 7 00:18:20 localhost shepherd[1]: Starting service network-online...
> [..]
> Nov 7 00:18:20 localhost shepherd[1]: [sh] PING 192.168.0.110
> (192.168.0.110): 56 data bytes
> Nov 7 00:18:20 localhost shepherd[1]: [sh] /run/privileged/bin/ping: sending
> packet: Network is unreachable
> Nov 7 00:18:20 localhost shepherd[1]: Service network-online could not be
> started.
> Nov 7 00:18:20 localhost shepherd[1]: Service network-online failed to start.
I think there’s a misunderstanding here: ‘respawn?’ is about respawning
a service that, once it is running, terminates prematurely.
In your case, the service does not start (its ‘start’ method returns
#f).
Now, it would probably make sense to have a mechanism to retry starting
services.
In the specific case of ‘network-online’ though, you could use a
different approach: the ‘start’ method could itself try retry pinging
the network several times and fail only if it failed to reach the
network after, say, 10s. (Remember that ‘start’ and ‘stop’ must
complete in a timely fashion.)
HTH,
Ludo’.