From: Cyrill Gorcunov <gorcunov@gmail.com>
To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Cc: Mons Anderson <v.perepelitsa@corp.mail.ru>,
tml <tarantool-patches@dev.tarantool.org>
Subject: Re: [Tarantool-patches] [PATCH v3 2/3] cfg: support symbolic evaluation of replication_synchro_quorum
Date: Mon, 7 Dec 2020 23:17:13 +0300 [thread overview]
Message-ID: <20201207201713.GE2303@grain> (raw)
In-Reply-To: <bae58957-3699-cc0b-aae5-ebe223617e67@tarantool.org>
Here is a diff I force pushed
---
diff --git a/src/box/box.cc b/src/box/box.cc
index b9d078de4..2dfb5bc1c 100644
--- a/src/box/box.cc
+++ b/src/box/box.cc
@@ -578,17 +578,9 @@ eval_replication_synchro_quorum(int nr_replicas)
"fmod = math.fmod,"
"}})\n"
"return math.floor(f())\n";
- char buf[1024];
int value = -1;
-
const char *expr = cfg_gets("replication_synchro_quorum");
- size_t ret = snprintf(buf, sizeof(buf), fmt, expr, nr_replicas);
- if (ret >= sizeof(buf)) {
- diag_set(ClientError, ER_CFG,
- "replication_synchro_quorum",
- "the expression is too big");
- return -1;
- }
+ const char *buf = tt_sprintf(fmt, expr, nr_replicas);
luaL_loadstring(tarantool_L, buf);
if (lua_pcall(tarantool_L, 0, 1, 0) != 0) {
@@ -608,17 +600,11 @@ eval_replication_synchro_quorum(int nr_replicas)
* value (say it was n-2) do not treat it as an
* error but just yield a minimum valid magnitude.
*/
- if (value < 0) {
- const int value_min = 1;
- say_warn_ratelimited("replication_synchro_quorum evaluated "
- "to the negative value %d, set to %d",
- value, value_min);
- value = value_min;
- } else if (value >= VCLOCK_MAX) {
+ if (value >= VCLOCK_MAX) {
const int value_max = VCLOCK_MAX - 1;
- say_warn_ratelimited("replication_synchro_quorum evaluated "
- "to value %d, set to %d",
- value, value_max);
+ say_warn("replication_synchro_quorum evaluated "
+ "to value %d, set to %d",
+ value, value_max);
value = value_max;
}
We use tt_sprintf and drop value < 0 test (because we return MAX(1, value)
@@ -1001,30 +987,6 @@ box_set_replication_sync_lag(void)
replication_sync_lag = box_check_replication_sync_lag();
}
-/**
- * Assign new replication_synchro_quorum value
- * and notify dependent subsystems.
- */
-static void
-set_replication_synchro_quorum(int quorum)
-{
- assert(quorum > 0 && quorum < VCLOCK_MAX);
-
- replication_synchro_quorum = quorum;
- txn_limbo_on_parameters_change(&txn_limbo);
- box_raft_update_election_quorum();
-}
-
-int
-box_set_replication_synchro_quorum(void)
-{
- int value = box_check_replication_synchro_quorum();
- if (value < 0)
- return -1;
- set_replication_synchro_quorum(value);
- return 0;
-}
-
/**
* Renew replication_synchro_quorum value if defined
* as a formula and we need to recalculate it.
@@ -1053,7 +1015,20 @@ box_update_replication_synchro_quorum(void)
if (quorum < 0 || quorum >= VCLOCK_MAX)
panic("failed to eval replication_synchro_quorum");
say_info("update replication_synchro_quorum = %d", quorum);
- set_replication_synchro_quorum(quorum);
+
+ replication_synchro_quorum = quorum;
+ txn_limbo_on_parameters_change(&txn_limbo);
+ box_raft_update_election_quorum();
+}
+
+int
+box_set_replication_synchro_quorum(void)
+{
+ int value = box_check_replication_synchro_quorum();
+ if (value < 0)
+ return -1;
+ box_update_replication_synchro_quorum();
+ return 0;
}
Use box_update_replication_synchro_quorum from inside of box_set_replication_synchro_quorum.
I'm working on test now but it is yet incomplete.
next prev parent reply other threads:[~2020-12-07 20:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-03 14:04 [Tarantool-patches] [PATCH v3 0/3] qsync: evaluate replication_synchro_quorum dynamically Cyrill Gorcunov
2020-12-03 14:04 ` [Tarantool-patches] [PATCH v3 1/3] cfg: add cfg_isnumber helper Cyrill Gorcunov
2020-12-03 14:04 ` [Tarantool-patches] [PATCH v3 2/3] cfg: support symbolic evaluation of replication_synchro_quorum Cyrill Gorcunov
2020-12-04 23:52 ` Vladislav Shpilevoy
2020-12-07 20:17 ` Cyrill Gorcunov [this message]
2020-12-07 21:25 ` Vladislav Shpilevoy
2020-12-07 21:48 ` Cyrill Gorcunov
2020-12-08 8:02 ` Cyrill Gorcunov
2020-12-09 23:22 ` Vladislav Shpilevoy
2020-12-11 12:25 ` Cyrill Gorcunov
2020-12-13 18:12 ` Vladislav Shpilevoy
2020-12-03 14:04 ` [Tarantool-patches] [PATCH v3 3/3] test: add replication/gh-5446-sqync-eval-quorum.test.lua Cyrill Gorcunov
2020-12-04 23:52 ` Vladislav Shpilevoy
2020-12-08 8:48 ` Cyrill Gorcunov
2020-12-09 23:22 ` Vladislav Shpilevoy
2020-12-04 10:15 ` [Tarantool-patches] [PATCH v3 0/3] qsync: evaluate replication_synchro_quorum dynamically Serge Petrenko
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=20201207201713.GE2303@grain \
--to=gorcunov@gmail.com \
--cc=tarantool-patches@dev.tarantool.org \
--cc=v.perepelitsa@corp.mail.ru \
--cc=v.shpilevoy@tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH v3 2/3] cfg: support symbolic evaluation of replication_synchro_quorum' \
/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