Serge, hello.
Could you please start with the problem desciption?
I think it is
Problem: using sleep() in the test cased its indeterministic execution.
> #At file:///home/ksm/sun/repo/mysql-5.0-rpl-bug22442/
>
> 2613 Serge Kozlov 2008-08-25
> Bug#22442:
> 1. Added vertical output for SHOW SLAVE STATUS and waiting starting/stopping
> slave instead sleep.
> 2. Updated the result file.
ok
> modified:
> mysql-test/r/rpl_flush_log_loop.result
> mysql-test/t/rpl_flush_log_loop.test
>
> === modified file 'mysql-test/r/rpl_flush_log_loop.result'
> --- a/mysql-test/r/rpl_flush_log_loop.result 2007-10-10 07:21:11 +0000
> +++ b/mysql-test/r/rpl_flush_log_loop.result 2008-08-25 09:23:15 +0000
> @@ -20,5 +20,36 @@ master_password='',master_port=SLAVE_POR
> start slave;
> flush logs;
> show slave status;
>
> -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
>
> -# 127.0.0.1 root SLAVE_PORT 60 slave-bin.000001 208 # # slave-bin.000001 Yes Yes 0 0 208 # None 0 No #
> +Slave_IO_State #
> +Master_Host 127.0.0.1
> +Master_User root
> +Master_Port 9306
> +Connect_Retry 1
> +Master_Log_File master-bin.000001
> +Read_Master_Log_Pos 98
> +Relay_Log_File #
> +Relay_Log_Pos #
> +Relay_Master_Log_File master-bin.000001
> +Slave_IO_Running Yes
> +Slave_SQL_Running Yes
> +Replicate_Do_DB
> +Replicate_Ignore_DB
> +Replicate_Do_Table
> +Replicate_Ignore_Table #
> +Replicate_Wild_Do_Table
> +Replicate_Wild_Ignore_Table
> +Last_Errno 0
> +Last_Error
> +Skip_Counter 0
> +Exec_Master_Log_Pos 98
> +Relay_Log_Space #
> +Until_Condition None
> +Until_Log_File
> +Until_Log_Pos 0
> +Master_SSL_Allowed No
> +Master_SSL_CA_File
> +Master_SSL_CA_Path
> +Master_SSL_Cert
> +Master_SSL_Cipher
> +Master_SSL_Key
> +Seconds_Behind_Master #
>
> === modified file 'mysql-test/t/rpl_flush_log_loop.test'
> --- a/mysql-test/t/rpl_flush_log_loop.test 2007-10-10 07:21:11 +0000
> +++ b/mysql-test/t/rpl_flush_log_loop.test 2008-08-25 09:23:15 +0000
> @@ -8,20 +8,22 @@ show variables like 'relay_log%';
>
> connection slave;
> stop slave;
There is no need for waiting at all.
Notice, that when `stop slave' returns the status' are
Slave_IO_Running NO
Slave_SQL_Running NO
by the algorithm of `stop slave'.
Hence, wait_for_slave_to_stop is never needed if the only point is to
ensure the running status' are NO.
> +--source include/wait_for_slave_to_stop.inc
> --replace_result $MASTER_MYPORT MASTER_PORT
> eval change master to master_host='127.0.0.1',master_user='root',
> master_password='',master_port=$MASTER_MYPORT;
> start slave;
> +--source include/wait_for_slave_to_start.inc
This synchronization is unnecessary as well according to logics of
the test. Notice, that there is a difference with `stop slave' case in
that Slave_IO_Running value is uncertain by return from `start
slave', Slave_SQL_Running is YES.
The uncertainly is due to the fact that Slave_IO_Running is
three-value set. Returning ack to the client happens when IO thread
has started but not yet connected to the master side.
And only upon connnecting Slave_IO_Running gets YES.
> connection master;
> --replace_result $SLAVE_MYPORT SLAVE_PORT
> eval change master to master_host='127.0.0.1',master_user='root',
> master_password='',master_port=$SLAVE_MYPORT;
> start slave;
> -sleep 5;
> +--source include/wait_for_slave_to_start.inc
ok.
> flush logs;
> sleep 5;
what shall we do with this sleep?
Could you investigate that please?
> --replace_result $SLAVE_MYPORT SLAVE_PORT
> ---replace_column 1 # 8 # 9 # 23 # 33 #
> -show slave status;
> +--replace_column 1 # 8 # 9 # 16 # 23 # 33 # 34 # 35 #
> +--query_vertical show slave status
>
cheers,
Andrei