summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorNirbhay Choubey <nirbhay@mariadb.com>2016-06-27 18:30:07 -0400
committerNirbhay Choubey <nirbhay@mariadb.com>2016-06-27 18:30:07 -0400
commit7ff44b1a832b005264994cbdfc52f93f69b92cdc (patch)
treecc09930e6cab8690a3faf5f5b8d8de02650d08aa /sql
parentaa9c8f2a0d5d26103433a6c4bf614559cd4be310 (diff)
downloadmariadb-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.cc10
-rw-r--r--sql/mysqld.h4
-rw-r--r--sql/sys_vars.cc5
-rw-r--r--sql/wsrep_mysqld.cc2
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);