From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id E20DD26FFD for ; Tue, 20 Aug 2019 08:08:25 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id v8zTwOMjY8nE for ; Tue, 20 Aug 2019 08:08:25 -0400 (EDT) Received: from smtp36.i.mail.ru (smtp36.i.mail.ru [94.100.177.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 04E6D251A0 for ; Tue, 20 Aug 2019 08:08:24 -0400 (EDT) Subject: [tarantool-patches] Re: [PATCH] tarantoolctl doesn't fail when box.cfg is delayed in init script References: <20190819073936.37388-1-m.melentiev@corp.mail.ru> <20190819075457.GA18442@atlas> From: "Maxim Melentiev" (Redacted sender "m.melentiev" for DMARC) Message-ID: Date: Tue, 20 Aug 2019 15:08:22 +0300 MIME-Version: 1.0 In-Reply-To: <20190819075457.GA18442@atlas> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: ru Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-Help: List-Unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-Subscribe: List-Owner: List-post: List-Archive: To: tarantool-patches@freelists.org Cc: kostja@tarantool.org, alexander.turenko@tarantool.org ping Konstantin Osipov, Alexander Turenko Sorry, forgot to CC in initial email. On 19/08/2019 10:54, Konstantin Osipov wrote: > * Max Melentiev [19/08/19 10:40]: >> Before this patch tarantoolctl failed with error if box.cfg >> was not called in init script because it used too patch box.cfg >> once again after init script. I've changed it to patch box.cfg >> second time inside wrapper_cfg. > Please explain better what this patch does, not how you achieved > that. > > And while you are at it, explain why we need a secondary patching > of box.cfg at all. What's the point of preserving the pid file? > > tarantoolctl: allow to start instances without a box.cfg{} > > Before this patch, tarantoolctl would fail if box.cfg{} was not > called in an instance script. > > This patch allows to start an instance without box.cfg{} in it. > Such an instance: > - may only be started under systemd? > - what can it do? > - ??? > > Please add a docboc entry, since it 's a significant behaviour > change. How such an instance is used? > > Otherwise LTGM. > > >> --- >> extra/dist/tarantoolctl.in | 21 +++++++++------------ >> 1 file changed, 9 insertions(+), 12 deletions(-) >> >> diff --git a/extra/dist/tarantoolctl.in b/extra/dist/tarantoolctl.in >> index 8adb57533..fd1abf9dc 100755 >> --- a/extra/dist/tarantoolctl.in >> +++ b/extra/dist/tarantoolctl.in >> @@ -483,6 +483,15 @@ local function wrapper_cfg(cfg) >> os.exit(1) >> end >> >> + local box_cfg_mt = getmetatable(box.cfg) >> + local orig_cfg_call = box_cfg_mt.__call >> + box_cfg_mt.__call = function(old_cfg, new_cfg) >> + if old_cfg.pid_file ~= nil and new_cfg ~= nil and new_cfg.pid_file ~= nil then >> + new_cfg.pid_file = old_cfg.pid_file >> + end >> + orig_cfg_call(old_cfg, new_cfg) >> + end >> + >> return data >> end >> >> @@ -547,18 +556,6 @@ local function start() >> end >> os.exit(1) >> end >> - local box_cfg_mt = getmetatable(box.cfg) >> - if box_cfg_mt == nil then >> - log.error('box.cfg() is not called in an instance file') >> - os.exit(1) >> - end >> - local old_call = box_cfg_mt.__call >> - box_cfg_mt.__call = function(old_cfg, cfg) >> - if old_cfg.pid_file ~= nil and cfg ~= nil and cfg.pid_file ~= nil then >> - cfg.pid_file = old_cfg.pid_file >> - end >> - old_call(old_cfg, cfg) >> - end >> return 0 >> end