[tarantool-patches] Re: [PATCH 2/3] Complete module reload
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Fri Jul 20 17:15:19 MSK 2018
Thanks for the fixes! See 2 comments below.
On 20/07/2018 14:34, Alex Khatskevich wrote:
> here is a full diff:
>
> commit cd3740a45322458cde10e67f8018bc4787f443aa
> Author: AKhatskevich <avkhatskevich at tarantool.org>
> Date: Sat Jun 9 17:23:40 2018 +0300
>
> Complete module reload
>
> In case one need to upgrade vshard to a new version, this commit
> improves reload mechanism to allow to do that for a wider variety of
> possible changes (between two versions).
>
> Changes:
> * introduce cfg option `connection_outdate_delay`
> * improve reload mechanism
> * add `util.async_task` method, which runs a function after a
> delay
> * delete replicaset:rebind_connections method as it is replaced
> with `rebind_replicasets` which updates all replicasets at once
>
> Reload mechanism:
> * reload all vshard modules
> * create new `replicaset` and `replica` objects
> * reuse old netbox connections in new replica objects if
> possible
> * update router/storage.internal table
> * after a `connection_outdate_delay` disable old instances of
> `replicaset` and `replica` objects
>
> Reload works for modules:
> * vshard.router
> * vshard.storage
>
> Here is a module reload algorithm:
> * old vshard is working
> * delete old vshard src
> * install new vshard
> * call: package.loaded['vshard.router'] = nil
> * call: old_router = vshard.router -- Save working router copy.
> * call: vshard.router = require('vshard.router')
> * if require fails: continue using old_router
> * if require succeeds: use vshard.router
>
> In case reload process fails, old router/storage module, replicaset and
> replica objects continue working properly. If reload succeeds, all old
> objects would be deprecated.
>
> Extra changes:
> * introduce MODULE_INTERNALS which stores name of the module
> internal data in the global namespace
>
> Part of #112
>
> diff --git a/test/router/reload.result b/test/router/reload.result
> index 47f3c2e..71f82b2 100644
> --- a/test/router/reload.result
> +++ b/test/router/reload.result
> @@ -174,6 +174,132 @@ vshard.router.module_version()
> check_reloaded()
> ---
> ...
> +--
> +-- Outdate old replicaset and replica objets.
1. Typo: objets. Please, check the spelling in a text editor
before sending the patch.
> diff --git a/vshard/replicaset.lua b/vshard/replicaset.lua
> index 99f59aa..f6e971b 100644
> --- a/vshard/replicaset.lua
> +++ b/vshard/replicaset.lua
> @@ -21,6 +21,7 @@
> -- requests to the replica>,
> -- net_sequential_fail = <count of sequential failed
> -- requests to the replica>,
> +-- outdated = nil/true,
2. In scope of the point 11 of the previous review I asked you to
rename it to 'is_outdated', since it is a flag.
> -- }
> -- },
> -- master = <master server from the array above>,
More information about the Tarantool-patches
mailing list