gfleury wrote 4 years ago
start shepherd when a previous instance was killed by kill -9
(address . bug-guix@gnu.org)
Hi,
when killing shepherd i.e `pkill -9 shepherd` it left behind
`default-socket-file` and when restarted whithout remove the socket like
---------------------------------------------------------
rm /var/run/user/1000/shepherd/socket
---------------------------------------------------------
it throws a error:
---------------------------------------------------------
3 (primitive-load "/home/gfleury/prod/shepherd/./shepherd")
In shepherd.scm:
56:14 2 (main . _)
49:6 1 (open-server-socket _)
In unknown file:
0 (bind #<input-output: socket 16> #(1 "/run/user/1000?") #)
ERROR: In procedure bind:
In procedure bind: Address already in use
---------------------------------------------------------
something like this patch can fix it.
From 7d16c47bad6fd98cf0838d2fcd62735d846e7bab Mon Sep 17 00:00:00 2001
From: gfleury <gfleury@disroot.org>
Date: Sun, 27 Sep 2020 09:29:37 +0200
Subject: [PATCH] ensure that `default-socket-file` is not present.
* modules/shepherd.scm(main): remove a possible `default-socket-file`
left by a previous instance.
---
modules/shepherd.scm | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
Toggle diff (18 lines)
diff --git a/modules/shepherd.scm b/modules/shepherd.scm
index 9f80f62..d18567e 100644
--- a/modules/shepherd.scm
+++ b/modules/shepherd.scm
@@ -147,7 +147,10 @@ already ~a threads running, disabling 'signalfd' support")
(initialize-cli)
(let ((config-file #f)
- (socket-file default-socket-file)
+ (socket-file
+ (begin
+ (false-if-exception (delete-file default-socket-file))
+ default-socket-file))
(pid-file #f)
(secure #t)
(logfile #f))
--
2.28.0