From: Date: February 29 2008 10:56am Subject: Re: Review for WL#4091 List-Archive: http://lists.mysql.com/commits/43205 Message-Id: <1204278998.6254.21.camel@hezx> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit On 2008-03-29 Sat 12:37 +0300,Serge Kozlov wrote: > He Zhenxing wrote: > > on 2008-02-28 Thu 13:05 +0300,Serge Kozlov wrote: > >> He Zhenxing wrote: > >>> Hi Serge > >>> > >>> On 2008-02-27 Wed 13:09 +0300,Serge Kozlov wrote: > >>>> Hello. > >>>> > >>>> See comments below and please send me your final conclusion (approved > >>>> with suggested changes, not approved) > >>>> > >>> approved with suggested changes > >>> > >>>> He Zhenxing wrote: > >>>>> Hi Serge > >>>>> > >>>>> Thank you for your work, please read comments below. > >>>>> > >>>>> On 2008-02-24 Sun 02:10 +0300,Serge Kozlov wrote: > >>>>>> Hi, Magnus and Zhenxing > >>>>>> > >>>>>> Could you review patch for WL#4091 (based in LLD, part 4) removing sleeps? > >>>>> What is LLD? I'd like to have a look at it. > >>>> skozlov: LLD - Low Level Design :) of WL. > >>>> > >>> thanks! > >>> > >>>>>> Thanks! > >>>>>> > >>>>>> > >>>>>> # This is a BitKeeper generated diff -Nru style patch. > >>>>>> # > >>>>>> # ChangeSet > >>>>>> # 2008/02/24 01:20:11+03:00 skozlov@stripped > >>>>>> # WL#4091, LLD/4, removing sleeps > >>>>>> # > >>>>>> # mysql-test/include/wait_for_binlog_event.inc > >>>>>> # 2008/02/24 01:20:01+03:00 skozlov@stripped +35 -0 > >>>>>> # new primitive: waiting for a event in SHOW BINLOG EVENTS output > >>>>>> # > >>>>>> # mysql-test/include/wait_for_binlog_event.inc > >>>>>> # 2008/02/24 01:20:01+03:00 skozlov@stripped +0 -0 > >>>>>> # > >>>>>> # mysql-test/suite/rpl/r/rpl_flushlog_loop.result > >>>>>> # 2008/02/24 01:19:58+03:00 skozlov@stripped +3 -3 > >>>>>> # updated result file > >>>>>> # > >>>>>> # mysql-test/suite/rpl/r/rpl_row_view01.result > >>>>>> # 2008/02/24 01:19:59+03:00 skozlov@stripped +3 -0 > >>>>>> # updated result file > >>>>>> # > >>>>>> # mysql-test/suite/rpl/t/rpl_change_master.test > >>>>>> # 2008/02/24 01:19:59+03:00 skozlov@stripped +3 -1 > >>>>>> # replacing sleep > >>>>>> # > >>>>>> # mysql-test/suite/rpl/t/rpl_drop_temp.test > >>>>>> # 2008/02/24 01:19:59+03:00 skozlov@stripped +9 -3 > >>>>>> # replacing sleep > >>>>>> # > >>>>>> # mysql-test/suite/rpl/t/rpl_flushlog_loop.test > >>>>>> # 2008/02/24 01:20:00+03:00 skozlov@stripped +22 -3 > >>>>>> # replacing sleep > >>>>>> # > >>>>>> # mysql-test/suite/rpl/t/rpl_relayspace.test > >>>>>> # 2008/02/24 01:20:00+03:00 skozlov@stripped +5 -16 > >>>>>> # use external source for waiting of a query > >>>>>> # > >>>>>> # mysql-test/suite/rpl/t/rpl_row_view01.test > >>>>>> # 2008/02/24 01:20:00+03:00 skozlov@stripped +12 -4 > >>>>>> # replacing sleep > >>>>>> # > >>>>>> # mysql-test/suite/rpl/t/rpl_trunc_temp.test > >>>>>> # 2008/02/24 01:20:00+03:00 skozlov@stripped +6 -1 > >>>>>> # replacing sleep > >>>>>> # > >>>>>> diff -Nru a/mysql-test/include/wait_for_binlog_event.inc > >>>>>> b/mysql-test/include/wait_for_binlog_event.inc > >>>>>> --- /dev/null Wed Dec 31 16:00:00 196900 > >>>>>> +++ b/mysql-test/include/wait_for_binlog_event.inc 2008-02-24 01:44:04 > >>>>>> +03:00 > >>>>>> @@ -0,0 +1,35 @@ > >>>>>> +# include/wait_for_binlog_event.inc > >>>>>> +# > >>>>>> +# SUMMARY > >>>>>> +# > >>>>>> +# Waits until SHOW BINLOG EVENTS has returned in last event a > >>>>>> specified substring. > >>>>>> +# > >>>>>> +# USAGE > >>>>>> +# > >>>>>> +# let $wait_binlog_event= DROP; > >>>>>> +# --source include/wait_for_binlog_event.inc > >>>>>> + > >>>>>> +let $binlog_event_counter= 300; > >>>>>> + > >>>>>> +let $binlog_event_last= ; > >>>>>> + > >>>>>> +while (`SELECT INSTR("$binlog_event_last","$wait_binlog_event") = 0`) > >>>>>> +{ > >>>>>> + dec $binlog_event_counter; > >>>>>> + if (!$binlog_event_counter) > >>>>>> + { > >>>>>> + --echo ERROR: failed while waiting for $binlog_event in binlog > >>>>>> + SHOW BINLOG EVENTS; > >>>>>> + exit; > >>>>>> + } > >>>>>> + sleep 0.1; > >>>>>> + let $binlog_int_counter= 1; > >>>>>> + let $binlog_int_event= query_get_value(SHOW BINLOG EVENTS, Info, > >>>>>> $binlog_int_counter); > >>>>>> + let $binlog_event_last= $binlog_int_event; > >>>>>> + while (`SELECT "$binlog_int_event" != "No such row"`) > >>>>>> + { > >>>>>> + inc $binlog_int_counter; > >>>>>> + let $binlog_event_last= $binlog_int_event; > >>>>>> + let $binlog_int_event= query_get_value(SHOW BINLOG EVENTS, Info, > >>>>>> $binlog_int_counter); > >>>>>> + } > >>>>>> +} > >>>>> I like this idea, but I have some comments on the implimentation. > >>>>> > >>>>> I think we should use `real_sleep' here, `sleep' can be affected > >>>>> by --sleep option of mysqltest. > >>>>> > >>>>> The `sleep' will at least be run once, even if the event we are > >>>>> waiting for has already been there. I think unnecessary delay > >>>>> should be prevented. > >>>>> > >>>>> Whenever we restart the outer while loop, we start searching from > >>>>> the beginning of all the binlog events. this is not necessary, we > >>>>> should start from where we stopped in the previous loop. > >>>> skozlov: OK > >>>> > >>>>> `exit' will end the test normally, use `die' instead. > >>>> skozlov: Agree, Magnus said same :) > >>>> > >>>>> I would suggest renaming following internal variables: > >>>>> `binlog_event_counter' -> `_loop_count' > >>>>> `binlog_int_counter' -> `_event_pos' > >>>>> `binlog_int_event' -> `_event' > >>>>> `binlog_last_event' -> `_last_event' > >>>> OK. > >>>> > >>>>>> diff -Nru a/mysql-test/suite/rpl/r/rpl_flushlog_loop.result > >>>>>> b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result > >>>>>> --- a/mysql-test/suite/rpl/r/rpl_flushlog_loop.result 2008-02-24 > >>>>>> 01:44:04 +03:00 > >>>>>> +++ b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result 2008-02-24 > >>>>>> 01:44:04 +03:00 > >>>>>> @@ -23,7 +23,7 @@ > >>>>>> let $result_pattern= > >>>>>> '%127.0.0.1%root%slave-bin.000001%slave-bin.000001%Yes%Yes%0%0%None%' ; > >>>>>> > >>>>>> --source include/wait_slave_status.inc > >>>>>> -flush logs; > >>>>>> +FLUSH LOGS; > >>>>>> SHOW SLAVE STATUS; > >>>>>> Slave_IO_State # > >>>>>> Master_Host 127.0.0.1 > >>>>>> @@ -31,7 +31,7 @@ > >>>>>> Master_Port SLAVE_PORT > >>>>>> Connect_Retry 60 > >>>>>> Master_Log_File slave-bin.000001 > >>>>>> -Read_Master_Log_Pos 216 > >>>>>> +Read_Master_Log_Pos POSITION > >>>>>> Relay_Log_File # > >>>>>> Relay_Log_Pos # > >>>>>> Relay_Master_Log_File slave-bin.000001 > >>>>>> @@ -46,7 +46,7 @@ > >>>>>> Last_Errno 0 > >>>>>> Last_Error > >>>>>> Skip_Counter 0 > >>>>>> -Exec_Master_Log_Pos 216 > >>>>>> +Exec_Master_Log_Pos POSITION > >>>>>> Relay_Log_Space # > >>>>>> Until_Condition None > >>>>>> Until_Log_File > >>>>>> diff -Nru a/mysql-test/suite/rpl/r/rpl_row_view01.result > >>>>>> b/mysql-test/suite/rpl/r/rpl_row_view01.result > >>>>>> --- a/mysql-test/suite/rpl/r/rpl_row_view01.result 2008-02-24 01:44:04 > >>>>>> +03:00 > >>>>>> +++ b/mysql-test/suite/rpl/r/rpl_row_view01.result 2008-02-24 01:44:04 > >>>>>> +03:00 > >>>>>> @@ -13,6 +13,7 @@ > >>>>>> DROP TABLE IF EXISTS mysqltest1.t1; > >>>>>> DROP TABLE IF EXISTS mysqltest1.t2; > >>>>>> DROP TABLE IF EXISTS mysqltest1.t4; > >>>>>> +DROP TABLE IF EXISTS mysqltest1.t10; > >>>>>> CREATE TABLE mysqltest1.t1 (a INT, c CHAR(6),PRIMARY KEY(a)); > >>>>>> CREATE TABLE mysqltest1.t2 (a INT, c CHAR(6),PRIMARY KEY(a)); > >>>>>> CREATE TABLE mysqltest1.t3 (a INT, c CHAR(6), c2 CHAR(6), PRIMARY KEY(a)); > >>>>>> @@ -35,6 +36,7 @@ > >>>>>> 1 Thank GOD > >>>>>> 2 it is > >>>>>> 3 Friday TGIF > >>>>>> +CREATE TABLE mysqltest1.t10 (a INT, PRIMARY KEY(a)); > >>>>>> SELECT * FROM mysqltest1.v2; > >>>>>> qty price value > >>>>>> 3 50 150 > >>>>>> @@ -98,4 +100,5 @@ > >>>>>> DROP TABLE IF EXISTS mysqltest1.t1; > >>>>>> DROP TABLE IF EXISTS mysqltest1.t2; > >>>>>> DROP TABLE IF EXISTS mysqltest1.t4; > >>>>>> +DROP TABLE IF EXISTS mysqltest1.t10; > >>>>>> DROP DATABASE mysqltest1; > >>>>>> diff -Nru a/mysql-test/suite/rpl/t/rpl_change_master.test > >>>>>> b/mysql-test/suite/rpl/t/rpl_change_master.test > >>>>>> --- a/mysql-test/suite/rpl/t/rpl_change_master.test 2008-02-24 01:44:04 > >>>>>> +03:00 > >>>>>> +++ b/mysql-test/suite/rpl/t/rpl_change_master.test 2008-02-24 01:44:04 > >>>>>> +03:00 > >>>>>> @@ -15,8 +15,10 @@ > >>>>>> insert into t1 values(1); > >>>>>> insert into t1 values(2); > >>>>>> save_master_pos; > >>>>>> +let $slave_param= Read_Master_Log_Pos; > >>>>>> +let $slave_param_value= query_get_value(SHOW MASTER STATUS, Position, 1); > >>>>>> connection slave; > >>>>>> ---real_sleep 3 # wait for I/O thread to have read updates > >>>>>> +source include/wait_for_slave_param.inc; > >>>>> Very cool! I think this idea can also be used for waiting for a given > >>>>> statement to be executed by the slave. > >>>>> > >>>>>> stop slave; > >>>>>> source include/show_slave_status2.inc; > >>>>>> change master to master_user='root'; > >>>>>> diff -Nru a/mysql-test/suite/rpl/t/rpl_drop_temp.test > >>>>>> b/mysql-test/suite/rpl/t/rpl_drop_temp.test > >>>>>> --- a/mysql-test/suite/rpl/t/rpl_drop_temp.test 2008-02-24 01:44:04 +03:00 > >>>>>> +++ b/mysql-test/suite/rpl/t/rpl_drop_temp.test 2008-02-24 01:44:04 +03:00 > >>>>>> @@ -6,19 +6,25 @@ > >>>>>> # to work around NDB's issue with temp tables > >>>>>> ############################################## > >>>>>> source include/master-slave.inc; > >>>>>> +source include/have_binlog_format_mixed_or_statement.inc; > >>>>>> + > >>>>>> --disable_warnings > >>>>>> create database if not exists mysqltest; > >>>>>> --enable_warnings > >>>>>> > >>>>>> create temporary table mysqltest.t1 (n int)ENGINE=MyISAM; > >>>>>> create temporary table mysqltest.t2 (n int)ENGINE=MyISAM; > >>>>>> -sync_slave_with_master; > >>>>>> + > >>>>>> connection master; > >>>>>> disconnect master; > >>>>>> + > >>>>>> +connection master1; > >>>>>> +# Wait until drop of temp tables appears in binlog > >>>>>> +let $wait_binlog_event= DROP; > >>>>>> +source include/wait_for_binlog_event.inc; > >>>>>> + > >>>>> I think this only make sure that the DROP statement has been written > >>>>> into master's binlog, should add a `sync_slave_with_master' to make sure > >>>>> it has been replicated to the slave, otherwise there is a very slight > >>>>> chance that the test will fail because the DROP statement has not been > >>>>> replicated yet. > >>>> No, you're not right :). In this case we cannot sync slave with master > >>>> because connection lost. We cannot sync via connection to master1 > >>>> because it doesn't have this event. We can wait this event only. All > >>>> these test cases were not fixed as others because have sleep for special > >>>> non-standard cases. > >>>> > >>> I doubt it :) connection master and connection master1 are connected to > >>> the same server, you can check this in include/master-slave.inc, so how > >>> could connection master1 doesn't have this event? I have test the > >>> following: > >>> > >> We are using there temp tables. The property of temp tables is working > >> inside a session (they are visible inside session only). If you close > >> session to master then all temp tables (associated to that session) > >> should be dropped. Another session to master has no access to this > >> tables. Main purpose of the test case is checking that master sends > >> DROP TEMP TABLE to slave. We can't control that event. But we can wait > >> it in binlog on master, sync slave with master and make sure that all > >> temp tables on slave closed too. > >> > > > > The temp tables are only visible inside the session in which is created, > > but the DROP statement that drops the temp tables are visible to all > > sessions, and in fact you used connection master1 to wait for the DROP > > statement to appear, this means the DROP event is visible to all > > sessions or connections. > > Yes, but you can't force DROP event via sync trough master1 because > master1 session doesn't know about temp tables on master session:). > As result of sync slave with master1 that temp tables still open on slave. > But sync *after* appear DROP in binlog in master1 session can be used. > Yes, that is what I mean, *after* the DROP event appeared, use sync_slave_with_master to make sure the DROP event is replicated to the slave. > > > >> > >>> ------------------- rpl_tmp.test ------------------------------ > >>> source include/master-slave.inc; > >>> > >>> create table t1 (a int); > >>> > >>> insert into t1 values (1); > >>> insert into t1 values (2); > >>> insert into t1 values (3); > >>> > >>> query_vertical show master status; > >>> > >>> disconnect master; > >>> connection master1; > >>> > >>> query_vertical show master status; > >>> sync_slave_with_master; > >>> > >>> select * from t1; > >>> ----------------------------------------------------------- > >>> > >>> and this is the result > >>> > >>> ----------------------- rpl_tmp.result -------------------- > >>> stop slave; > >>> drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; > >>> reset master; > >>> reset slave; > >>> drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; > >>> start slave; > >>> create table t1 (a int); > >>> insert into t1 values (1); > >>> insert into t1 values (2); > >>> insert into t1 values (3); > >>> show master status; > >>> File master-bin.000001 > >>> Position 456 > >>> Binlog_Do_DB > >>> Binlog_Ignore_DB > >>> show master status; > >>> File master-bin.000001 > >>> Position 456 > >>> Binlog_Do_DB > >>> Binlog_Ignore_DB > >>> select * from t1; > >>> a > >>> 1 > >>> 2 > >>> 3 > >>> ---------------------------------------------------------- > >>> > >>> I see no problem, do I miss something here? > >>> > >>>>>> connection slave; > >>>>>> ---real_sleep 3 # time for DROP to be written > >>>>>> show status like 'Slave_open_temp_tables'; > >>>>>> - > >>>>>> # Cleanup > >>>>>> connection default; > >>>>>> drop database mysqltest; > >>>>>> diff -Nru a/mysql-test/suite/rpl/t/rpl_flushlog_loop.test > >>>>>> b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test > >>>>>> --- a/mysql-test/suite/rpl/t/rpl_flushlog_loop.test 2008-02-24 01:44:04 > >>>>>> +03:00 > >>>>>> +++ b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test 2008-02-24 01:44:04 > >>>>>> +03:00 > >>>>>> @@ -35,12 +35,31 @@ > >>>>>> # > >>>>>> # Flush logs of slave > >>>>>> # > >>>>>> -flush logs; > >>>>>> -sleep 5; > >>>>>> +# Create full loop by following way: > >>>>>> +# 1. Insert into t1 on master (1st). > >>>>>> +# 2. Insert into t1 on slave (2nd) when the event (1st) for t1 replicated. > >>>>>> +# 3. Master waits until the event (2nd) for t1 will be replicated. > >>>>>> + > >>>>>> +--disable_query_log > >>>>>> +CREATE TABLE t1 (a INT KEY) ENGINE= MyISAM; > >>>>>> +INSERT INTO t1 VALUE(1); > >>>>>> +--enable_query_log > >>>>>> +FLUSH LOGS; > >>>>>> +connection slave; > >>>>>> +let $wait_condition= SELECT COUNT(*) = 1 FROM t1; > >>>>>> +-- source include/wait_condition.inc > >>>>>> +--disable_query_log > >>>>>> +INSERT INTO t1 VALUE(2); > >>>>>> +--enable_query_log > >>>>>> +connection master; > >>>>>> +let $wait_condition= SELECT COUNT(*) = 2 FROM t1; > >>>>>> +-- source include/wait_condition.inc > >>>>>> +--enable_query_log > >>>>>> > >>>>>> # > >>>>>> # Show status of slave > >>>>>> # > >>>>>> ---replace_result $SLAVE_MYPORT SLAVE_PORT > >>>>>> +let $pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1); > >>>>>> +--replace_result $SLAVE_MYPORT SLAVE_PORT $pos POSITION > >>>>>> --replace_column 1 # 8 # 9 # 16 # 23 # 33 # 34 # 35 # > >>>>>> --query_vertical SHOW SLAVE STATUS > >>>>>> diff -Nru a/mysql-test/suite/rpl/t/rpl_relayspace.test > >>>>>> b/mysql-test/suite/rpl/t/rpl_relayspace.test > >>>>>> --- a/mysql-test/suite/rpl/t/rpl_relayspace.test 2008-02-24 01:44:04 +03:00 > >>>>>> +++ b/mysql-test/suite/rpl/t/rpl_relayspace.test 2008-02-24 01:44:04 +03:00 > >>>>>> @@ -14,23 +14,12 @@ > >>>>>> reset slave; > >>>>>> start slave io_thread; > >>>>>> # Give the I/O thread time to block. > >>>>>> -let $run= 1; > >>>>>> -let $counter= 300; > >>>>>> -while ($run) > >>>>>> -{ > >>>>>> - let $io_state= query_get_value("SHOW SLAVE STATUS", Slave_IO_State, 1); > >>>>>> - if (`SELECT '$io_state' = 'Waiting for the slave SQL thread to free > >>>>>> enough relay log space'`){ > >>>>>> - let $run= 0; > >>>>>> - } > >>>>>> - sleep 0.1; > >>>>>> - if (!$counter){ > >>>>>> - --echo "Failed while waiting for slave IO thread block" > >>>>>> - SHOW SLAVE STATUS; > >>>>>> - exit; > >>>>>> - } > >>>>>> - dec $counter; > >>>>>> +let $io_state= query_get_value(SHOW SLAVE STATUS, Slave_IO_State, 1); > >>>>>> +if (`SELECT '$io_state' != 'Waiting for master to send event'`) { > >>>>>> + let $slave_param= Slave_IO_State; > >>>>>> + let $slave_param_value= Waiting for the slave SQL thread to free > >>>>>> enough relay log space; > >>>>>> + source include/wait_for_slave_param.inc; > >>>>>> } > >>>>> I don't quit understand why you first check if the state is not "Waiting > >>>>> for master to send event". Could you please explain this? > >>>> Sometimes status of slave changes very fast. 'Waiting for master to send > >>>> event' status appears *after* 'Waiting for the slave SQL thread to free > >>>> enough relay log space' > >>>> > >>> If my understanding is correct, I think for this case, the SQL thread > >>> will enter a dead lock at the status "Waiting ... relay log space", so I > >>> think there is not a possibility that the status will be changed to > >>> "Waiting for master to send event" *after* "Waiting ... relay log > >>> space". On contray I think, the only possibility that we can get > >>> "Waiting for master to send event" status is because the IO thread just > >>> started, and the first event has not been sent to the slave yet, so the > >>> "Waiting for master to send event" can only appear *before* "Waiting ... > >>> relay log space". > >>> > > > > What's you opion about the above comment? > > > >>>>>> -sleep 2; > >>>>>> # A bug caused the I/O thread to refuse stopping. > >>>>>> stop slave io_thread; > >>>>>> reset slave; > >>>>>> diff -Nru a/mysql-test/suite/rpl/t/rpl_row_view01.test > >>>>>> b/mysql-test/suite/rpl/t/rpl_row_view01.test > >>>>>> --- a/mysql-test/suite/rpl/t/rpl_row_view01.test 2008-02-24 01:44:04 +03:00 > >>>>>> +++ b/mysql-test/suite/rpl/t/rpl_row_view01.test 2008-02-24 01:44:04 +03:00 > >>>>>> @@ -23,6 +23,7 @@ > >>>>>> DROP TABLE IF EXISTS mysqltest1.t1; > >>>>>> DROP TABLE IF EXISTS mysqltest1.t2; > >>>>>> DROP TABLE IF EXISTS mysqltest1.t4; > >>>>>> +DROP TABLE IF EXISTS mysqltest1.t10; > >>>>>> > >>>>>> # Begin test section 1 > >>>>>> CREATE TABLE mysqltest1.t1 (a INT, c CHAR(6),PRIMARY KEY(a)); > >>>>>> @@ -43,12 +44,18 @@ > >>>>>> > >>>>>> SELECT * FROM mysqltest1.v2; > >>>>>> SELECT * FROM mysqltest1.v1; > >>>>>> -# Had to add a sleep for use with NDB > >>>>>> + > >>>>>> + > >>>>>> +# Had to add a waiting for use with NDB > >>>>>> # engine. Injector thread would have not > >>>>>> -# populated biblog and data would not be on > >>>>>> +# populated binlog and data would not be on > >>>>>> # the slave. > >>>>>> -sleep 10; > >>>>>> -sync_slave_with_master; > >>>>>> + > >>>>>> +CREATE TABLE mysqltest1.t10 (a INT, PRIMARY KEY(a)); > >>>>>> +let $wait_binlog_event= CREATE TABLE mysqltest1.t10; > >>>>>> +-- source include/wait_for_binlog_event.inc > >>>>>> +--sync_master_with_slave > >>>>> must be a typo of `sync_slave_with_master' > >>>> skozlov: of course :) > >>>>>> + > >>>>>> SELECT * FROM mysqltest1.v2; > >>>>>> SELECT * FROM mysqltest1.v1; > >>>>>> connection master; > >>>>>> @@ -82,6 +89,7 @@ > >>>>>> DROP TABLE IF EXISTS mysqltest1.t1; > >>>>>> DROP TABLE IF EXISTS mysqltest1.t2; > >>>>>> DROP TABLE IF EXISTS mysqltest1.t4; > >>>>>> +DROP TABLE IF EXISTS mysqltest1.t10; > >>>>>> DROP DATABASE mysqltest1; > >>>>>> sync_slave_with_master; > >>>>>> > >>>>>> diff -Nru a/mysql-test/suite/rpl/t/rpl_trunc_temp.test > >>>>>> b/mysql-test/suite/rpl/t/rpl_trunc_temp.test > >>>>>> --- a/mysql-test/suite/rpl/t/rpl_trunc_temp.test 2008-02-24 01:44:04 +03:00 > >>>>>> +++ b/mysql-test/suite/rpl/t/rpl_trunc_temp.test 2008-02-24 01:44:04 +03:00 > >>>>>> @@ -27,7 +27,12 @@ > >>>>>> > >>>>>> # Disconnect the master, temp table on slave should dissapear > >>>>>> disconnect master; > >>>>>> ---real_sleep 3 # time for DROP to be read by slave > >>>>>> + > >>>>>> +connection master1; > >>>>>> +# Wait until drop of temp tables appers in binlog > >>>>>> +let $wait_binlog_event= DROP; > >>>>>> +source include/wait_for_binlog_event.inc; > >>>>>> + > >>>>>> connection slave; > >>>>>> show status like 'Slave_open_temp_tables'; > >>>>>> > >>>>>> > >>> > >> > > > > > >