[tarantool-patches] Re: [PATCH 1/2] wal: deprecate rows_per_wal in favour of wal_max_size

Alexander Turenko alexander.turenko at tarantool.org
Sat Oct 5 19:16:38 MSK 2019


I think it would look simpler if we would not use translation table to
mark options for which we want just give a warning w/o any additional
actions.

I mean, leave 'translate_cfg' as is and add another table:

 | deprecate_cfg = {
 |     'rows_per_wal',
 | }

But the patch was already pushed and this is not much important. So
okay.

WBR, Alexander Turenko.

On Sat, Sep 07, 2019 at 06:05:36PM +0200, Vladislav Shpilevoy wrote:
> rows_per_wal does not allow to properly limit size of WAL logs.
> A user would need to estimate size of each WAL row to do that.
> Now WAL supports option wal_max_size allowing to limit WAL size
> much more precise.
> 
> Part of #3762
> ---
>  src/box/lua/load_cfg.lua | 39 ++++++++++++++++++++++++++++-----------
>  1 file changed, 28 insertions(+), 11 deletions(-)
> 
> diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua
> index d402468ab..4432e0d08 100644
> --- a/src/box/lua/load_cfg.lua
> +++ b/src/box/lua/load_cfg.lua
> @@ -283,19 +283,32 @@ local function convert_gb(size)
>      return math.floor(size * 1024 * 1024 * 1024)
>  end
>  
> --- Old to new config translation tables
> +-- Old to new config translation tables. In case a translation is
> +-- not 1-to-1, then a function can be used. It takes 2 parameters:
> +-- value of the old option, value of the new if present. It
> +-- returns two values - value to replace the old option and to
> +-- replace the new one.
>  local translate_cfg = {
>      snapshot_count = {'checkpoint_count'},
>      snapshot_period = {'checkpoint_interval'},
> -    slab_alloc_arena = {'memtx_memory', convert_gb},
> +    slab_alloc_arena = {'memtx_memory', function(old)
> +        return nil, convert_gb(old)
> +    end},
>      slab_alloc_minimal = {'memtx_min_tuple_size'},
>      slab_alloc_maximal = {'memtx_max_tuple_size'},
>      snap_dir = {'memtx_dir'},
>      logger = {'log'},
>      logger_nonblock = {'log_nonblock'},
> -    panic_on_snap_error = {'force_recovery', function (p) return not p end},
> -    panic_on_wal_error = {'force_recovery', function (p) return not p end},
> +    panic_on_snap_error = {'force_recovery', function(old)
> +        return nil, not old end
> +    },
> +    panic_on_wal_error = {'force_recovery', function(old)
> +        return nil, not old end
> +    },
>      replication_source = {'replication'},
> +    rows_per_wal = {'wal_max_size', function(old, new)
> +        return old, new
> +    end},
>  }
>  
>  -- Upgrade old config
> @@ -307,19 +320,23 @@ local function upgrade_cfg(cfg, translate_cfg)
>      for k, v in pairs(cfg) do
>          local translation = translate_cfg[k]
>          if translation ~= nil then
> -            log.warn('Deprecated option %s, please use %s instead', k, translation[1])
> -            local new_val
> -            if translation[2] == nil then
> +            local new_key = translation[1]
> +            local transofm = translation[2]
> +            log.warn('Deprecated option %s, please use %s instead', k, new_key)
> +            local new_val_orig = cfg[new_key]
> +            local old_val, new_val
> +            if transofm == nil then
>                  new_val = v
>              else
> -                new_val = translation[2](v)
> +                old_val, new_val = transofm(v, new_val_orig)
>              end
> -            if cfg[translation[1]] ~= nil and
> -               cfg[translation[1]] ~= new_val then
> +            if new_val_orig ~= nil and
> +               new_val_orig ~= new_val then
>                  box.error(box.error.CFG, k,
>                            'can not override a value for a deprecated option')
>              end
> -            result_cfg[translation[1]] = new_val
> +            result_cfg[k] = old_val
> +            result_cfg[new_key] = new_val
>          else
>              result_cfg[k] = v
>          end
> -- 
> 2.20.1 (Apple Git-117)
> 




More information about the Tarantool-patches mailing list