Subject: Re: bug#76338: shepherd restarts service during shutdown and then waits forever

From: Dariqq <[email-masked]>
Date: Fri, 21 Feb 2025 15:04:54 +0000

Hello,

On 21.02.25 11:52, Ludovic Courtès wrote:
> Hello,
> 
> Dariqq <[email-masked]> skribis:
> 
>> The two services that I know of are thermald and virtlogd.
> 
> I found these:
> 
> --8<---------------cut here---------------start------------->8--- 
> scheme@(guix scripts system search)> ,pp (map shepherd-service- 
> provision (append-map (lambda (services) (remove (lambda (service) 
> (memq 'user-processes (shepherd-service-requirement service))) 
> services)) (map service-type-default-shepherd-services (fold- 
> service- types cons '()))))

> 
> Some of them are legitimate, many are not.  (Not sure why ‘virtlogd’
> doesn’t show up here.)
> 

Neat trick. A lot more than I thought.

>> Also the purpose of the user-processes service (and maybe also the
>> filesystems) service as synchronization targets are documented 
>> only in their definition and implicitly with the shepherd graph 
>> image. System-shepherd services that dont depend on anything are 
>> probably a bad idea and seems like a very common mistake for (new)
>> users implementing their own services. Maybe this should be a a
>> more explicit note in the documentation for shepherd-service- 
>> requirement and/or a small paragraph in the shepherd services 
>> intro?
> 
> Yes, agreed.  I’m not entirely sure where to document it; do you 
> have ideas?
> 

Maybe near the shepherd-graph image in "Shepherd Services" where the
special "targets" can be seen as well (the image looks a bit outdated as
e.g.the filesystem "target" is missing)? Not sure if there is another
  "target" worth documenting.

Also maybe a comment or warning in the documentation for shepherd-
service-requirement field that root-shepherd services that don't depend
on anything/ don't depend on user-processes is most likely not what a
user wants for a usual daemon service?

Consistency in all guix services helps as well,s.t. one can look at an
example and then wonder what this user-processes service is about.

> (The doc in this area probably needs a Spring cleanup…)
> 
> 
> Thanks, Ludo’.