mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
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.
This commit is contained in:
parent
aa9c8f2a0d
commit
7ff44b1a83
7 changed files with 33 additions and 5 deletions
|
@ -9,7 +9,6 @@ default-storage-engine=innodb
|
|||
wsrep-provider=@ENV.WSREP_PROVIDER
|
||||
wsrep_node_address=127.0.0.1
|
||||
# enforce read-committed characteristics across the cluster
|
||||
wsrep-causal-reads=ON
|
||||
wsrep-sync-wait=7
|
||||
|
||||
[mysqld.1]
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
#
|
||||
# MDEV-10161: wsrep_sync_wait not enabled when set to 1 in config file
|
||||
#
|
||||
SELECT @@global.wsrep_sync_wait;
|
||||
@@global.wsrep_sync_wait
|
||||
7
|
||||
SELECT @@global.wsrep_causal_reads;
|
||||
@@global.wsrep_causal_reads
|
||||
1
|
||||
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=InnoDB;
|
||||
SET GLOBAL wsrep_sync_wait = 1;
|
||||
SHOW TABLES LIKE '%t1';
|
||||
|
|
|
@ -5,6 +5,13 @@
|
|||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-10161: wsrep_sync_wait not enabled when set to 1 in config file
|
||||
--echo #
|
||||
# galera_2nodes.cnf sets wsrep_sync_wait to 7
|
||||
SELECT @@global.wsrep_sync_wait;
|
||||
SELECT @@global.wsrep_causal_reads;
|
||||
|
||||
--let $wsrep_sync_wait_orig = `SELECT @@wsrep_sync_wait`
|
||||
|
||||
--connection node_1
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue