List:Commits« Previous MessageNext Message »
From:Mats Kindahl Date:October 10 2007 10:10am
Subject:Re: bk commit into 5.1 tree (sven:1.2571) BUG#29046
View as plain text  
Hi Sven!

Comments below.

Just my few cents,
Mats Kindahl

Sven Sandberg wrote:
> 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-09 17:17:55+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.
>
>   mysql-test/include/wait_for_slave_sql_error.inc@stripped, 2007-10-09 17:17:48+02:00,
> sven@murkla.(none) +35 -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-09 17:17:48+02:00,
> sven@murkla.(none) +0 -0
>
>   mysql-test/suite/rpl/t/rpl_stm_mystery22.test@stripped, 2007-10-09 17:17:48+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-09 17:17:48 +02:00
> @@ -0,0 +1,35 @@
> +###################################################
> +#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);
> +  if (`SELECT '$sql_result' = '0'`){
> +    let $run= 0;
>   
let $run = `SELECT '$sql_result' = 0` ?

> +  }
> +  if (!$run) {
> +    sleep 0.1;
>   

Use real_sleep instead, since the behaviour of this include file will 
change drastically if the --sleep option is used. The engineering group 
sets this to 10 seconds, meaning that the loop in that case will wait 
3000 seconds (!) instead of 30.

> +    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-09 17:17:48 +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
>   

Use the "source include/wait_for_slave_sql_error.inc;" form instead, 
since that does syntax checking and reports an error if there are problems.

>  select * from t1 order by n;
>  delete from t1 where n = 2;
>  --disable_warnings
>
>   


-- 
Mats Kindahl
Lead Software Developer
Replication Team
MySQL AB, www.mysql.com


Thread
bk commit into 5.1 tree (sven:1.2571) BUG#29046Sven Sandberg9 Oct
  • Re: bk commit into 5.1 tree (sven:1.2571) BUG#29046Mats Kindahl10 Oct