From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp5.mail.ru (smtp5.mail.ru [94.100.179.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 34D7C42EF5C for ; Thu, 2 Jul 2020 10:35:37 +0300 (MSK) References: <20200630160209.279470-1-gorcunov@gmail.com> <20200630160209.279470-3-gorcunov@gmail.com> <20200702072755.GE2256@grain> From: Oleg Babin Message-ID: Date: Thu, 2 Jul 2020 10:35:34 +0300 MIME-Version: 1.0 In-Reply-To: <20200702072755.GE2256@grain> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: 8bit Content-Language: en-GB Subject: Re: [Tarantool-patches] [PATCH 2/3] lua/log: allow to use json formatter early List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Cyrill Gorcunov Cc: tml , yaroslav.dynnikov@gmail.com Hi! Thanks for your answers. On 02/07/2020 10:27, Cyrill Gorcunov wrote: > On Wed, Jul 01, 2020 at 01:01:43PM +0300, Oleg Babin wrote: >> tarantool> log.cfg{log = ' syslog:identity=test', format = 'json'} >> IllegalParams: expecting a file name or a prefix, such as '|', 'pipe:', >> 'syslog:' >> failed to initialize logging subsystem >> >> ``` > File a bug please. Lets be clear -- our config parsing code is > far from being user friendly, hopefully we will make it more > convenient with time. I'm pretty sure that using lua language > for parsing config params was wrong from the very beginning > (especially when we start to allow config procedure via > modules and to sync data between box config and module config > we've to provide some internal "api", this is utter crap but > imposible to fix without remake of the whole config engine. > I expect we will do so eventually). https://github.com/tarantool/tarantool/issues/5130 >> It should be a simple error but not panic. I've just add a space in log >> parameter. >> >> At the same time: >> >> ``` >> >> tarantool> box.cfg{log = ' syslog:'} >> --- >> - error: 'Incorrect value for option ''log'': expecting a file name or a >> prefix, such >>     as ''|'', ''pipe:'', ''syslog:''' >> ... >> >> ``` > Yup. > >>> @@ -459,13 +459,13 @@ local function prepare_cfg(cfg, default_cfg, template_cfg, >>> module_cfg[k], modify_cfg[k], readable_name) >>> elseif template_cfg[k] == 'module' then >>> local old_value = module_cfg[k].cfg_get(k, v) >>> - module_cfg_backup[k] = old_value >>> + module_cfg_backup[k] = old_value or box.NULL >> Could you please clarify this change? I see below you check "value == >> box.NULL" but if value is simple nil then such condition is true. >> >> ``` > The key moment is that Lua treats box.NULL in a special way. > > tarantool> a={log=box.NULL} > --- > ... > > tarantool> a > --- > - log: null > ... > > tarantool> a={log=nil} > --- > ... > > tarantool> a > --- > - [] > ... > > > IOW, when you set up some key to nil it gets vanished. > But when configuration fails I need to restore log=nil > if it were so (because setting cfg entries doesn't go > in one pass but instead one by one). Thus imagine we > set up log="syslog:" and made some mistake in format > key, I need to walk over backed up values and setup > them back. Thanks for the explanation.