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.