From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 18698 invoked from network); 26 Sep 2023 19:24:01 -0000 Received: from alyss.skarnet.org (95.142.172.232) by inbox.vuxu.org with ESMTPUTF8; 26 Sep 2023 19:24:01 -0000 Received: (qmail 14907 invoked by uid 89); 26 Sep 2023 19:24:26 -0000 Mailing-List: contact supervision-help@list.skarnet.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Received: (qmail 14900 invoked from network); 26 Sep 2023 19:24:26 -0000 From: "Laurent Bercot" To: supervision@list.skarnet.org Subject: Re: s6-rc-update does not create pipes when already-running service becomes a consumer Date: Tue, 26 Sep 2023 19:23:59 +0000 Message-Id: In-Reply-To: <169573880839.4539.10047970009995756240@localhost> References: <169573880839.4539.10047970009995756240@localhost> Reply-To: "Laurent Bercot" User-Agent: eM_Client/9.2.2093.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable 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. 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. 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. The situation is different with a non-producer becoming a producer, because a non-producer can already naturally write to its stdout, and its output simply falls through to the catch-all logger. When becoming a producer, it just needs to write into a pipe instead, and the pipe already exists since it's created on the consumer side, which already exists, so indeed it's all a matter of restarting the service. -- Laurent