mariadb/mysql-test/suite/rpl/include/rpl_shutdown_wait_slaves.inc
Kristian Nielsen 0258ad545a MDEV-32168: slave_error_param condition is never checked from the wait_for_slave_param.inc
Fix wrong change to rpl.rpl_shutdown_wait_slaves. After shutting down the
master, slaves may or may not succeed in reconnecting depending on the timing
on their reconnect relative to master restart. So don't assume all IO threads
will be running, just restart any slave that needs it.

Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2023-11-17 19:44:11 +01:00

96 lines
2 KiB
PHP

--connection server_1
CREATE TABLE t1 (a INT) ENGINE=innodb;
--save_master_pos
--connection server_2
--sync_with_master
--connection server_3
--sync_with_master
--connection server_4
--source include/stop_slave.inc
--connection server_1
--disable_query_log
--let $count=1000
while ($count)
{
INSERT INTO t1 SET a=1;
--dec $count
}
--enable_query_log
--save_master_pos
# Shutdown master and restart server_4 who will be waiting for the master
# to start replication at its shutdown beginning phase.
# The being forked out server_4 dump thread must relate to a record
# in slave_list, and it won't start sending out binlog events
# until has received a signal from the shutdown thread.
# This also proves delivery to a started-in-middle-of-shutdown slave.
--connection server_1
SET @@GLOBAL.debug_dbug="+d,simulate_delay_at_shutdown";
--connection server_4
--source include/start_slave.inc
--connection server_1
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
# --shutdown_server
--send SHUTDOWN WAIT FOR ALL SLAVES
--reap
--source include/wait_until_disconnected.inc
#
# MDEV-18450 liveness condition:
# Despite shutdown even "late" slave #4 is in sync
#
--connection server_4
--sync_with_master
--connection server_3
--sync_with_master
--connection server_2
--sync_with_master
--connection server_1
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
EOF
--connection default
--enable_reconnect
--source include/wait_until_connected_again.inc
--connection server_1
--enable_reconnect
--source include/wait_until_connected_again.inc
#
# Cleanup
#
--connection server_1
DROP TABLE t1;
# Slaves IO thread will receive the disconnect error when master was shutdown
# so we are allowing error on start.
--connection server_2
--disable_warnings
--let rpl_allow_error=1
--source include/start_slave.inc
--enable_warnings
--connection server_3
--disable_warnings
--let rpl_allow_error=1
--source include/start_slave.inc
--enable_warnings
--connection server_4
--disable_warnings
--let rpl_allow_error=1
--source include/start_slave.inc
--enable_warnings