mirror of
https://github.com/MariaDB/server.git
synced 2025-05-28 13:01:41 +03: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
@ -9,7 +9,6 @@ default-storage-engine=innodb
|
|||||||
wsrep-provider=@ENV.WSREP_PROVIDER
|
wsrep-provider=@ENV.WSREP_PROVIDER
|
||||||
wsrep_node_address=127.0.0.1
|
wsrep_node_address=127.0.0.1
|
||||||
# enforce read-committed characteristics across the cluster
|
# enforce read-committed characteristics across the cluster
|
||||||
wsrep-causal-reads=ON
|
|
||||||
wsrep-sync-wait=7
|
wsrep-sync-wait=7
|
||||||
|
|
||||||
[mysqld.1]
|
[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;
|
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=InnoDB;
|
||||||
SET GLOBAL wsrep_sync_wait = 1;
|
SET GLOBAL wsrep_sync_wait = 1;
|
||||||
SHOW TABLES LIKE '%t1';
|
SHOW TABLES LIKE '%t1';
|
||||||
|
@ -5,6 +5,13 @@
|
|||||||
--source include/galera_cluster.inc
|
--source include/galera_cluster.inc
|
||||||
--source include/have_innodb.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`
|
--let $wsrep_sync_wait_orig = `SELECT @@wsrep_sync_wait`
|
||||||
|
|
||||||
--connection node_1
|
--connection node_1
|
||||||
|
@ -9266,6 +9266,16 @@ mysqld_get_one_option(int optid, const struct my_option *opt, char *argument)
|
|||||||
#endif
|
#endif
|
||||||
break;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -636,6 +636,10 @@ enum options_mysqld
|
|||||||
OPT_SSL_KEY,
|
OPT_SSL_KEY,
|
||||||
OPT_THREAD_CONCURRENCY,
|
OPT_THREAD_CONCURRENCY,
|
||||||
OPT_WANT_CORE,
|
OPT_WANT_CORE,
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
OPT_WSREP_CAUSAL_READS,
|
||||||
|
OPT_WSREP_SYNC_WAIT,
|
||||||
|
#endif /* WITH_WSREP */
|
||||||
OPT_MYSQL_COMPATIBILITY,
|
OPT_MYSQL_COMPATIBILITY,
|
||||||
OPT_MYSQL_TO_BE_IMPLEMENTED,
|
OPT_MYSQL_TO_BE_IMPLEMENTED,
|
||||||
OPT_which_is_always_the_last
|
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(
|
static Sys_var_mybool Sys_wsrep_causal_reads(
|
||||||
"wsrep_causal_reads", "Setting this variable is equivalent "
|
"wsrep_causal_reads", "Setting this variable is equivalent "
|
||||||
"to setting wsrep_sync_wait READ flag",
|
"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),
|
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
|
||||||
ON_UPDATE(fix_wsrep_causal_reads),
|
ON_UPDATE(fix_wsrep_causal_reads),
|
||||||
DEPRECATED("'@@wsrep_sync_wait=1'"));
|
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 "
|
"an operation of the type specified by bitmask: 1 - READ(includes "
|
||||||
"SELECT, SHOW and BEGIN/START TRANSACTION); 2 - UPDATE and DELETE; 4 - "
|
"SELECT, SHOW and BEGIN/START TRANSACTION); 2 - UPDATE and DELETE; 4 - "
|
||||||
"INSERT and REPLACE",
|
"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),
|
VALID_RANGE(WSREP_SYNC_WAIT_NONE, WSREP_SYNC_WAIT_MAX),
|
||||||
DEFAULT(WSREP_SYNC_WAIT_NONE), BLOCK_SIZE(1),
|
DEFAULT(WSREP_SYNC_WAIT_NONE), BLOCK_SIZE(1),
|
||||||
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
|
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
|
||||||
|
@ -561,8 +561,6 @@ int wsrep_init()
|
|||||||
|
|
||||||
wsrep_sst_auth_init(wsrep_sst_auth);
|
wsrep_sst_auth_init(wsrep_sst_auth);
|
||||||
|
|
||||||
wsrep_causal_reads_update(&global_system_variables);
|
|
||||||
|
|
||||||
wsrep_ready_set(FALSE);
|
wsrep_ready_set(FALSE);
|
||||||
assert(wsrep_provider);
|
assert(wsrep_provider);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user