From: Date: August 25 2008 3:57pm Subject: Re: bzr commit into mysql-5.0 branch (skozlov:2613) Bug#22442 List-Archive: http://lists.mysql.com/commits/52460 Message-Id: <48B2BA58.7050507@mysql.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Andrei Elkin wrote: > 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; > Am I correct that we don't need to wait stop and because in fact next statement is start slave and we have issues here? > 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? The good question ... seems here we wait flush logs > > 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 > -- Serge Kozlov, QA Developer MySQL AB, Moscow, Russia, www.mysql.com Office: Are you MySQL certified? www.mysql.com/certification