diff --git a/client/mysqltest.c b/client/mysqltest.c index 50d814e3f9bee598bc019a794edde26bd8fa1252..1604c52b9419d6855d9581a7c6b03db5de16ca36 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -1596,9 +1596,9 @@ int do_sync_with_master2(long offset) It may be that the slave SQL thread has not started yet, though START SLAVE has been issued ? */ - if (tries++ == 3) + if (tries++ == 30) die("could not sync with master ('%s' returned NULL)", query_buf); - sleep(1); /* So at most we will wait 3 seconds and make 4 tries */ + sleep(1); /* So at most we will wait 30 seconds and make 31 tries */ mysql_free_result(res); goto wait_for_position; } @@ -1664,14 +1664,14 @@ int do_save_master_pos() { ulonglong epoch=0, tmp_epoch= 0; int count= 0; - - do + int do_continue= 1; + while (do_continue) { const char binlog[]= "binlog"; const char latest_trans_epoch[]= "latest_trans_epoch="; - const char latest_applied_binlog_epoch[]= - "latest_applied_binlog_epoch="; + const char latest_handled_binlog_epoch[]= + "latest_handled_binlog_epoch="; if (count) sleep(1); if (mysql_query(mysql, query= "show engine ndb status")) @@ -1701,26 +1701,32 @@ int do_save_master_pos() start_lineno, latest_trans_epoch, query); } /* latest_applied_binlog_epoch */ - while (*status && strncmp(status, latest_applied_binlog_epoch, - sizeof(latest_applied_binlog_epoch)-1)) + while (*status && strncmp(status, latest_handled_binlog_epoch, + sizeof(latest_handled_binlog_epoch)-1)) status++; if (*status) { - status+= sizeof(latest_applied_binlog_epoch)-1; + status+= sizeof(latest_handled_binlog_epoch)-1; tmp_epoch= strtoull(status, (char**) 0, 10); } else die("line %u: result does not contain '%s' in '%s'", - start_lineno, latest_applied_binlog_epoch, query); + start_lineno, latest_handled_binlog_epoch, query); break; } } - mysql_free_result(res); if (!row) die("line %u: result does not contain '%s' in '%s'", start_lineno, binlog, query); count++; - } while (tmp_epoch < epoch && count <= 3); + if (tmp_epoch >= epoch) + do_continue= 0; + else if (count > 30) + { + break; + } + mysql_free_result(res); + } } } #endif diff --git a/mysql-test/extra/rpl_tests/rpl_ddl.test b/mysql-test/extra/rpl_tests/rpl_ddl.test index 0d9f390531f7854ff3ad181b2ae316743b21ad04..4aab45db18b30b6745c9e18ea8bd0b986a3bc8c8 100644 --- a/mysql-test/extra/rpl_tests/rpl_ddl.test +++ b/mysql-test/extra/rpl_tests/rpl_ddl.test @@ -507,4 +507,5 @@ DROP DATABASE IF EXISTS mysqltest2; DROP DATABASE IF EXISTS mysqltest3; --enable_warnings +-- source include/master-slave-end.inc diff --git a/mysql-test/extra/rpl_tests/rpl_row_UUID.test b/mysql-test/extra/rpl_tests/rpl_row_UUID.test index d1d6178773b3caf16132ab36cc9c9bab4bd48835..962572d3aec7faeec4957be90c6ffe1cb8435e88 100644 --- a/mysql-test/extra/rpl_tests/rpl_row_UUID.test +++ b/mysql-test/extra/rpl_tests/rpl_row_UUID.test @@ -80,3 +80,4 @@ DROP TABLE test.t2; # be removed at next testsuite run. # End of 5.0 test case +-- source include/master-slave-end.inc diff --git a/mysql-test/r/rpl_ndb_dd_advance.result b/mysql-test/r/rpl_ndb_dd_advance.result index 9d9a4e5b5ad8ce9c5887138f1701f20a56b68a34..ba89592b532c93cc0325140af124355daf17ba13 100644 --- a/mysql-test/r/rpl_ndb_dd_advance.result +++ b/mysql-test/r/rpl_ndb_dd_advance.result @@ -370,13 +370,10 @@ COUNT(*) 10000 ***** Add some more records to master ********* ***** Finsh the slave sync process ******* -* 1. * @the_epoch:=MAX(epoch) <the_epoch> -* 2. * @the_pos:=Position @the_file:=SUBSTRING_INDEX(FILE, '/', -1) <the_pos> master-bin.000001 -* 3. * * 4. * * 5. * START SLAVE; diff --git a/mysql-test/r/rpl_ndb_sync.result b/mysql-test/r/rpl_ndb_sync.result index 897737e95d5e4d56d4e3083d731f26a01eda41de..4ca731676031805484958266da3ca0a8f0781200 100644 --- a/mysql-test/r/rpl_ndb_sync.result +++ b/mysql-test/r/rpl_ndb_sync.result @@ -25,13 +25,13 @@ hex(c2) hex(c3) c1 0 1 BCDEF 1 0 CD 0 0 DEFGHIJKL -CREATE TEMPORARY TABLE IF NOT EXISTS cluster.backup_info (id INT, backup_id INT)ENGINE=HEAP; -DELETE FROM cluster.backup_info; -LOAD DATA INFILE '../tmp.dat' INTO TABLE cluster.backup_info FIELDS TERMINATED BY ','; -SELECT @the_backup_id:=backup_id FROM cluster.backup_info; +CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP; +DELETE FROM test.backup_info; +LOAD DATA INFILE '../tmp.dat' INTO TABLE test.backup_info FIELDS TERMINATED BY ','; +SELECT @the_backup_id:=backup_id FROM test.backup_info; @the_backup_id:=backup_id <the_backup_id> -DROP TABLE cluster.backup_info; +DROP TABLE test.backup_info; UPDATE t1 SET c2=0 WHERE c3="row2"; SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3; hex(c1) hex(c2) c3 diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 3841735c150b5f132354c27dca8bd756aa8cfe15..1e13aec288e14162b0089e8e3751aa4885598306 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -17,15 +17,15 @@ ndb_autodiscover2 : Needs to be fixed w.r.t binlog #ndb_cache2 : Bug #18597 simultaneous drop table and ndb statistics update triggers node failure #ndb_gis : Bug #18600 ndb_gis test failure #ndb_load : Bug#17233 failed load data from infile causes mysqld dbug_assert, binlog not flushed -#partition_03ndb : Bug#16385 Partitions: crash when updating a range partitioned NDB table +partition_03ndb : Bug#16385 Partitions: crash when updating a range partitioned NDB table ps_7ndb : dbug assert in RBR mode when executing test suite -#rpl_ndb_2innodb : assertion in get_parts_for_update() -#rpl_ndb_2myisam : assertion in get_parts_for_update() +rpl_ndb_2innodb : Bug #19004 ndb: partition by range and update hangs (note, test must also be updated to have primary key with blob table) +rpl_ndb_2myisam : Bug #19004 ndb: partition by range and update hangs (note, test must also be updated to have primary key with blob table) rpl_ndb_auto_inc : Bug#17086 CR: auto_increment_increment and auto_increment_offset produce duplicate key er #rpl_ndb_basic : Bug #18592 rpl_ndb_basic failure #rpl_ndb_dd_advance : Bug #18924 rpl_ndb_dd_advance failure #rpl_ndb_dd_basic : Bug #18569 rpl_ndb_dd_basic failure -#rpl_ndb_ddl : master hangs +rpl_ndb_ddl : result file needs update + test needs to checked #rpl_ndb_insert_ignore : Bug #18567 rpl_ndb_insert_ignore failure #rpl_ndb_innodb2ndb : Bug#18261: Cluster Replication: tests rpl_ndb_xxx2ndb fails #rpl_ndb_log : result not deterministic, TBD if should remove diff --git a/mysql-test/t/rpl_ndb_bank.test b/mysql-test/t/rpl_ndb_bank.test index 102450fce91031a584f87701da62a27e745bd307..3601c841c540bef0c34280b34fdab3aca1b1c476 100644 --- a/mysql-test/t/rpl_ndb_bank.test +++ b/mysql-test/t/rpl_ndb_bank.test @@ -132,34 +132,7 @@ let the_backup_id=`select @the_backup_id`; # # now setup replication to continue from last epoch -# 1. get apply_status epoch from slave -# 2. get corresponding _next_ binlog postition from master -# 3. change master on slave -# 4. start the replication - -# 1. ---connection slave ---replace_column 1 <the_epoch> -SELECT @the_epoch:=MAX(epoch) FROM cluster.apply_status; ---let $the_epoch= `select @the_epoch` - -# 2. ---connection master ---replace_result $the_epoch <the_epoch> ---replace_column 1 <the_pos> -eval SELECT @the_pos:=Position,@the_file:=SUBSTRING_INDEX(FILE, '/', -1) - FROM cluster.binlog_index WHERE epoch > $the_epoch ORDER BY epoch ASC LIMIT 1; ---let $the_pos= `SELECT @the_pos` ---let $the_file= `SELECT @the_file` - -# 3. ---connection slave ---replace_result $the_pos <the_pos> -eval CHANGE MASTER TO - master_log_file = '$the_file', - master_log_pos = $the_pos; - -# 4. +--source include/ndb_setup_slave.inc --connection slave START SLAVE; diff --git a/mysql-test/t/rpl_ndb_basic.test b/mysql-test/t/rpl_ndb_basic.test index bcce02846420036d1a5c87021180bc8e807b6e7b..d7d1d50d88fdbac296083d375b804614a3a86893 100644 --- a/mysql-test/t/rpl_ndb_basic.test +++ b/mysql-test/t/rpl_ndb_basic.test @@ -146,4 +146,4 @@ select * from t1 order by nid; # cleanup --connection master DROP TABLE t1; -sync_slave_with_master; +-- source include/master-slave-end.inc diff --git a/mysql-test/t/rpl_ndb_dd_advance.test b/mysql-test/t/rpl_ndb_dd_advance.test index 97a6dae0decaae6abf31d4e9023a3760e90bc21e..80ff533ec5bd372d8a42f9097b0a15a9918474af 100644 --- a/mysql-test/t/rpl_ndb_dd_advance.test +++ b/mysql-test/t/rpl_ndb_dd_advance.test @@ -479,29 +479,9 @@ while ($j) # 5. start the replication --echo ***** Finsh the slave sync process ******* -# 1. ---echo * 1. * -connection slave; --disable_query_log ---replace_column 1 <the_epoch> -SELECT @the_epoch:=MAX(epoch) FROM cluster.apply_status; ---let $the_epoch= `select @the_epoch` - -# 2. ---echo * 2. * -connection master; ---replace_column 1 <the_pos> -eval SELECT @the_pos:=Position,@the_file:=SUBSTRING_INDEX(FILE, '/', -1) - FROM cluster.binlog_index WHERE epoch > $the_epoch ORDER BY epoch ASC LIMIT 1; ---let $the_pos= `SELECT @the_pos` ---let $the_file= `SELECT @the_file` - -# 3. ---echo * 3. * -connection slave; -eval CHANGE MASTER TO - master_log_file = '$the_file', - master_log_pos = $the_pos; +# 1. 2. 3. +--source include/ndb_setup_slave.inc --enable_query_log # 4. diff --git a/mysql-test/t/rpl_ndb_dd_basic.test b/mysql-test/t/rpl_ndb_dd_basic.test index f515e0299ac1f74abf2ad865361728aa80663c54..104be91e6e4d0c81758d720838e9caf44f038e8c 100644 --- a/mysql-test/t/rpl_ndb_dd_basic.test +++ b/mysql-test/t/rpl_ndb_dd_basic.test @@ -82,4 +82,4 @@ drop datafile 'datafile02.dat' engine=ndb; DROP TABLESPACE ts1 ENGINE=NDB; DROP LOGFILE GROUP lg1 ENGINE=NDB; ---sync_slave_with_master +-- source include/master-slave-end.inc diff --git a/mysql-test/t/rpl_ndb_sync.test b/mysql-test/t/rpl_ndb_sync.test index d56f4a4ad03738c5fed690573c3d5b50b1675d5b..95f56609ed70694b7cca5e7909d18fbb253106dd 100644 --- a/mysql-test/t/rpl_ndb_sync.test +++ b/mysql-test/t/rpl_ndb_sync.test @@ -8,13 +8,13 @@ # # stop the save -connection slave; +--connection slave STOP SLAVE; CREATE DATABASE ndbsynctest; USE ndbsynctest; # get some data on the master -connection master; +--connection master CREATE DATABASE ndbsynctest; USE ndbsynctest; CREATE TABLE t1 (c1 BIT(1) NOT NULL, c2 BIT(1) NOT NULL, c3 CHAR(15), PRIMARY KEY(c3)) ENGINE = NDB ; @@ -25,21 +25,14 @@ SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3; SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1; # take a backup on master ---exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "start backup" >> $NDB_TOOLS_OUTPUT ---exec $NDB_TOOLS_DIR/ndb_select_all --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -d sys --delimiter=',' SYSTAB_0 | grep 520093696 > $MYSQLTEST_VARDIR/tmp.dat -CREATE TEMPORARY TABLE IF NOT EXISTS cluster.backup_info (id INT, backup_id INT)ENGINE=HEAP; -DELETE FROM cluster.backup_info; -LOAD DATA INFILE '../tmp.dat' INTO TABLE cluster.backup_info FIELDS TERMINATED BY ','; ---replace_column 1 <the_backup_id> -SELECT @the_backup_id:=backup_id FROM cluster.backup_info; -let the_backup_id=`select @the_backup_id` ; -DROP TABLE cluster.backup_info; +--source include/ndb_backup.inc + # update a row UPDATE t1 SET c2=0 WHERE c3="row2"; SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3; # restore on slave, first check that nothing is there -connection slave +--connection slave # we should have no tables SHOW TABLES; @@ -66,40 +59,16 @@ SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1; # # now setup replication to continue from last epoch -# 1. get apply_status epoch from slave -# 2. get corresponding _next_ binlog postition from master -# 3. change master on slave - -# 1. -connection slave; ---replace_column 1 <the_epoch> -SELECT @the_epoch:=MAX(epoch) FROM cluster.apply_status; -let $the_epoch= `select @the_epoch` ; - -# 2. -connection master; ---replace_result $the_epoch <the_epoch> ---replace_column 1 <the_pos> -eval SELECT @the_pos:=Position,@the_file:=SUBSTRING_INDEX(FILE, '/', -1) - FROM cluster.binlog_index WHERE epoch > $the_epoch ORDER BY epoch ASC LIMIT 1; -let $the_pos= `SELECT @the_pos` ; -let $the_file= `SELECT @the_file` ; - -# 3. -connection slave; ---replace_result $the_pos <the_pos> -eval CHANGE MASTER TO - master_log_file = '$the_file', - master_log_pos = $the_pos ; +--source include/ndb_setup_slave.inc +--connection slave START SLAVE; # # # -connection master; -#sync_slave_with_master; ---sleep 2 -connection slave; +--connection master +--sync_slave_with_master +--connection slave --replace_result $MASTER_MYPORT MASTER_PORT --replace_column 1 <Slave_IO_State> 7 <Read_Master_Log_Pos> 8 <Relay_Log_File> 9 <Relay_Log_Pos> 16 <Replicate_Ignore_Table> 22 <Exec_Master_Log_Pos> 23 <Relay_Log_Space> 33 <Seconds_Behind_Master> SHOW SLAVE STATUS; @@ -111,22 +80,21 @@ SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1; # Cleanup # -connection master; +--connection master DROP DATABASE ndbsynctest; -#sync_slave_with_master; ---sleep 2 -connection slave; +--sync_slave_with_master +--connection slave STOP SLAVE; # # Test some replication commands # -connection master; +--connection master reset master; # should now contain nothing select * from cluster.binlog_index; -connection slave; +--connection slave reset slave; # should now contain nothing select * from cluster.apply_status;