GIF89a;
Direktori : /usr/share/mysql-test/suite/large_tests/t/ |
Current File : //usr/share/mysql-test/suite/large_tests/t/rpl_slave_net_timeout.test |
# # 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 --replace_column 2 #### 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 # querying general-log connection master; # In particular the last reconnection timestamp must be greater or equal to # the previous one + slave_net_timeout --let $ts_last= `select time_to_sec(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` --let $ts_prev= `select time_to_sec(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` --let $timeout= $idle_time + 10 while ($timeout) { --let $ts_last= `select time_to_sec(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` --let $ts_flag= `select $ts_last-$ts_prev>=$slave_net_timeout` if($ts_flag) { --let $timeout=1 } --dec $timeout --sleep 1 } --let $assert_cond= $ts_flag=1 --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; --source include/rpl_end.inc