all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Shepherd news + planned feature removal
@ 2023-02-21 22:05 Ludovic Courtès
  2023-02-22 15:28 ` Thompson, David
  0 siblings, 1 reply; 5+ messages in thread
From: Ludovic Courtès @ 2023-02-21 22:05 UTC (permalink / raw)
  To: guix-devel

Hello Guix!

I recently pushed an updated and rebased variant of
‘wip-service-monitor’ in the Shepherd, previously discussed here:

  https://lists.gnu.org/archive/html/guix-devel/2022-06/msg00350.html

I’m going to merge it real soon if there are no objections, with the
goal of using it as the basis for 0.10.x and hopefully soonish 1.0.x.

The main news are:

  • Services can now be in one of 4 states: stopped, starting, started,
    and stopping.  (Previously it was just started/stopped.)

  • ‘herd status SERVICE’ reports those new states.

  • ‘start’ waits if the service was already starting; ‘stop’ waits if
    the service was already being stopped.

  • Services are now started in parallel, to the extent possible.

Internally, the big change is that, in addition to a “service registry”
actor (a fiber and associated channel where it receives requests), each
service has an associated actor (likewise, a fiber) that handles
service-specific operations such as ‘start’ and ‘stop’.  I find it
aesthetically pleasing and fun to work with; incidentally, it should
sound familiar to the goblins among us.  :-)

There’s a couple of shepherd features that I’d like to remove:
“persistency” (sic), and the “unknown” service.  These things were added
in the early days of dmd ca. 2003 but they’re totally untested, likely
broken, and probably useless.  If you have objections, now’s the time to
let it be known.

Feedback welcome!

Ludo’.


^ permalink raw reply	[flat|nested] 5+ messages in thread
* Shepherd news + planned feature removal
@ 2023-02-24  0:35 Adam Faiz
  2023-02-24  5:14 ` Liliana Marie Prikler
  2023-02-25 18:09 ` Ludovic Courtès
  0 siblings, 2 replies; 5+ messages in thread
From: Adam Faiz @ 2023-02-24  0:35 UTC (permalink / raw)
  To: ludo; +Cc: guix-devel

> Hello Guix!
> 
> I recently pushed an updated and rebased variant of
> ‘wip-service-monitor’ in the Shepherd, previously discussed here:
> 
>   https://lists.gnu.org/archive/html/guix-devel/2022-06/msg00350.html
> 
> I’m going to merge it real soon if there are no objections, with the
> goal of using it as the basis for 0.10.x and hopefully soonish 1.0.x.
> 
> The main news are:
> 
>   • Services can now be in one of 4 states: stopped, starting, started,
>     and stopping.  (Previously it was just started/stopped.)
> 
>   • ‘herd status SERVICE’ reports those new states.
> 
>   • ‘start’ waits if the service was already starting; ‘stop’ waits if
>     the service was already being stopped.
> 
>   • Services are now started in parallel, to the extent possible.
> 
> Internally, the big change is that, in addition to a “service registry”
> actor (a fiber and associated channel where it receives requests), each
> service has an associated actor (likewise, a fiber) that handles
> service-specific operations such as ‘start’ and ‘stop’.  I find it
> aesthetically pleasing and fun to work with; incidentally, it should
> sound familiar to the goblins among us.  :-)
> 
> There’s a couple of shepherd features that I’d like to remove:
> “persistency” (sic), and the “unknown” service.  These things were added
> in the early days of dmd ca. 2003 but they’re totally untested, likely
> broken, and probably useless.  If you have objections, now’s the time to
> let it be known.

I'm ok with current service state persistency being removed, since users can 
always modify a copy of the shepherd configuration file and tell the shepherd to 
load that instead, which achieves the same thing.

The 'unknown service fallback seems like a really cool feature, but if there 
isn't really any use for it, then I guess it should be removed. It can always be 
added back in if someone has a usecase for it.

I just have 1 question: Why is there a need for `herd status` to display whether 
a service is in a starting or stopping state?

 From the perspective of the shepherd, a service that is starting isn't running 
yet, and a service that is stopping isn't stopped yet.
The "starting" and "stopping" states are just an implementation detail to handle 
the shepherd being asynchronous. It's the running and stopped states that a user 
wants to know about a service.

> 
> Feedback welcome!
> 
> Ludo’.
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-02-25 18:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-21 22:05 Shepherd news + planned feature removal Ludovic Courtès
2023-02-22 15:28 ` Thompson, David
  -- strict thread matches above, loose matches on Subject: below --
2023-02-24  0:35 Adam Faiz
2023-02-24  5:14 ` Liliana Marie Prikler
2023-02-25 18:09 ` Ludovic Courtès

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.