# # Testing reconnecting by slave as specified by `slave_net_timeout' # # Bug #50296 Slave reconnects earlier than the prescribed slave_net_timeout value # --source include/have_csv.inc --source include/master-slave.inc # save global env connection master; set @save_general_log = @@global.general_log; set @save_log_output = @@global.log_output; connection slave; set @save_slave_net_timeout = @@global.slave_net_timeout; connection master; set @@global.general_log = ON; set @@global.log_output = 'table,file'; connection slave; --source include/stop_slave.inc # # if heartbeat is disabled then reconnecting to the idle master # should happen with `slave_net_timeout' period. # Since it's the real time that is measured, `slave_net_timeout' # merely guarantees that reconnecting can *not* happen earlier of a value specified. # That is there can't an exact estimate for how many time it will happen. # # The following lines verify that having idle master # for more than 2 * slave_net_timeout seconds and # slave.net_read_timeout < slave_net_timeout # won't cause reconnecting by the slave within at least # slave_net_timeout interval. --replace_result $MASTER_MYPORT MASTER_PORT eval change master to master_host = '127.0.0.1',master_port = $MASTER_MYPORT, master_user = 'root', master_heartbeat_period = 0; set @@global.slave_net_timeout = @@global.net_read_timeout * 2; let $idle_time=`select @@global.slave_net_timeout * 2`; let $slave_net_timeout = `select @@global.slave_net_timeout`; --source include/start_slave.inc --disable_query_log --disable_result_log eval select 'master is idle for ', sleep($idle_time); --enable_result_log --enable_query_log --source include/stop_slave.inc # querying general-log connection master; # In particular the last reconnection timestamp must be greater or equal to # the previous one + slave_net_timeout select event_time from (select event_time from mysql.general_log as t_1 where command_type like 'Connect' order by event_time desc limit 2) as t_2 order by event_time desc limit 1 into @ts_last; select event_time from (select event_time from mysql.general_log as t_1 where command_type like 'Connect' order by event_time desc limit 2) as t_2 order by event_time asc limit 1 into @ts_prev; --let $assert_cond= time_to_sec(@ts_last) - time_to_sec(@ts_prev) >= $slave_net_timeout --let $assert_text= time between last reconnection and the reconnection before that should be >= slave_net_timeout --source include/assert.inc # cleanup # restore global env connection master; set @@global.general_log = @save_general_log; set @@global.log_output = @save_log_output; connection slave; set @@global.slave_net_timeout = @save_slave_net_timeout; --let $rpl_only_running_threads= 1 --source include/rpl_end.inc