From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp35.i.mail.ru (smtp35.i.mail.ru [94.100.177.95]) (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 28E1445C305 for ; Fri, 4 Dec 2020 13:15:31 +0300 (MSK) References: <20201203140446.66312-1-gorcunov@gmail.com> From: Serge Petrenko Message-ID: <1332bf7e-894f-883d-b2c5-edf4b95a285b@tarantool.org> Date: Fri, 4 Dec 2020 13:15:30 +0300 MIME-Version: 1.0 In-Reply-To: <20201203140446.66312-1-gorcunov@gmail.com> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: 8bit Content-Language: en-GB Subject: Re: [Tarantool-patches] [PATCH v3 0/3] qsync: evaluate replication_synchro_quorum dynamically List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Cyrill Gorcunov , tml Cc: Mons Anderson , Vladislav Shpilevoy 03.12.2020 17:04, Cyrill Gorcunov пишет: > From the issue description: > > > The reason is that users will likely not understand how the option > > should be configured properly, and will break something accidentally. > > So this idea about allowance to write an expression on the cluster > > size allows to specify the canonical N/2 + 1 formula, and not update > > it manually on all instances, when a new node is added, or an existing > > one is deleted. > > v2 (by Serge): > - keep replication_synchro_quorum been skipped at bootstrap in load_cfg.lua > - eliminate redundant say_info calls > - call quorum update routine from replica_set_id/replica_clear_id > - use replicaset.registered_count directly when evaluating the formula > - make quorum evaluation procedure always return value in allowed range, > the only error which may happen here is some syntax error or Lua evaluation > errors > - a test has been added > > v3 (by Serge, Mons, Vlad): > - use replica.lua in tests > - use N symbol in formula > - use lua_pcall when evaluating a formula > - make formula more safe itself, provide various math helpers > - use box_update_replication_synchro_quorum name as a general > updater from replication code > - do not forget to update raft election quorum inside > box_update_replication_synchro_quorum > - print warns inside functions evaluator if value get out of bounds > > issue https://github.com/tarantool/tarantool/issues/5446 > branch gorcunov/gh-5446-eval-quorum-3 > > Cyrill Gorcunov (3): > cfg: add cfg_isnumber helper > cfg: support symbolic evaluation of replication_synchro_quorum > test: add replication/gh-5446-sqync-eval-quorum.test.lua > > src/box/box.cc | 142 +++++++++++++++- > src/box/box.h | 1 + > src/box/lua/load_cfg.lua | 2 +- > src/box/replication.cc | 4 +- > src/cfg.c | 9 + > src/cfg.h | 6 + > .../gh-5446-sqync-eval-quorum.result | 156 ++++++++++++++++++ > .../gh-5446-sqync-eval-quorum.test.lua | 62 +++++++ > test/replication/replica-quorum-1.lua | 1 + > test/replication/replica-quorum-2.lua | 1 + > test/replication/replica-quorum-3.lua | 1 + > test/replication/replica-quorum-4.lua | 1 + > 12 files changed, 379 insertions(+), 7 deletions(-) > create mode 100644 test/replication/gh-5446-sqync-eval-quorum.result > create mode 100644 test/replication/gh-5446-sqync-eval-quorum.test.lua > create mode 120000 test/replication/replica-quorum-1.lua > create mode 120000 test/replication/replica-quorum-2.lua > create mode 120000 test/replication/replica-quorum-3.lua > create mode 120000 test/replication/replica-quorum-4.lua > > > base-commit: bd03dfc76c0b76f56374c3e66052e2af0c50ae65 Thanks for the patchset! LGTM. -- Serge Petrenko