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