From 126c0b4433e94aab3cb728cb4e7bb93e3e4ccabe Mon Sep 17 00:00:00 2001 From: Andrei Elkin Date: Fri, 19 Dec 2008 20:59:22 +0200 Subject: [PATCH] Bug#38934 slave slave until does not work with --replicate-same-server-id Bug#38540 rpl_server_id2 uses show slave status unnecessarily Slave did not perform any event recorded into the relay log from some different master when it was started with --replicate-same-server-id. The reason appeared to be a consequence of BUG#38734 which stopped the sql thread at its startup time. The real fixes for the current bug are in the patch for BUG#38734. This changeset carries only a regression test for the bugs. Bug#38540 gets fixed too by means of eliminating an extra show slave status. mysql-test/suite/rpl/r/rpl_server_id2.result: Bug#38934 Bug#38540 changed results. mysql-test/suite/rpl/t/disabled.def: rpl_server_id2 is re-enabled. mysql-test/suite/rpl/t/rpl_server_id2.test: regression test for BUG#38734 is added. Bug#38540 requirement to get rid of show slave status is implemented. --- mysql-test/suite/rpl/r/rpl_server_id2.result | 51 +++++--------------- mysql-test/suite/rpl/t/disabled.def | 1 - mysql-test/suite/rpl/t/rpl_server_id2.test | 44 +++++++++++++++-- 3 files changed, 52 insertions(+), 44 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_server_id2.result b/mysql-test/suite/rpl/r/rpl_server_id2.result index f68f9ff829d..25ed49d8c3b 100644 --- a/mysql-test/suite/rpl/r/rpl_server_id2.result +++ b/mysql-test/suite/rpl/r/rpl_server_id2.result @@ -8,45 +8,6 @@ create table t1 (n int); reset master; stop slave; change master to master_port=SLAVE_PORT; -show slave status; -Slave_IO_State -Master_Host 127.0.0.1 -Master_User root -Master_Port SLAVE_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos 4 -Relay_Log_File slave-relay-bin.000001 -Relay_Log_Pos 4 -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -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 0 -Relay_Log_Space 106 -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 NULL -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error start slave; insert into t1 values (1); select * from t1; @@ -55,3 +16,15 @@ n 1 stop slave; drop table t1; +reset master; +create table t1(n int); +create table t2(n int); +change master to master_port=MASTER_PORT; +start slave until master_log_file='master-bin.000001', master_log_pos=107; +*** checking until postion execution: must be only t1 in the list *** +show tables; +Tables_in_test +t1 +start slave sql_thread; +drop table t1; +drop table t2; diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def index 7823d8d8c74..ebdb8014f88 100644 --- a/mysql-test/suite/rpl/t/disabled.def +++ b/mysql-test/suite/rpl/t/disabled.def @@ -13,4 +13,3 @@ rpl_redirect : Failure is sporadic and and the test is superfluous (mats) rpl_innodb_bug28430 : Failure on Solaris Bug #36793 rpl_flushlog_loop : BUG#37733 2008-07-23 Sven disabled in 5.1-bugteam. the bug has been fixed in 5.1-rpl: please re-enable when that gets pushed to main -rpl_server_id2 : Bug#38540 rpl_server_id2 uses show slave status unnecessarily diff --git a/mysql-test/suite/rpl/t/rpl_server_id2.test b/mysql-test/suite/rpl/t/rpl_server_id2.test index 7e67fb42b4f..a9c789e97bf 100644 --- a/mysql-test/suite/rpl/t/rpl_server_id2.test +++ b/mysql-test/suite/rpl/t/rpl_server_id2.test @@ -9,9 +9,6 @@ reset master; stop slave; --replace_result $SLAVE_MYPORT SLAVE_PORT eval change master to master_port=$SLAVE_MYPORT; ---replace_result $SLAVE_MYPORT SLAVE_PORT ---replace_column 18 # 35 # 36 # -query_vertical show slave status; start slave; insert into t1 values (1); save_master_pos; @@ -23,4 +20,43 @@ select * from t1; # check that indeed 2 were inserted stop slave; drop table t1; -# End of 4.1 tests + +# +# Bug#38934 slave slave until does not work with --replicate-same-server-id +# +# Verifying that slave performs all events until the master_log_pos +# in presense of --replicate-same-server-id the slave is started with. + +connection master; +reset master; + +# setting the until position to correspond to the first following create table +# which will make the event executed and the slave sql thread stopped +# right after that. +let $until_pos= query_get_value(SHOW MASTER STATUS, Position, 1); +inc $until_pos; + +create table t1(n int); +create table t2(n int); + +connection slave; +--replace_result $MASTER_MYPORT MASTER_PORT +eval change master to master_port=$MASTER_MYPORT; +eval start slave until master_log_file='master-bin.000001', master_log_pos=$until_pos; +--source include/wait_for_slave_io_to_start.inc +--source include/wait_for_slave_sql_to_stop.inc + +--echo *** checking until postion execution: must be only t1 in the list *** +show tables; + +# cleanup + +connection slave; +start slave sql_thread; + +connection master; +drop table t1; +drop table t2; +sync_slave_with_master; + +# End of tests