<div dir="ltr"><div dir="ltr"><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Nov 9, 2019 at 6:53 AM Hauke Mehrtens <<a href="mailto:hauke@hauke-m.de">hauke@hauke-m.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 11/7/19 2:31 PM, Florian Eckert wrote:<br>
> The rpcd service is an important service, but if the service stops<br>
> working for any reason, no one will ever respawn that service. With this<br>
> commit, the procd service will monitor if the rpcd service<br>
> is running. If the rpcd service has crashed, then<br>
> procd respawns the rpcd service.<br>
> <br>
> Signed-off-by: Florian Eckert <<a href="mailto:fe@dev.tdt.de" target="_blank">fe@dev.tdt.de</a>><br>
> ---<br>
>  package/system/rpcd/Makefile        | 2 +-<br>
>  package/system/rpcd/files/rpcd.init | 1 +<br>
>  2 files changed, 2 insertions(+), 1 deletion(-)<br>
> <br>
> diff --git a/package/system/rpcd/Makefile b/package/system/rpcd/Makefile<br>
> index 6f23bbe96e..fcbcc613a6 100644<br>
> --- a/package/system/rpcd/Makefile<br>
> +++ b/package/system/rpcd/Makefile<br>
> @@ -8,7 +8,7 @@<br>
>  include $(TOPDIR)/<a href="http://rules.mk" rel="noreferrer" target="_blank">rules.mk</a><br>
>  <br>
>  PKG_NAME:=rpcd<br>
> -PKG_RELEASE:=1<br>
> +PKG_RELEASE:=2<br>
>  <br>
>  PKG_SOURCE_PROTO:=git<br>
>  PKG_SOURCE_URL=$(PROJECT_GIT)/project/rpcd.git<br>
> diff --git a/package/system/rpcd/files/rpcd.init b/package/system/rpcd/files/rpcd.init<br>
> index 447133c67a..3e9ea5bbf3 100755<br>
> --- a/package/system/rpcd/files/rpcd.init<br>
> +++ b/package/system/rpcd/files/rpcd.init<br>
> @@ -12,6 +12,7 @@ start_service() {<br>
>  <br>
>       procd_open_instance<br>
>       procd_set_param command "$PROG" ${socket:+-s "$socket"} ${timeout:+-t "$timeout"}<br>
> +     procd_set_param respawn ${respawn_retry:-0}<br>
<br>
Why do you set the respawn_retry to 0 by default?<br>
<br>
>       procd_close_instance<br>
>  }<br>
> <br></blockquote><div><br></div><div>(Resending to include the list itself. Apologies if anyone receives a duplicate.)</div><div><br></div>How would procd determine that rpcd is stuck, instead of crashed?<div><br></div><div>Is there support for some kind of heartbeating behavior, similar to what systemd offers?</div><div><br></div><div>One would imagine that procd's close integration with ubus would allow for this functionality to exist without a lot of additional code.</div><div><br></div><div><a href="http://0pointer.de/blog/projects/watchdog.html" target="_blank">http://0pointer.de/blog/projects/watchdog.html</a><br></div><div>> This service will automatically be restarted if it hasn't pinged the system manager for longer than 30s or if it fails otherwise. If it is restarted this way more often than 4 times in 5min action is taken and the system quickly rebooted, with all file systems being clean when it comes up again.  </div></div></div>