1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
#
# MDEV-32551: "Read semi-sync reply magic number error" warnings on master
#
# Test that changing rpl_semi_sync_master_enabled after startup does not
# cause problems with semi-sync cleanup.
#
--source include/have_debug.inc
--source include/have_debug_sync.inc
# Test is binlog format independent, so save resources
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
call mtr.add_suppression("Replication event checksum verification failed");
call mtr.add_suppression("could not queue event from master");
call mtr.add_suppression("Semisync ack receiver.*error reading communication packets");
call mtr.add_suppression("Semisync ack receiver got hangup");
--sync_slave_with_master
--echo #
--echo # Set up a semisync connection
--connection master
set @@global.rpl_semi_sync_master_enabled= ON;
--connection slave
stop slave io_thread;
set @@global.rpl_semi_sync_slave_enabled= ON;
set @old_dbug= @@global.debug_dbug;
# Force an error to abort out of the main IO thread loop
set @@global.debug_dbug= "+d,corrupt_queue_event";
# Pause the IO thread as soon as the main loop starts. Note we can't use
# processlist where "Waiting for master to send event" because the
# "corrupt_queue_event" will trigger before we can turn semisync OFF
set @@global.debug_dbug= "+d,pause_before_io_read_event";
# Because the other debug_dbug points are automatically negated when they are
# run, and there is a bug that if "-d" takes us to an empty debug string state,
# _all_ debug_print statements are output
set @@global.debug_dbug= "+d,placeholder";
start slave io_thread;
--echo # Disable semi-sync on the slave while the IO thread is active
set debug_sync='now wait_for io_thread_at_read_event';
set @@global.rpl_semi_sync_slave_enabled= OFF;
set debug_sync='now signal io_thread_continue_read_event';
--echo # Waiting for the slave to stop with the error from corrupt_queue_event
--connection slave
--let $slave_io_errno= 1595,1743
--source include/wait_for_slave_io_error.inc
--echo # Sleep 1 to give time for Ack_receiver to receive COM_QUIT
--sleep 1
--let $assert_text= Check that there is no 'Read semi-sync reply magic number error' in error log.
--let $assert_select=magic number error
--let $assert_file= $MYSQLTEST_VARDIR/log/mysqld.1.err
--let $assert_count= 0
--let $assert_only_after=CURRENT_TEST
--source include/assert_grep.inc
--echo #
--echo # Cleanup
--connection slave
--source include/stop_slave.inc
set @@global.debug_dbug= @old_dbug;
--source include/start_slave.inc
--connection master
set @@global.rpl_semi_sync_master_enabled= default;
--source include/rpl_end.inc
--echo # End of rpl_semi_sync_slave_enabled_consistent.test
|