mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
77bc81b89c
rpl_packet got a timeout failure sporadically on PB when stopping slave. The real reason of this bug is that STOP SLAVE stopped IO thread first and then stopped SQL thread. It was possible that IO thread stopped after replicating part of a transaction which SQL thread was executing. SQL thread would be hung if the transaction could not be rolled back safely. After this patch, STOP SLAVE will stop SQL thread first and then stop IO thread, which guarantees that IO thread will fetch the reset of the events of the transaction that SQL thread is executing, so that SQL thread can finish the transaction if it cannot be rolled back safely. Added below auxiliary files to make the test code neater. restart_slave_sql.inc rpl_connection_master.inc rpl_connection_slave.inc rpl_connection_slave1.inc
43 lines
No EOL
1,001 B
PHP
43 lines
No EOL
1,001 B
PHP
# ==== Purpose ====
|
|
#
|
|
# Provide a earier way to restart SQL thread when you want to stop sql thread
|
|
# and then start it immediately.
|
|
#
|
|
# Sources stop_slave_sql.inc to stop SQL thread on the current connection.
|
|
# Then issues START SLAVE SQL_THREAD and then waits until
|
|
# the SQL threads have started, or until a timeout is reached.
|
|
#
|
|
# Please use this instead of 'STOP|START SLAVE SQL_THREAD', to reduce the risk of
|
|
# test case bugs.
|
|
#
|
|
#
|
|
# ==== Usage ====
|
|
#
|
|
# [--let $slave_timeout= NUMBER]
|
|
# [--let $rpl_debug= 1]
|
|
# --source include/restart_slave_sql.inc
|
|
#
|
|
# Parameters:
|
|
# $slave_timeout
|
|
# See include/wait_for_slave_param.inc
|
|
#
|
|
# $rpl_debug
|
|
# See include/rpl_init.inc
|
|
|
|
|
|
--let $include_filename= restart_slave.inc
|
|
--source include/begin_include_file.inc
|
|
|
|
|
|
if (!$rpl_debug)
|
|
{
|
|
--disable_query_log
|
|
}
|
|
|
|
source include/stop_slave_sql.inc;
|
|
START SLAVE SQL_THREAD;
|
|
source include/wait_for_slave_sql_to_start.inc;
|
|
|
|
|
|
--let $include_filename= restart_slave.inc
|
|
--source include/end_include_file.inc |