diff options
author | Nirbhay Choubey <nirbhay@mariadb.com> | 2016-06-27 18:30:07 -0400 |
---|---|---|
committer | Nirbhay Choubey <nirbhay@mariadb.com> | 2016-06-27 18:30:07 -0400 |
commit | 7ff44b1a832b005264994cbdfc52f93f69b92cdc (patch) | |
tree | cc09930e6cab8690a3faf5f5b8d8de02650d08aa /sql | |
parent | aa9c8f2a0d5d26103433a6c4bf614559cd4be310 (diff) | |
download | mariadb-git-7ff44b1a832b005264994cbdfc52f93f69b92cdc.tar.gz |
MDEV-10161: wsrep_sync_wait not enabled when set to 1 in config file
Since wsrep_sync_wait & wsrep_causal_reads variables are related,
they are always kept in sync whenever one of them changes.
Same is tried on server start, where wsrep_sync_wait get updated
based on wsrep_causal_reads' value. But, since wsrep_causal_reads
is OFF by default, wsrep_sync_wait's value gets modified and loses
its WSREP_SYNC_WAIT_BEFORE_READ bit.
Fixed by syncing wsrep_sync_wait & wsrep_causal_reads values
individually on server start in mysqld_get_one_option() based
on command line arguments used.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/mysqld.cc | 10 | ||||
-rw-r--r-- | sql/mysqld.h | 4 | ||||
-rw-r--r-- | sql/sys_vars.cc | 5 | ||||
-rw-r--r-- | sql/wsrep_mysqld.cc | 2 |
4 files changed, 17 insertions, 4 deletions
diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 6c8f79bf37a..a19ac8aa968 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -9266,6 +9266,16 @@ mysqld_get_one_option(int optid, const struct my_option *opt, char *argument) #endif break; } +#ifdef WITH_WSREP + case OPT_WSREP_CAUSAL_READS: + wsrep_causal_reads_update(&global_system_variables); + break; + case OPT_WSREP_SYNC_WAIT: + global_system_variables.wsrep_causal_reads= + MY_TEST(global_system_variables.wsrep_sync_wait & + WSREP_SYNC_WAIT_BEFORE_READ); + break; +#endif /* WITH_WSREP */ } return 0; } diff --git a/sql/mysqld.h b/sql/mysqld.h index 594afac521d..8454f2410dc 100644 --- a/sql/mysqld.h +++ b/sql/mysqld.h @@ -636,6 +636,10 @@ enum options_mysqld OPT_SSL_KEY, OPT_THREAD_CONCURRENCY, OPT_WANT_CORE, +#ifdef WITH_WSREP + OPT_WSREP_CAUSAL_READS, + OPT_WSREP_SYNC_WAIT, +#endif /* WITH_WSREP */ OPT_MYSQL_COMPATIBILITY, OPT_MYSQL_TO_BE_IMPLEMENTED, OPT_which_is_always_the_last diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 29e167d4664..c733976452c 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -4872,7 +4872,8 @@ static bool fix_wsrep_causal_reads(sys_var *self, THD* thd, enum_var_type var_ty static Sys_var_mybool Sys_wsrep_causal_reads( "wsrep_causal_reads", "Setting this variable is equivalent " "to setting wsrep_sync_wait READ flag", - SESSION_VAR(wsrep_causal_reads), CMD_LINE(OPT_ARG), DEFAULT(FALSE), + SESSION_VAR(wsrep_causal_reads), + CMD_LINE(OPT_ARG, OPT_WSREP_CAUSAL_READS), DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(fix_wsrep_causal_reads), DEPRECATED("'@@wsrep_sync_wait=1'")); @@ -4882,7 +4883,7 @@ static Sys_var_uint Sys_wsrep_sync_wait( "an operation of the type specified by bitmask: 1 - READ(includes " "SELECT, SHOW and BEGIN/START TRANSACTION); 2 - UPDATE and DELETE; 4 - " "INSERT and REPLACE", - SESSION_VAR(wsrep_sync_wait), CMD_LINE(OPT_ARG), + SESSION_VAR(wsrep_sync_wait), CMD_LINE(OPT_ARG, OPT_WSREP_SYNC_WAIT), VALID_RANGE(WSREP_SYNC_WAIT_NONE, WSREP_SYNC_WAIT_MAX), DEFAULT(WSREP_SYNC_WAIT_NONE), BLOCK_SIZE(1), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index 7b242af2cdb..823a2a76281 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -561,8 +561,6 @@ int wsrep_init() wsrep_sst_auth_init(wsrep_sst_auth); - wsrep_causal_reads_update(&global_system_variables); - wsrep_ready_set(FALSE); assert(wsrep_provider); |