Subject: Re: bug#53580: /var/run/shepherd/socket is missing on an otherwise functional system

From: Ludovic Courtès <[email-masked]>
Date: Sun, 11 Jun 2023 16:16:37 +0200

Hi,

Attila Lendvai <[email-masked]> skribis:

> when i'm working on my service code, which is `guix pull`ed in from my channel, then after a reconfigure i seem to have to reboot for my new code to get activated. a simple `herd restart` on the service didn't seem to be enough. i.e. the guile modules that my service code is using did not get reloaded into the PID 1 guile.

Guile modules do not get reloaded; there’s no mechanism in place to
reload previously-loaded Guile modules.

> keep in mind that this is a non-trivial service that e.g. spawns a long-lived fiber to talk to the daemon through its stdio while the daemon is running. IOW, its start GEXP is not just a simple forkexec, but something more complex that uses functions from guile modules that should be reloaded into PID 1 when the new version of the service is to be started.

OK, got it.  There’s not enough info here to be concrete, but I’d
recommend making it a separate process if you need to reliably
reload/replace the module.  IOW, you’d make it a “regular” service
spawned with ‘make-forkexec-constructor’ or similar.

However this doesn’t have anything to do with the initial bug report and
the title of this message; for clarity, please move further discussion
to guix-devel.

Thanks,
Ludo’.