From: Igor Munkin <imun@tarantool.org> To: Maria Khaydich <maria.khaydich@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH 1/2] box: make box.cfg idempotent function Date: Thu, 19 Mar 2020 01:26:02 +0300 [thread overview] Message-ID: <20200318222602.GF6392@tarantool.org> (raw) In-Reply-To: <1583942274.319390956@f377.i.mail.ru> Masha, Thanks for the patch! Please consider my comments below. On 11.03.20, Maria Khaydich wrote: > > Calling box.cfg{} more than once does not normally cause any errors > (even though it might not have any effect). In contrast, assigning > it to some variable and then using it after the box was configured > caused an error since the method was overwritten by the initial call > of <load_cfg>. > > The patch fixes this issue making box.cfg behave consistently in both > scenarios and is a follow-up for box: make box.execute idempotent function. > > Follow-up #4231 > --- > Issue: > https://github.com/tarantool/tarantool/issues/4231 > Branch: > https://github.com/tarantool/tarantool/compare/eljashm/gh-4231-box.execute-immutable-function > > src/box/lua/load_cfg.lua | 12 ++++--- > .../gh-4231-immutable-box-execute.test.lua | 34 ++++++++++++------- > 2 files changed, 30 insertions(+), 16 deletions(-) > diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua > index dc4293bdd..6753be6f3 100644 > --- a/src/box/lua/load_cfg.lua > +++ b/src/box/lua/load_cfg.lua > @@ -523,7 +523,15 @@ setmetatable(box, { > end > }) > > +local function box_is_configured() > + return ffi.C.box_is_configured() > +end > + Minor: Since box_is_configured is introduced within this patchset it could be placed properly in the first patch of the series. Feel free to ignore. > local function load_cfg(cfg) > + if box_is_configured() then > + reload_cfg(cfg) > + return > + end > cfg = upgrade_cfg(cfg, translate_cfg) > cfg = prepare_cfg(cfg, default_cfg, template_cfg, modify_cfg) > apply_default_cfg(cfg, default_cfg); <snipped> > diff --git a/test/box-tap/gh-4231-immutable-box-execute.test.lua b/test/box-tap/gh-4231-immutable-box-execute.test.lua Minor: test chunk name is left unchanged since the previous version and doesn't respect the commit message wording. > index 1544591bf..49aad154b 100755 > --- a/test/box-tap/gh-4231-immutable-box-execute.test.lua > +++ b/test/box-tap/gh-4231-immutable-box-execute.test.lua > @@ -1,28 +1,38 @@ > #!/usr/bin/env tarantool > local tap = require('tap') > local test = tap.test('execute') > -test:plan(2) > +test:plan(4) > > -- > --- gh-4231: box.execute should be an idempotent function > --- meaning its effect should be the same if a user chooses > --- to use it before explicit box.cfg invocation > +-- gh-4231: box.execute should be an idempotent function meaning > +-- its effect should be the same if the user chooses to save it > +-- before explicit box.cfg{} invocation and use the saved version > +-- afterwards. > +-- Within the scope of the same issue box.cfg method should also > +-- be kept idempotent for the same reasons. > -- > > -local function execute_is_immutable(execute, cmd, msg) > - local status, err = pcall(execute, cmd) > - test:ok(status and type(err) == 'table', msg) > -end > - > local box_execute_stub = box.execute > --- explicit call to load_cfg > +local box_cfg_stub = box.cfg > + > +-- Explicit box configuration that used to change the behavior. > box.cfg{} > + > local box_execute_actual = box.execute > +local box_cfg_actual = box.cfg > > -execute_is_immutable(box_execute_stub, > +local function is_idempotent(method, cmd, msg) Minor: IMHO these changes are better to be moved to the first patch of the series. Feel free to ignore. > + local status, err = pcall(method, cmd) > + test:ok(status, msg, nil, err) > +end > + > +is_idempotent(box_execute_stub, > "CREATE TABLE t1 (s1 INTEGER, PRIMARY KEY (s1));", > "box.execute stub works before box.cfg") > -execute_is_immutable(box_execute_actual, "DROP TABLE t1", > +is_idempotent(box_execute_actual, "DROP TABLE t1", > "box.execute works properly after box.cfg") > > +is_idempotent(box_cfg_stub, nil, "box.cfg stub works properly") > +is_idempotent(box_cfg_actual, nil, "box.cfg after configuration") > + > os.exit(test:check() and 0 or 1) > -- > 2.24.0 <snipped> > > > -- > Maria Khaydich > -- Best regards, IM
next prev parent reply other threads:[~2020-03-18 22:32 UTC|newest] Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-14 11:50 [Tarantool-patches] [PATCH] box.execute should be immutable function Maria 2019-11-14 16:51 ` Nikita Pettik 2019-12-17 14:39 ` Igor Munkin 2019-12-24 15:32 ` [Tarantool-patches] [PATCH] box: make box.execute() immutable Maria Khaydich 2019-12-25 1:30 ` Igor Munkin 2019-12-26 14:08 ` Alexander Turenko 2020-01-13 12:13 ` Maria Khaydich 2020-01-13 15:48 ` Igor Munkin 2020-01-18 10:56 ` Maria Khaydich 2020-02-20 17:51 ` Alexander Turenko 2020-02-20 21:15 ` Igor Munkin 2020-03-11 15:56 ` Maria Khaydich 2020-03-18 22:25 ` Igor Munkin 2020-05-02 14:52 ` Alexander Turenko 2020-05-12 16:16 ` Alexander Turenko 2020-03-11 15:57 ` [Tarantool-patches] [PATCH 1/2] box: make box.cfg idempotent function Maria Khaydich 2020-03-12 13:29 ` Konstantin Osipov 2020-03-12 19:25 ` Maria Khaydich 2020-03-12 20:00 ` Konstantin Osipov 2020-03-18 22:26 ` Igor Munkin 2020-03-19 7:19 ` Konstantin Osipov 2020-03-19 9:08 ` Igor Munkin 2020-03-19 10:06 ` Konstantin Osipov 2020-03-19 10:26 ` Igor Munkin 2020-05-06 11:17 ` Alexander Turenko 2020-05-06 11:49 ` Konstantin Osipov 2020-05-06 12:53 ` Alexander Turenko 2020-05-06 13:02 ` Konstantin Osipov 2020-05-06 13:13 ` Alexander Turenko 2020-03-18 22:26 ` Igor Munkin [this message] 2020-05-12 16:17 ` Alexander Turenko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200318222602.GF6392@tarantool.org \ --to=imun@tarantool.org \ --cc=maria.khaydich@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH 1/2] box: make box.cfg idempotent function' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox