Below is the list of changes that have just been committed into a local
5.1 repository of sven. When sven does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-10-10 18:10:54+02:00, sven@murkla.(none) +2 -0
BUG#29046: rpl_stm_mystery22 unstable
Problem: rpl_stm_mystery22 is unstable.
Reason: At one place, the test case *should* wait until the SQL thread on the
slave receives an error, but instead it waits until the SQL thread stops. The
SQL thread may stop before the error flag is set, so that when the test case
continues to execute, the error flag is not set.
Fix: Introduce the subroutine mysql-test/include/wait_for_slave_sql_error.inc,
which waits until there is an error in the sql thread of the slave.
Re-commit: fixed one logical error and two smaller things noted by Mats.
mysql-test/include/wait_for_slave_sql_error.inc@stripped, 2007-10-10 18:10:51+02:00, sven@murkla.(none) +33 -0
New BitKeeper file ``mysql-test/include/wait_for_slave_sql_error.inc''
This is a subroutine that waits until the sql thread on the slave receives an
error, as indicated by Last_SQL_Errno in "SHOW SLAVE STATUS".
mysql-test/include/wait_for_slave_sql_error.inc@stripped, 2007-10-10 18:10:51+02:00, sven@murkla.(none) +0 -0
mysql-test/suite/rpl/t/rpl_stm_mystery22.test@stripped, 2007-10-10 18:10:51+02:00, sven@murkla.(none) +1 -1
Use the new wait_for_slave_sql_error.inc instead of wait_for_slave_to_stop.
There may be a delay from when the slave stops to when Last_SQL_Errno is set,
so it is not safe to merely wait until the slave stops.
diff -Nrup a/mysql-test/include/wait_for_slave_sql_error.inc b/mysql-test/include/wait_for_slave_sql_error.inc
--- /dev/null Wed Dec 31 16:00:00 196900
+++ b/mysql-test/include/wait_for_slave_sql_error.inc 2007-10-10 18:10:51 +02:00
@@ -0,0 +1,33 @@
+###################################################
+#Author: Sven
+#Date: 2007-10-09
+#Purpose: Wait until the slave has an error in the
+# sql thread, as indicated by
+# "SHOW SLAVE STATUS", or at most 30
+# seconds.
+#Details:
+# 1) Fill in and setup variables
+# 2) loop, looking for sql error on slave
+# 3) If it loops too long, die.
+####################################################
+connection slave;
+let $row_number= 1;
+let $run= 1;
+let $counter= 300;
+
+while ($run)
+{
+ let $sql_result= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, $row_number);
+ let $run= `SELECT '$sql_result' = '0'`;
+ if ($run) {
+ real_sleep 0.1;
+ if (!$counter){
+ --echo "Failed while waiting for slave to produce an error in its sql thread"
+ --replace_result $MASTER_MYPORT MASTER_PORT
+ --replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 #
+ query_vertical SHOW SLAVE STATUS;
+ exit;
+ }
+ dec $counter;
+ }
+}
diff -Nrup a/mysql-test/suite/rpl/t/rpl_stm_mystery22.test b/mysql-test/suite/rpl/t/rpl_stm_mystery22.test
--- a/mysql-test/suite/rpl/t/rpl_stm_mystery22.test 2007-06-27 14:27:23 +02:00
+++ b/mysql-test/suite/rpl/t/rpl_stm_mystery22.test 2007-10-10 18:10:51 +02:00
@@ -28,7 +28,7 @@ insert into t1 values(NULL,'new');
save_master_pos;
connection slave;
# wait until the slave tries to run the query, fails and aborts slave thread
-wait_for_slave_to_stop;
+source include/wait_for_slave_sql_error.inc;
select * from t1 order by n;
delete from t1 where n = 2;
--disable_warnings
Thread |
---|
• bk commit into 5.1 tree (sven:1.2571) BUG#29046 | Sven Sandberg | 10 Oct |