From dbb7b40cda3963d64c6507e7a8eabb90667e357b Mon Sep 17 00:00:00 2001 From: He Zhenxing Date: Fri, 26 Dec 2008 16:20:29 +0800 Subject: [PATCH] BUG#41708 rpl.rpl_flushlog_loop fails in pushbuild producing non-deterministic result file If server has not been initialized as a slave (by CHANGE MASTER), then SHOW SLAVE STATUS will return an empty set, and caused the waiting for Slave_IO_running or Slave_SQL_running to 'No' fail. This patch fixed the problem by return immediately if slave is not initialized in include/wait_for_slave_*_to_stop.inc. mysql-test/include/wait_for_slave_io_to_stop.inc: Return immediately if slave is not initialized mysql-test/include/wait_for_slave_sql_to_stop.inc: Return immediately if slave is not initialized mysql-test/include/wait_for_slave_to_stop.inc: Return immediately if slave is not initialized --- .../include/wait_for_slave_io_to_stop.inc | 16 +++++++++----- .../include/wait_for_slave_sql_to_stop.inc | 16 +++++++++----- mysql-test/include/wait_for_slave_to_stop.inc | 22 ++++++++++++------- 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/mysql-test/include/wait_for_slave_io_to_stop.inc b/mysql-test/include/wait_for_slave_io_to_stop.inc index 0111edaff58..16a03d94511 100644 --- a/mysql-test/include/wait_for_slave_io_to_stop.inc +++ b/mysql-test/include/wait_for_slave_io_to_stop.inc @@ -11,8 +11,14 @@ # $slave_keep_connection. See wait_for_slave_param.inc for # descriptions. -let $slave_param= Slave_IO_Running; -let $slave_param_value= No; -let $slave_error_message= Failed while waiting for slave IO thread to stop; -source include/wait_for_slave_param.inc; -let $slave_error_message= ; +# if server has not used CHANGE MASTER to initiate slave, SHOW SLAVE +# STATUS will return an empty set. +let $_slave_io_running= query_get_value("SHOW SLAVE STATUS", Slave_IO_Running, 1); +if (`SELECT '$_slave_io_running' != 'No such row'`) +{ + let $slave_param= Slave_IO_Running; + let $slave_param_value= No; + let $slave_error_message= Failed while waiting for slave IO thread to stop; + source include/wait_for_slave_param.inc; + let $slave_error_message= ; +} diff --git a/mysql-test/include/wait_for_slave_sql_to_stop.inc b/mysql-test/include/wait_for_slave_sql_to_stop.inc index 477dfecbb30..565203a9f59 100644 --- a/mysql-test/include/wait_for_slave_sql_to_stop.inc +++ b/mysql-test/include/wait_for_slave_sql_to_stop.inc @@ -11,8 +11,14 @@ # $slave_keep_connection. See wait_for_slave_param.inc for # descriptions. -let $slave_param= Slave_SQL_Running; -let $slave_param_value= No; -let $slave_error_message= Failed while waiting for slave SQL thread to stop; -source include/wait_for_slave_param.inc; -let $slave_error_message= ; +# if server has not used CHANGE MASTER to initiate slave, SHOW SLAVE +# STATUS will return an empty set. +let $_slave_io_running= query_get_value("SHOW SLAVE STATUS", Slave_IO_Running, 1); +if (`SELECT '$_slave_io_running' != 'No such row'`) +{ + let $slave_param= Slave_SQL_Running; + let $slave_param_value= No; + let $slave_error_message= Failed while waiting for slave SQL thread to stop; + source include/wait_for_slave_param.inc; + let $slave_error_message= ; +} diff --git a/mysql-test/include/wait_for_slave_to_stop.inc b/mysql-test/include/wait_for_slave_to_stop.inc index 4973a27dc53..86604a15b95 100644 --- a/mysql-test/include/wait_for_slave_to_stop.inc +++ b/mysql-test/include/wait_for_slave_to_stop.inc @@ -11,14 +11,20 @@ # $slave_keep_connection. See wait_for_slave_param.inc for # descriptions. -let $slave_error_message= Failed while waiting for slave to stop; +# if server has not used CHANGE MASTER to initiate slave, SHOW SLAVE +# STATUS will return an empty set. +let $_slave_io_running= query_get_value("SHOW SLAVE STATUS", Slave_IO_Running, 1); +if (`SELECT '$_slave_io_running' != 'No such row'`) +{ + let $slave_error_message= Failed while waiting for slave to stop; -let $slave_param= Slave_IO_Running; -let $slave_param_value= No; -source include/wait_for_slave_param.inc; + let $slave_param= Slave_IO_Running; + let $slave_param_value= No; + source include/wait_for_slave_param.inc; -let $slave_param= Slave_SQL_Running; -let $slave_param_value= No; -source include/wait_for_slave_param.inc; + let $slave_param= Slave_SQL_Running; + let $slave_param_value= No; + source include/wait_for_slave_param.inc; -let $slave_error_message= ; + let $slave_error_message= ; +}