Re: s6-rc-update does not create pipes when already-running service becomes a consumer

From: Samuel Holland <>
Date: Wed, 27 Sep 2023 11:09:35 -0500

On 9/26/23 14:23, Laurent Bercot wrote:
>  I agree with all you're saying here...
>  ... except that this case makes no sense in the first place. A consumer
> and a non-consumer are fundamentally different things.
>  A running service that is not a consumer does not read anything on its
> stdin. It runs autonomously.
>  A consumer, by essence, is waiting on stdin input, in order to process
> it and do something with it.
>  If a non-consumer were to become a consumer, it would mean its very
> nature would be transformed. It would not behave in the same way at all.

That's not necessarily the case. A service may be a non-consumer but
still waiting on input from a socket or named pipe. Converting a pair of
services to communicate via an anonymous pipe instead of a named pipe is
not a very transformational change.

> And so, it makes no sense for it to be the "same" service. It should not
> be treated the same way; it should not keep the same name.

I would disagree here. There is no reason why the service named "foo"
before s6-rc-update and the service named "foo" after s6-rc-update need
to be related in any way. The naming convention is the user's policy.
After all, s6-rc-update already supports converting a service between a
oneshot and a longrun, which is an even more fundamental change.

>  So, if anything, the change I would make is, when a non-consumer
> becomes a consumer, s6-rc-update just throws an error and exits.
That all said, this sounds reasonable, assuming the error can be avoided
by using a conversion file.
Received on Wed Sep 27 2023 - 18:09:35 CEST

This archive was generated by hypermail 2.4.0 : Wed Sep 27 2023 - 18:10:16 CEST