From: Cyrill Gorcunov <gorcunov@gmail.com> To: tml <tarantool-patches@dev.tarantool.org> Cc: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Subject: [Tarantool-patches] [RFC 2/4] qsync: move synchro quorum update to separate routine Date: Thu, 19 Nov 2020 22:40:58 +0300 [thread overview] Message-ID: <20201119194100.840495-3-gorcunov@gmail.com> (raw) In-Reply-To: <20201119194100.840495-1-gorcunov@gmail.com> We will be updating replication_synchro_quorum parameter dynamically once we add support for number evaluation via symbolic formula, thus the update will be called not only from manual configuration changes but from cluster updates as well. Thus to reuse the code lets gather it into a separate routine. Part-of #5446 Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> --- src/box/box.cc | 4 +--- src/box/replication.cc | 18 ++++++++++++++++++ src/box/replication.h | 3 +++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/box/box.cc b/src/box/box.cc index 1f7dec362..5fcf28cb3 100644 --- a/src/box/box.cc +++ b/src/box/box.cc @@ -924,9 +924,7 @@ box_set_replication_synchro_quorum(void) int value = box_check_replication_synchro_quorum(); if (value < 0) return -1; - replication_synchro_quorum = value; - txn_limbo_on_parameters_change(&txn_limbo); - raft_cfg_election_quorum(box_raft()); + replication_synchro_quorum_update(value); return 0; } diff --git a/src/box/replication.cc b/src/box/replication.cc index 65512cf0f..c83392f81 100644 --- a/src/box/replication.cc +++ b/src/box/replication.cc @@ -40,7 +40,9 @@ #include "gc.h" #include "error.h" #include "relay.h" +#include "raft.h" #include "sio.h" +#include "txn_limbo.h" uint32_t instance_id = REPLICA_ID_NIL; struct tt_uuid INSTANCE_UUID; @@ -82,6 +84,22 @@ replicaset_quorum(void) return MIN(replication_connect_quorum, replicaset.applier.total); } +/** + * Update the synchro quorum number and propagate the + * change to dependent subsystems. + */ +void +replication_synchro_quorum_update(int value) +{ + assert(value > 0 && value < VCLOCK_MAX); + + say_info("replication: replication_synchro_quorum = %d", value); + + replication_synchro_quorum = value; + txn_limbo_on_parameters_change(&txn_limbo); + raft_cfg_election_quorum(box_raft()); +} + void replication_init(void) { diff --git a/src/box/replication.h b/src/box/replication.h index e57912848..ced519612 100644 --- a/src/box/replication.h +++ b/src/box/replication.h @@ -175,6 +175,9 @@ replication_disconnect_timeout(void) return replication_timeout * 4; } +void +replication_synchro_quorum_update(int value); + void replication_init(void); -- 2.26.2
next prev parent reply other threads:[~2020-11-19 19:41 UTC|newest] Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-11-19 19:40 [Tarantool-patches] [RFC 0/4] qsync: evaluate replication_synchro_quorum dynamically Cyrill Gorcunov 2020-11-19 19:40 ` [Tarantool-patches] [RFC 1/4] cfg: add cfg_isnumber helper Cyrill Gorcunov 2020-11-20 9:53 ` Serge Petrenko 2020-11-19 19:40 ` Cyrill Gorcunov [this message] 2020-11-20 10:06 ` [Tarantool-patches] [RFC 2/4] qsync: move synchro quorum update to separate routine Serge Petrenko 2020-11-20 11:01 ` Cyrill Gorcunov 2020-11-20 11:39 ` Serge Petrenko 2020-11-20 11:47 ` Cyrill Gorcunov 2020-11-19 19:40 ` [Tarantool-patches] [RFC 3/4] cfg: prepare symbolic evaluation of replication_synchro_quorum Cyrill Gorcunov 2020-11-20 10:32 ` Serge Petrenko 2020-11-20 11:34 ` Cyrill Gorcunov 2020-11-20 11:56 ` Serge Petrenko 2020-11-20 12:14 ` Cyrill Gorcunov 2020-11-26 14:38 ` Mons Anderson 2020-11-26 14:44 ` Cyrill Gorcunov 2020-11-26 16:01 ` Mons Anderson 2020-11-19 19:41 ` [Tarantool-patches] [RFC 4/4] qsync: allow to specify replication_synchro_quorum as a formula Cyrill Gorcunov 2020-11-20 10:50 ` Serge Petrenko 2020-11-20 12:01 ` Cyrill Gorcunov 2020-11-20 12:41 ` Serge Petrenko 2020-11-20 15:00 ` Cyrill Gorcunov
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=20201119194100.840495-3-gorcunov@gmail.com \ --to=gorcunov@gmail.com \ --cc=tarantool-patches@dev.tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [Tarantool-patches] [RFC 2/4] qsync: move synchro quorum update to separate routine' \ /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