Tarantool development patches archive
 help / color / mirror / Atom feed
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

  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