mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
0fdebc8c49
The test case added failed sporadically on PB. This is due to the fact that the user thread in some cases is waiting for slave IO to stop and then check the error number. Thence, sometimes the user thread would race for the error number with IO thread. This post push fix addresses this by replacing the wait for slave io to stop with a wait for slave io error (as it seems it was added in 6.0 also after patch on which this is based was pushed). This implied backporting wait_for_slave_io_error.inc from 6.0 also.
97 lines
3 KiB
Text
97 lines
3 KiB
Text
# TBF - difference in row level logging
|
|
# Temp tables are not replicated in rbr, but it is still good to hit rbr with everthing
|
|
|
|
# See SHOW SLAVE STATUS displays well after RESET SLAVE (it should display the
|
|
# --master-* options from mysqld, as this is what is going to be used next time
|
|
# slave threads will be started). In bug 985, it displayed old values (of before
|
|
# RESET SLAVE).
|
|
# See if slave crashes when doing a CREATE TEMPORARY TABLE twice, separated by
|
|
# RESET SLAVE.
|
|
|
|
-- source include/master-slave.inc
|
|
connection master;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
source include/show_slave_status2.inc;
|
|
|
|
stop slave;
|
|
change master to master_user='test';
|
|
source include/show_slave_status2.inc;
|
|
|
|
reset slave;
|
|
source include/show_slave_status2.inc;
|
|
|
|
start slave;
|
|
sync_with_master;
|
|
source include/show_slave_status2.inc;
|
|
|
|
# test of crash with temp tables & RESET SLAVE
|
|
# (test to see if RESET SLAVE clears temp tables in memory and disk)
|
|
stop slave;
|
|
reset slave;
|
|
start slave;
|
|
connection master;
|
|
create temporary table t1 (a int);
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
stop slave;
|
|
reset slave;
|
|
start slave;
|
|
sync_with_master;
|
|
show status like 'slave_open_temp_tables';
|
|
|
|
#
|
|
#Bug#34654 RESET SLAVE does not clear LAST_IO_Err*
|
|
#
|
|
|
|
# clearing the status
|
|
stop slave;
|
|
reset slave;
|
|
let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
|
|
echo *** errno must be zero: $last_io_errno ***;
|
|
|
|
#
|
|
# verifying start slave resets Last_IO_Error and Last_IO_Errno.
|
|
#
|
|
|
|
change master to master_user='impossible_user_name';
|
|
start slave;
|
|
source include/wait_for_slave_io_error.inc;
|
|
let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
|
|
--disable_query_log
|
|
eval SELECT $last_io_errno > 0 as ONE;
|
|
--enable_query_log
|
|
|
|
source include/stop_slave.inc;
|
|
change master to master_user='root';
|
|
source include/start_slave.inc;
|
|
let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
|
|
let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1);
|
|
--echo *** last errno must be zero: $last_io_errno ***
|
|
--echo *** last error must be blank: $last_io_error ***
|
|
|
|
#
|
|
# verifying reset slave resets Last_{IO,SQL}_Err{or,no}
|
|
#
|
|
|
|
source include/stop_slave.inc;
|
|
change master to master_user='impossible_user_name';
|
|
start slave;
|
|
source include/wait_for_slave_io_error.inc;
|
|
let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
|
|
--disable_query_log
|
|
eval SELECT $last_io_errno > 0 as ONE;
|
|
--enable_query_log
|
|
|
|
source include/stop_slave.inc;
|
|
reset slave;
|
|
let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
|
|
let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1);
|
|
let $last_sql_errno= query_get_value(SHOW SLAVE STATUS, Last_SQL_Errno, 1);
|
|
let $last_sql_error= query_get_value(SHOW SLAVE STATUS, Last_SQL_Error, 1);
|
|
--echo *** io last errno must be zero: $last_io_errno ***
|
|
--echo *** io last error must be blank: $last_io_error ***
|
|
--echo *** sql last errno must be zero: $last_sql_errno ***
|
|
--echo *** sql last error must be blank: $last_sql_error ***
|