Commit 0d55b020 authored by Sergei Golubchik's avatar Sergei Golubchik

Merge branch 'bb-10.2-release' into bb-10.3-release

parents 691f93d6 ce3a2a68
......@@ -30,3 +30,5 @@ partition : MDEV-19958 Galera test failure on galera.partition
query_cache: MDEV-15805 Test failure on galera.query_cache
sql_log_bin : MDEV-21491 galera.sql_log_bin
versioning_trx_id: MDEV-18590: galera.versioning_trx_id: Test failure: mysqltest: Result content mismatch
galera_wsrep_provider_unset_set: wsrep_provider is read-only for security reasons
pxc-421: wsrep_provider is read-only for security reasons
--echo Loading wsrep provider ...
--disable_query_log
--eval SET GLOBAL wsrep_provider = '$wsrep_provider_orig';
--eval SET GLOBAL wsrep_cluster_address = '$wsrep_cluster_address_orig';
--enable_query_log
......
--echo Unloading wsrep provider ...
--let $wsrep_cluster_address_orig = `SELECT @@wsrep_cluster_address`
--let $wsrep_provider_orig = `SELECT @@wsrep_provider`
--let $wsrep_provider_options_orig = `SELECT @@wsrep_provider_options`
SET GLOBAL wsrep_provider = 'none';
SET GLOBAL wsrep_cluster_address = '';
......@@ -21,7 +21,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Unloading wsrep provider ...
SET GLOBAL wsrep_provider = 'none';
SET GLOBAL wsrep_cluster_address = '';
connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
......
......@@ -30,7 +30,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Unloading wsrep provider ...
SET GLOBAL wsrep_provider = 'none';
SET GLOBAL wsrep_cluster_address = '';
connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
......
......@@ -30,7 +30,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Unloading wsrep provider ...
SET GLOBAL wsrep_provider = 'none';
SET GLOBAL wsrep_cluster_address = '';
connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
......
......@@ -349,7 +349,7 @@ NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY NO
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME WSREP_ON
SESSION_VALUE OFF
......@@ -405,7 +405,7 @@ NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY NO
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME WSREP_PROVIDER_OPTIONS
SESSION_VALUE NULL
......
#
# wsrep_notify_cmd
#
call mtr.add_suppression("WSREP: Failed to get provider options");
# save the initial value
SET @wsrep_notify_cmd_global_saved = @@global.wsrep_notify_cmd;
# default
SELECT @@global.wsrep_notify_cmd;
@@global.wsrep_notify_cmd
# scope
SELECT @@session.wsrep_notify_cmd;
ERROR HY000: Variable 'wsrep_notify_cmd' is a GLOBAL variable
SET @@global.wsrep_notify_cmd='notify_cmd';
SELECT @@global.wsrep_notify_cmd;
@@global.wsrep_notify_cmd
notify_cmd
# valid values
SET @@global.wsrep_notify_cmd='command';
SELECT @@global.wsrep_notify_cmd;
@@global.wsrep_notify_cmd
command
SET @@global.wsrep_notify_cmd='hyphenated-command';
SELECT @@global.wsrep_notify_cmd;
@@global.wsrep_notify_cmd
hyphenated-command
SET @@global.wsrep_notify_cmd=default;
SELECT @@global.wsrep_notify_cmd;
@@global.wsrep_notify_cmd
SET @@global.wsrep_notify_cmd=NULL;
SELECT @@global.wsrep_notify_cmd;
@@global.wsrep_notify_cmd
NULL
# invalid values
SET @@global.wsrep_notify_cmd=1;
ERROR 42000: Incorrect argument type to variable 'wsrep_notify_cmd'
SELECT @@global.wsrep_notify_cmd;
@@global.wsrep_notify_cmd
NULL
# restore the initial value
SET @@global.wsrep_notify_cmd = @wsrep_notify_cmd_global_saved;
# End of test
#
# wsrep_provider
#
# save the initial value
SET @wsrep_provider_global_saved = @@global.wsrep_provider;
# default
SELECT @@global.wsrep_provider;
@@global.wsrep_provider
none
# scope
SELECT @@session.wsrep_provider;
ERROR HY000: Variable 'wsrep_provider' is a GLOBAL variable
SELECT @@global.wsrep_provider;
@@global.wsrep_provider
none
# valid values
SET @@global.wsrep_provider=default;
SELECT @@global.wsrep_provider;
@@global.wsrep_provider
none
# invalid values
SET @@global.wsrep_provider='/invalid/libgalera_smm.so';
ERROR 42000: Variable 'wsrep_provider' can't be set to the value of '/invalid/libgalera_smm.so'
SET @@global.wsrep_provider=NULL;
ERROR 42000: Variable 'wsrep_provider' can't be set to the value of 'NULL'
SELECT @@global.wsrep_provider;
@@global.wsrep_provider
none
SET @@global.wsrep_provider=1;
ERROR 42000: Incorrect argument type to variable 'wsrep_provider'
SELECT @@global.wsrep_provider;
@@global.wsrep_provider
none
# restore the initial value
SET @@global.wsrep_provider = @wsrep_provider_global_saved;
# End of test
#
# wsrep_provider_options
#
call mtr.add_suppression("WSREP: Failed to get provider options");
SET @@global.wsrep_provider = @@global.wsrep_provider;
# save the initial value
SET @wsrep_provider_options_global_saved = @@global.wsrep_provider_options;
# default
SELECT @@global.wsrep_provider_options;
@@global.wsrep_provider_options
# scope
SELECT @@session.wsrep_provider_options;
ERROR HY000: Variable 'wsrep_provider_options' is a GLOBAL variable
SET @@global.wsrep_provider_options='option1';
SELECT @@global.wsrep_provider_options;
@@global.wsrep_provider_options
option1
# valid values
SET @@global.wsrep_provider_options='name1=value1;name2=value2';
SELECT @@global.wsrep_provider_options;
@@global.wsrep_provider_options
name1=value1;name2=value2
SET @@global.wsrep_provider_options='hyphenated-name:value';
SELECT @@global.wsrep_provider_options;
@@global.wsrep_provider_options
hyphenated-name:value
SET @@global.wsrep_provider_options=default;
SELECT @@global.wsrep_provider_options;
@@global.wsrep_provider_options
# invalid values
SET @@global.wsrep_provider_options=1;
ERROR 42000: Incorrect argument type to variable 'wsrep_provider_options'
SELECT @@global.wsrep_provider_options;
@@global.wsrep_provider_options
SET @@global.wsrep_provider_options=NULL;
Got one of the listed errors
SELECT @@global.wsrep_provider_options;
@@global.wsrep_provider_options
NULL
# restore the initial value
SET @@global.wsrep_provider_options = @wsrep_provider_options_global_saved;
# End of test
--source include/have_wsrep.inc
--echo #
--echo # wsrep_notify_cmd
--echo #
call mtr.add_suppression("WSREP: Failed to get provider options");
--echo # save the initial value
SET @wsrep_notify_cmd_global_saved = @@global.wsrep_notify_cmd;
--echo # default
SELECT @@global.wsrep_notify_cmd;
--echo
--echo # scope
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@session.wsrep_notify_cmd;
SET @@global.wsrep_notify_cmd='notify_cmd';
SELECT @@global.wsrep_notify_cmd;
--echo
--echo # valid values
SET @@global.wsrep_notify_cmd='command';
SELECT @@global.wsrep_notify_cmd;
SET @@global.wsrep_notify_cmd='hyphenated-command';
SELECT @@global.wsrep_notify_cmd;
SET @@global.wsrep_notify_cmd=default;
SELECT @@global.wsrep_notify_cmd;
SET @@global.wsrep_notify_cmd=NULL;
SELECT @@global.wsrep_notify_cmd;
--echo
--echo # invalid values
--error ER_WRONG_TYPE_FOR_VAR
SET @@global.wsrep_notify_cmd=1;
SELECT @@global.wsrep_notify_cmd;
--echo
--echo # restore the initial value
SET @@global.wsrep_notify_cmd = @wsrep_notify_cmd_global_saved;
--echo # End of test
--source include/have_wsrep.inc
--echo #
--echo # wsrep_provider
--echo #
--echo # save the initial value
SET @wsrep_provider_global_saved = @@global.wsrep_provider;
--echo # default
SELECT @@global.wsrep_provider;
--echo
--echo # scope
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@session.wsrep_provider;
SELECT @@global.wsrep_provider;
--echo
--echo # valid values
SET @@global.wsrep_provider=default;
SELECT @@global.wsrep_provider;
--echo
--echo # invalid values
--error ER_WRONG_VALUE_FOR_VAR
SET @@global.wsrep_provider='/invalid/libgalera_smm.so';
--error ER_WRONG_VALUE_FOR_VAR
SET @@global.wsrep_provider=NULL;
SELECT @@global.wsrep_provider;
--error ER_WRONG_TYPE_FOR_VAR
SET @@global.wsrep_provider=1;
SELECT @@global.wsrep_provider;
--echo
--echo # restore the initial value
SET @@global.wsrep_provider = @wsrep_provider_global_saved;
--echo # End of test
--source include/have_wsrep.inc
--echo #
--echo # wsrep_provider_options
--echo #
call mtr.add_suppression("WSREP: Failed to get provider options");
SET @@global.wsrep_provider = @@global.wsrep_provider;
--echo # save the initial value
SET @wsrep_provider_options_global_saved = @@global.wsrep_provider_options;
--echo # default
SELECT @@global.wsrep_provider_options;
--echo
--echo # scope
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@session.wsrep_provider_options;
--error 0,ER_WRONG_ARGUMENTS
SET @@global.wsrep_provider_options='option1';
SELECT @@global.wsrep_provider_options;
--echo
--echo # valid values
--error 0,ER_WRONG_ARGUMENTS
SET @@global.wsrep_provider_options='name1=value1;name2=value2';
SELECT @@global.wsrep_provider_options;
--error 0,ER_WRONG_ARGUMENTS
SET @@global.wsrep_provider_options='hyphenated-name:value';
SELECT @@global.wsrep_provider_options;
--error 0,ER_WRONG_ARGUMENTS
SET @@global.wsrep_provider_options=default;
SELECT @@global.wsrep_provider_options;
--echo
--echo # invalid values
--error ER_WRONG_TYPE_FOR_VAR
SET @@global.wsrep_provider_options=1;
SELECT @@global.wsrep_provider_options;
--error ER_WRONG_ARGUMENTS,ER_WRONG_ARGUMENTS
SET @@global.wsrep_provider_options=NULL;
SELECT @@global.wsrep_provider_options;
--echo
--echo # restore the initial value
--error 0,ER_WRONG_ARGUMENTS
SET @@global.wsrep_provider_options = @wsrep_provider_options_global_saved;
--echo # End of test
......@@ -10,3 +10,5 @@
#
##############################################################################
mdev_6832: wsrep_provider is read-only for security reasons
......@@ -14,7 +14,6 @@ SET SESSION wsrep_replicate_myisam= ON;
ERROR HY000: Variable 'wsrep_replicate_myisam' is a GLOBAL variable and should be set with SET GLOBAL
SET GLOBAL wsrep_replicate_myisam= ON;
SET GLOBAL wsrep_replicate_myisam= OFF;
SET GLOBAL wsrep_provider=none;
#
# MDEV#5790: SHOW GLOBAL STATUS LIKE does not show the correct list of
# variables when using "_"
......@@ -26,7 +25,6 @@ wsrep_local_state_comment #
# Should show nothing.
SHOW STATUS LIKE 'x';
Variable_name Value
SET GLOBAL wsrep_provider=none;
SHOW STATUS LIKE 'wsrep_local_state_uuid';
Variable_name Value
......@@ -35,7 +33,6 @@ wsrep_local_state_uuid #
SHOW STATUS LIKE 'wsrep_last_committed';
Variable_name Value
wsrep_last_committed #
SET GLOBAL wsrep_provider=none;
#
# MDEV#6206: wsrep_slave_threads subtracts from max_connections
......@@ -49,7 +46,7 @@ SELECT @@global.wsrep_slave_threads;
1
SELECT @@global.wsrep_cluster_address;
@@global.wsrep_cluster_address
gcomm://
SELECT @@global.wsrep_on;
@@global.wsrep_on
1
......@@ -58,14 +55,14 @@ Variable_name Value
Threads_connected 1
SHOW STATUS LIKE 'wsrep_thread_count';
Variable_name Value
wsrep_thread_count 0
wsrep_thread_count 2
SELECT @@global.wsrep_provider;
@@global.wsrep_provider
libgalera_smm.so
SELECT @@global.wsrep_cluster_address;
@@global.wsrep_cluster_address
gcomm://
SELECT @@global.wsrep_on;
@@global.wsrep_on
1
......@@ -74,11 +71,10 @@ Variable_name Value
Threads_connected 1
SHOW STATUS LIKE 'wsrep_thread_count';
Variable_name Value
wsrep_thread_count 0
wsrep_thread_count 2
# Setting wsrep_cluster_address triggers the creation of
# applier/rollbacker threads.
SET GLOBAL wsrep_cluster_address= 'gcomm://';
# Wait for applier thread to get created 1.
# Wait for applier thread to get created 2.
SELECT VARIABLE_VALUE AS EXPECT_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count';
......
......@@ -22,7 +22,7 @@ SET GLOBAL wsrep_replicate_myisam= ON;
# Reset it back.
SET GLOBAL wsrep_replicate_myisam= OFF;
SET GLOBAL wsrep_provider=none;
#SET GLOBAL wsrep_provider=none;
--echo #
--echo # MDEV#5790: SHOW GLOBAL STATUS LIKE does not show the correct list of
......@@ -31,11 +31,9 @@ SET GLOBAL wsrep_provider=none;
CALL mtr.add_suppression("WSREP: Could not open saved state file for reading.*");
--disable_query_log
eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
#evalp SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
--let $galera_version=25.3.24
source include/check_galera_version.inc;
--enable_query_log
--replace_column 2 #
SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment';
......@@ -44,11 +42,9 @@ SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment';
SHOW STATUS LIKE 'x';
# Reset it back.
SET GLOBAL wsrep_provider=none;
#SET GLOBAL wsrep_provider=none;
--disable_query_log
eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
--enable_query_log
#evalp SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
# The following 2 variables are used by mariabackup
# SST.
......@@ -60,7 +56,7 @@ SHOW STATUS LIKE 'wsrep_local_state_uuid';
SHOW STATUS LIKE 'wsrep_last_committed';
# Reset it back.
SET GLOBAL wsrep_provider=none;
#SET GLOBAL wsrep_provider=none;
--echo
--echo #
......@@ -68,9 +64,7 @@ SET GLOBAL wsrep_provider=none;
--echo #
call mtr.add_suppression("WSREP: Failed to get provider options");
--disable_query_log
eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
--enable_query_log
#evalp SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
--replace_regex /.*libgalera_smm.*/libgalera_smm.so/
SELECT @@global.wsrep_provider;
......@@ -81,9 +75,7 @@ SHOW STATUS LIKE 'threads_connected';
SHOW STATUS LIKE 'wsrep_thread_count';
--echo
--disable_query_log
eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
--enable_query_log
#evalp SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
--replace_regex /.*libgalera_smm.*/libgalera_smm.so/
SELECT @@global.wsrep_provider;
......@@ -95,7 +87,7 @@ SHOW STATUS LIKE 'wsrep_thread_count';
--echo # Setting wsrep_cluster_address triggers the creation of
--echo # applier/rollbacker threads.
SET GLOBAL wsrep_cluster_address= 'gcomm://';
#SET GLOBAL wsrep_cluster_address= 'gcomm://';
--echo # Wait for applier thread to get created 1.
--let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_applier_thread_count';
......@@ -156,14 +148,6 @@ SET @@global.wsrep_sst_auth= NULL;
SELECT @@global.wsrep_sst_auth;
SET @@global.wsrep_sst_auth= @wsrep_sst_auth_saved;
# Reset (for mtr internal checks)
--disable_query_log
SET GLOBAL wsrep_slave_threads= @wsrep_slave_threads_saved;
eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
SET GLOBAL wsrep_cluster_address= @wsrep_cluster_address_saved;
SET GLOBAL wsrep_provider_options= @wsrep_provider_options_saved;
--enable_query_log
--source include/galera_wait_ready.inc
--echo # End of test.
......
......@@ -5323,7 +5323,7 @@ static Sys_var_tz Sys_time_zone(
static Sys_var_charptr Sys_wsrep_provider(
"wsrep_provider", "Path to replication provider library",
PREALLOCATED GLOBAL_VAR(wsrep_provider), CMD_LINE(REQUIRED_ARG),
PREALLOCATED READ_ONLY GLOBAL_VAR(wsrep_provider), CMD_LINE(REQUIRED_ARG),
IN_FS_CHARSET, DEFAULT(WSREP_NONE),
NO_MUTEX_GUARD, NOT_IN_BINLOG,
ON_CHECK(wsrep_provider_check), ON_UPDATE(wsrep_provider_update));
......@@ -5535,7 +5535,7 @@ static Sys_var_ulong Sys_wsrep_max_ws_rows (
static Sys_var_charptr Sys_wsrep_notify_cmd(
"wsrep_notify_cmd", "",
GLOBAL_VAR(wsrep_notify_cmd),CMD_LINE(REQUIRED_ARG),
READ_ONLY GLOBAL_VAR(wsrep_notify_cmd), CMD_LINE(REQUIRED_ARG),
IN_SYSTEM_CHARSET, DEFAULT(""));
static Sys_var_mybool Sys_wsrep_certify_nonPK(
......
......@@ -41,11 +41,13 @@ void wsrep_notify_status (wsrep_member_status_t status,
return;
}
char cmd_buf[1 << 16]; // this can be long
long cmd_len = sizeof(cmd_buf) - 1;
char* cmd_ptr = cmd_buf;
const long cmd_len = (1 << 16) - 1;
char* cmd_ptr = (char*) my_malloc(cmd_len + 1, MYF(MY_WME));
long cmd_off = 0;
if (!cmd_ptr)
return; // the warning is in the log
cmd_off += snprintf (cmd_ptr + cmd_off, cmd_len - cmd_off, "%s",
wsrep_notify_cmd);
......@@ -94,6 +96,7 @@ void wsrep_notify_status (wsrep_member_status_t status,
{
WSREP_ERROR("Notification buffer too short (%ld). Aborting notification.",
cmd_len);
my_free(cmd_ptr);
return;
}
......@@ -107,5 +110,6 @@ void wsrep_notify_status (wsrep_member_status_t status,
WSREP_ERROR("Notification command failed: %d (%s): \"%s\"",
err, strerror(err), cmd_ptr);
}
my_free(cmd_ptr);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment