From 0fdebc8c49a14685b8ff1cc79f1379f0415ecf5a Mon Sep 17 00:00:00 2001 From: Luis Soares Date: Fri, 26 Jun 2009 12:05:56 +0100 Subject: [PATCH] BUG#44270: Post-push fix The test case added failed sporadically on PB. This is due to the fact that the user thread in some cases is waiting for slave IO to stop and then check the error number. Thence, sometimes the user thread would race for the error number with IO thread. This post push fix addresses this by replacing the wait for slave io to stop with a wait for slave io error (as it seems it was added in 6.0 also after patch on which this is based was pushed). This implied backporting wait_for_slave_io_error.inc from 6.0 also. --- .../extra/rpl_tests/rpl_reset_slave.test | 4 ++-- .../include/wait_for_slave_io_error.inc | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 mysql-test/include/wait_for_slave_io_error.inc diff --git a/mysql-test/extra/rpl_tests/rpl_reset_slave.test b/mysql-test/extra/rpl_tests/rpl_reset_slave.test index 49a142f10c2..1f88c792fce 100644 --- a/mysql-test/extra/rpl_tests/rpl_reset_slave.test +++ b/mysql-test/extra/rpl_tests/rpl_reset_slave.test @@ -58,7 +58,7 @@ echo *** errno must be zero: $last_io_errno ***; change master to master_user='impossible_user_name'; start slave; -source include/wait_for_slave_io_to_stop.inc; +source include/wait_for_slave_io_error.inc; let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1); --disable_query_log eval SELECT $last_io_errno > 0 as ONE; @@ -79,7 +79,7 @@ let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1); source include/stop_slave.inc; change master to master_user='impossible_user_name'; start slave; -source include/wait_for_slave_io_to_stop.inc; +source include/wait_for_slave_io_error.inc; let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1); --disable_query_log eval SELECT $last_io_errno > 0 as ONE; diff --git a/mysql-test/include/wait_for_slave_io_error.inc b/mysql-test/include/wait_for_slave_io_error.inc new file mode 100644 index 00000000000..094406e02b2 --- /dev/null +++ b/mysql-test/include/wait_for_slave_io_error.inc @@ -0,0 +1,23 @@ +# ==== Purpose ==== +# +# Waits until the IO thread of the current connection has got an +# error, or until a timeout is reached. +# +# ==== Usage ==== +# +# source include/wait_for_slave_io_error.inc; +# +# Parameters to this macro are $slave_timeout and +# $slave_keep_connection. See wait_for_slave_param.inc for +# descriptions. + +let $old_slave_param_comparison= $slave_param_comparison; + +let $slave_param= Last_IO_Errno; +let $slave_param_comparison= !=; +let $slave_param_value= 0; +let $slave_error_message= Failed while waiting for slave to produce an error in its sql thread; +source include/wait_for_slave_param.inc; +let $slave_error_message= ; + +let $slave_param_comparison= $old_slave_param_comparison;