[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: A Critique of Shepherd Design
From: |
Ludovic Courtès |
Subject: |
Re: A Critique of Shepherd Design |
Date: |
Sat, 20 Mar 2021 17:58:06 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Hi,
raid5atemyhomework <raid5atemyhomework@protonmail.com> skribis:
> Now, let us combine this with the second feature (really a bug): GNU
> shepherd is a simple, single-threaded Scheme program. That means that
> if the single thread enters an infinite loop (because of a Shepherd
> service description that entered an infinite loop), then Shepherd
> itself hangs.
You’re right that it’s an issue; in practice, it’s okay because we pay
attention to the code we run there, but obviously, mistakes could lead
to the situation you describe.
It’s a known problem and there are plans to address it, discussed on
this list a few times before. The Shepherd “recently” switched to
‘signalfd’ for signal handling in the main loop, with an eye on making
the whole loop event-driven:
https://issues.guix.gnu.org/41507
This will address this issue and unlock things like “socket activation”.
That said, let’s not lie to ourselves: the Shepherd’s design is
simplistic. I think that’s okay though because there’s a way to address
the main issues while keeping it simple.
Thanks,
Ludo’.